Все работы

LearnBG

GNUBG · Telegram · Web / 2025-26
Упрощенная схема анализа
  1. 01Telegram / Web
  2. 02FastAPI
  3. 03RQ + Redis
  4. 04GNU Backgammon CLI
  5. 05Разбор и экспорт

3

процесса на двух серверах

7

платных услуг

2

интерфейса: Telegram и веб

Работает сейчасnards.mini.app.gnubg.ruВеб-сервисы для коротких нард

От бота, который отправлял матч-файлы, до web-продукта для анализа партий в нарды и преподавания.

С чего начали

Начали с небольшого Telegram-бота для отправки матч-файлов. По мере работы появлялись новые задачи, и я развивал систему вместе с продуктом.

Что требовалось

У GNU Backgammon не было подходящего API для нужного сценария. Анализ был доступен через CLI, а пользователям требовались понятные результаты в web-интерфейсе.

Что я сделал

  • Разработал API-прослойку вокруг CLI GNU Backgammon и обработку его консольного вывода
  • Добавил визуализации, полностью редактируемый лендинг и систему статей
  • Три процесса: бот на aiogram, FastAPI с Mini Apps и веб-кабинетом, RQ-воркер анализа на отдельной машине
  • Два сервера в приватной сети Tailscale: Redis и PostgreSQL наружу не смотрят, воркер ходит к ним по внутреннему интерфейсу
  • Очередь разбора: файл матча в S3 → RQ → gnubg под распределённым локом в Redis → результат обратно в S3; пользователю показывается позиция в очереди
  • Воркер не обращается к Telegram вообще - только пишет статус в Redis. Уведомления шлёт процесс бота, чтобы анализ не зависел от доступности Telegram API и прокси
  • Две аудитории одним кодом: Telegram-пользователи и веб-аккаунты сведены через "теневого пользователя", поэтому выдача разборов и карточек не раздваивается
  • Семь платных услуг с балансами из промокодов и пакетов; остаток проверяется в middleware на уровне роутеров
  • Админка на Flask-AppBuilder: пользователи, промокоды, расписания, пул Telegram-прокси с автоотключением мёртвых и алертом
  • Веб-сервисы: анализ матчей и манигеймов, пошаговый плеер, разбор ошибок в четырёх режимах, конструктор позиции, счёт пипсов, выгрузка в PDF и Excel

Как развивался проект

Бот стал частью закрытого web-продукта, ориентированного прежде всего на преподавание. В одной системе появились анализ, визуализации, материалы и интерфейсы для работы с партиями.

Что получилось

Пользователь загружает матч и получает разбор ошибок, статистику и экспорт. Инструмент без готового API встроен в продукт через собственную прослойку, очередь и обработку результатов.

Что показывает этот кейс

Нестандартная интеграция CLI, проектирование backend и постепенное развитие продукта из одной небольшой функции.