# Petank Mini App

> Как довести вайбкодинг до прода: Mini App клуба с автотестами, защитой от гонок и комплаенсом 152-ФЗ

_Игорь Селенов · 2026-08-02 · AI · SaaS_

rafl.digital — моя студия спортивной вайбкодинг-разработки: продукты для спорта и клубной жизни я собираю сам и довожу до реального прода. Первый такой продукт — Petank Mini App для московского клуба петанка: приложение внутри Telegram, которое ведёт игрока через весь цикл — найти игру, записаться командой, оплатить, получить QR-билет, увидеть турнирную сетку и вернуться на следующую игру

## Клуб, запись и оплата руками

Клуб вёл запись на еженедельные игры в телеграм-чатах, а оплату сверял руками. При пятнадцати с лишним командах на игру это превращается в кашу: кто записался, кто выпал, кто заплатил — всё держится на внимании одного организатора. Такая схема не масштабируется и слабо удерживает игроков между играми — сыграл и до следующего раза о клубе не вспоминаешь

![](https://4zh2oni14bg6vxqg.public.blob.vercel-storage.com/materials/61e9337b-df10-4b2b-a85e-0760a279c499.webp)

Задача была собрать продукт, готовый к живым пользователям и российскому регулированию. Персональные данные игроков — телефоны, email — по 152-ФЗ должны лежать на инфраструктуре в РФ, и это закладывалось в архитектуру с первого дня. Вайбкодинг для меня здесь — способ пройти путь от идеи до прода в одиночку, без сборки команды под MVP

## Как собрано приложение

Всё приложение написано на одном языке — TypeScript: фронтенд, серверная логика, Telegram-боты и схема базы данных. Для соло-разработки это решает — не нужно переключаться между технологиями, типы переиспользуются от базы до кнопки. Стек — Next.js 15, PostgreSQL, Drizzle, два бота на grammY, вся инфраструктура в Yandex Cloud под управлением Docker Compose


## Два бота из одного образа

У приложения два Telegram-бота — так обходится правило платформы. Telegram не даёт боту написать пользователю в личку, пока тот сам не нажал «старт» именно у этого бота, поэтому пользовательский бот @petankclub_bot держит всё видимое: кнопку приложения, оплату, пуши. Админский @petankregistration_bot живёт в рабочей группе с карточками «Подтвердить / Отклонить». Оба — один Docker-образ, роль выбирается переменной BOT_ROLE: личность даёт токен, поведение — роль


### Надёжность важнее красоты

Ответ пользователю никогда не зависит от того, жив ли бот в эту секунду: записался — значит записался, уведомление догонит через шину notifications_outbox. Гонку за последнее место снимает блокировка строки события в базе — два одновременных запроса выстраиваются в очередь на уровне БД. Уведомления коммитятся в той же транзакции, что и их триггер, поэтому фантомная карточка «Новая регистрация» при откате не появляется


![](https://4zh2oni14bg6vxqg.public.blob.vercel-storage.com/materials/564b8692-9fa2-4614-807b-5c884509e32c.webp)

- Запись командой в два тапа: система сама следит за местами, правилом «один игрок — одна команда» и листом ожидания
- Онлайн-оплата внутри Telegram с чеком по 54-ФЗ, плюс подтверждение СБП-переводов админом в один тап
- Турнирная сетка — генерится за час до игры и обновляется вживую в день турнира
- Ретеншн-механики: авто-напоминания, личное расписание, мини-игра «петанк против ИИ» с таблицей лидеров

## Можно ли вайбкодингом собрать продакшн-приложение?

Да — Petank Mini App собран вайбкодингом и работает в проде с комплаенсом 152-ФЗ и 400+ автотестами. Вайбкодинг ускоряет путь от идеи до работающего экрана, но продовым продукт делают вещи, видимые только на живых пользователях: защита от гонок за место, шина уведомлений с ретраями, идемпотентный планировщик турниров, откат неудачного деплоя по smoke-проверке. Это инженерная дисциплина поверх скорости — и rafl.digital собирает продукты именно так

![](https://4zh2oni14bg6vxqg.public.blob.vercel-storage.com/materials/55e5aaff-50e2-4b9c-b182-73f5103c7c21.webp)

## Чему научил прод

Самое ценное в продакшн-истории — это грабли. Облачный биллинг однажды молча остановил машины: аккаунт был на пробном тарифе с «к оплате 0 ₽», расходы никто не отслеживал. Когда выгорел стартовый грант, облако погасило VM — публичный IP при этом ушёл другому клиенту, и домен неделю указывал в чужой сервер. Вылечили статическим IP, переездом на self-hosted Postgres и уведомлениями о балансе. Кнопку «добавить в календарь» переписывали трижды — iOS, Safari и Telegram-обёртка ломали тривиальный .ics-файл каждый по-своему


**Что такое вайбкодинг простыми словами?**

Вайбкодинг — это разработка в связке с ИИ-ассистентом: человек задаёт намерение и архитектуру, ИИ пишет и правит код под его контролем. Скорость идёт от того, что рутина кодирования уходит ИИ, а решения об архитектуре и качестве остаются за инженером



**Как устроено приложение Petank Club?**

Petank Mini App живёт внутри Telegram и ведёт игрока от записи до турнира: команда, оплата, QR-билет, турнирная сетка. Технически это Next.js 15, PostgreSQL и два бота на grammY в одном Docker-образе, инфраструктура — в Yandex Cloud. Собрано в rafl.digital, студии спортивной вайбкодинг-разработки


**Что такое студия rafl.digital?**

rafl.digital — студия спортивной вайбкодинг-разработки Игоря Селенова. В ней продукты для спорта и клубной жизни собираются вайбкодингом и доводятся до реального прода — первым стал Petank Mini App для московского клуба петанка. Студия входит в экосистему RAFL вместе с продакшн-студией rafl.studio


**Как в приложении соблюдён 152-ФЗ?**

Комплаенс 152-ФЗ заложен в архитектуру Petank Mini App с первого дня. Инфраструктура — база и файлы — в российском облаке Yandex Cloud, персональные данные не уходят за рубеж. Внешняя аналитика получает только обезличенные события: email и телефон туда физически не попадут — гарантия на уровне типов


**Почему приложение работает внутри Telegram?**

Petank Mini App живёт внутри Telegram: там уже есть аудитория клуба и не нужна отдельная установка или регистрация. Игрок открывает приложение по кнопке в боте, весь путь — запись, оплата, билет — остаётся в одном мессенджере. Для клубного продукта это снимает главный барьер входа

