Telegram Mini App с мини-играми и системой заданий
Приложение внутри Telegram с графиком в реальном времени, уровнями наград и реферальной программой
О проекте
Клиент — продукт для аудитории из Индии, которая живёт в Telegram: игры, кошелёк и задания должны открываться одним окном, без установки и отдельной регистрации. Деньги — в рупиях, платежи принимает внешний провайдер. Нужна была рабочая основа, на которую можно наращивать игры и механики.
Интерфейс
Стек технологий
Задача
Сделать приложение внутри Telegram для аудитории из Индии: вход без регистрации, кошелёк в рупиях, мини-игры, график в реальном времени, система заданий и реферальная программа.
Ограничения
Приложение живёт внутри Telegram: вход только через подписанные данные Telegram, интерфейс рассчитан на телефон. Пополнение идёт через внешнего платёжного провайдера с подписанными обратными вызовами. График цены нельзя строить отдельно у каждого клиента: всем пользователям нужен один общий поток данных с биржи. Результат игры всегда считает сервер, клиент ничего не решает.
Решение
Фронтенд написали на React, серверную часть — на Go с PostgreSQL и Redis. Сервер держит одно исходящее соединение с биржей, хранит секундные свечи в Redis и раздаёт их клиентам по WebSocket. Реализовали мини-игры, колесо фортуны, 60 уровней заданий с наградами и реферальную программу. Бот на Python открывает приложение по кнопке и принимает реферальные ссылки. Всё собрано в Docker Compose за nginx.
Сложности
Задания и награды бывают разных типов, поэтому их описали полиморфной моделью с автоматическим повышением уровня. Списание, расчёт результата и обновление прогресса заданий выполняются в одной транзакции.
Дальнейшее развитие
Игры, задания и награды заданы данными и отдельными модулями, поэтому набор игр и условия уровней можно расширять без переработки ядра.
Результат
Запустили Mini App: вход через Telegram, кошелёк с пополнением и обменом бонусной валюты, мини-игры, график цены в реальном времени, 60 уровней заданий и наград, реферальная программа.



