
Михаил Якубенко
SnapMap
Город как игра: получаешь квест «сфоткай…», снимаешь, нейросеть проверяет, а ты получаешь монеты и место в рейтинге.
2025 · Telegram Mini App · командный проект
Моя роль: бэкенд, конвейер проверки фото и деплой. Фронт делали ребята из команды.
Идея
Каждый день приходят квесты: сфоткать жёлтую дверь, уличного музыканта, закат над рекой. За выполненный квест — монеты, стрик и опыт, фото попадает в общую ленту. Монеты можно потратить в магазине на скидки у партнёров.
Проверка нейросетью
Людей не хватит, чтобы глазами проверять каждый снимок. Фото уходит в хранилище, задача — в очередь, а Python-воркер прогоняет его через CLIP: насколько картинка похожа на описание квеста. Для сложных случаев можно переключиться на vision-модель через OpenRouter.
Честный зачёт
Результат проверки прилетает бэкенду через Redis. Он засчитывает квест, начисляет монеты и продлевает стрик в одной транзакции и ставит флаг, чтобы одно фото нельзя было засчитать дважды.
Под капотом
Бэкенд на Kotlin и Spring Boot, PostgreSQL, Redis, очереди в RabbitMQ, фото в MinIO. Воркер на Python с CLIP ViT-L/14, фронт на React и TypeScript внутри Telegram. Всё в Docker Compose.