Polestar
Polestar is a free, open-source leveling guide addon for WoW: Forever: an in-game arrow and leveling routes that make sense for every race 1 to 60, plus class quests.
You can contact @dementev_b_and_c_bot right away.
GamesGitHub @SergeiDementevAvailability not checked yetOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
🐂🐄 Быки и коровы · Bulls & Cows — Telegram Mini App: TypeScript, Fastify, React, PostgreSQL. Built with Claude Code
Translation pending
Loading the full README.
Read the full README ↗▶ Играть: Mini App в Telegram · бот: @dementev_b_and_c_bot
Логическая игра в Telegram Mini App. Сервер загадывает число из 4 разных цифр (ноль может стоять первым), игрок угадывает его по подсказкам:
Ходов сколько угодно; после каждого видно, сколько чисел ещё подходит. Личная статистика и общий рейтинг по среднему числу попыток за последние 20 игр. Русский и английский.
Это вторая версия уже выпущенного продукта, написанная с нуля. Цель — проверить, что те же свойства для игрока и та же защита достигаются кратно меньшим кодом, если не строить слои «на вырост». Вышло в 3,2 раза меньше строк (сравнение).
Разработка — с ИИ-агентом (Claude Code): агент пишет код и автотесты, автор принимает решения, задаёт требования и проверяет руками. Каждое решение и каждая найденная ошибка — в журнале решений.
Телефон (Telegram) ─HTTPS─► Caddy ─► сервер (Node, Fastify, Kysely) ─► PostgreSQL
└─ файлы Mini App ▲
Telegram ──webhook─────────────────────────────────────┘ бот: /start → правила и «Играть»
Три контейнера Docker на одной ВМ; из интернета открыт только Caddy (HTTPS, 80/443).
src/domain/ правила игры, статистика, рейтинг — чистые функции без базы и сети
src/server/ вход, API, сценарии в транзакциях, бот, миграции
src/web/ Mini App (React)
src/shared/ типы API и переводчик — общие для сервера и браузера
src/locales/ тексты: ru.ftl, en.ftl
src/domain.initData) со сроком годности. Загаданное число не уходит клиенту, пока партия идёт.| Решение | Почему |
|---|---|
| Один клиент — Telegram Mini App; бот только открывает её | Вход и выпуск новой версии делает Telegram: нет своей авторизации и старых версий клиента |
| Один пакет с папками, не монорепозиторий | Общий код сервера и браузера — несколько типов; границы держит линтер |
| Kysely вместо ORM | Запросы на TypeScript, выполняется ровно написанное. Prisma в первой версии ела 18% процессора и тайком читала всю таблицу |
| Без слоя репозитория; тесты на настоящей PostgreSQL | Базу менять не собираемся; подмена в памяти не знает блокировок и ключей, которые и защищают от двойного хода |
| Бот на webhook, а не long polling | HTTPS уже есть; нет конфликта «один токен — один процесс» |
| API без версий | Mini App выкладывается вместе с сервером; меняем только совместимо (добавляем, не переименовываем) |
| Нет журнала событий и дашбордов | Смотреть некому; история ходов со временем есть, вопросы — SQL |
| Один процесс сервера | Медиана хода 19 мс при 1000 игроков, но 95% в цель 500 мс не уложились — решено ждать реальной нагрузки; сигнал и план — в замере |
Полностью — с датами, отвергнутыми вариантами и итогами каждого этапа — в журнале решений.
Непустые строки, одинаковые правила подсчёта; код, сгенерированный Prisma, в первой версии не учтён.
| Первая версия | Облегчённая | Меньше в | |
|---|---|---|---|
| Код (сервер, клиент, правила) | 6 507 | 2 784 | 2,3 раза |
| Автотесты | 9 056 | 2 104 | 4,3 раза |
| Документы | 2 778 | 570 | 4,9 раза |
| Инфраструктура и скрипты | 1 835 | 758 | 2,4 раза |
| Всего | 20 176 | 6 216 | 3,2 раза |
Оговорка: у первой версии два клиента — чат-бот и Mini App с общей партией; у облегчённой один.
CI в GitHub Actions на каждый PR. Копии базы — ежедневно вне сервера, восстановление проверено.
Нужны Node 24, pnpm и Docker Desktop.
pnpm install
copy .env.example .env # вписать пароль базы
pnpm db:up
pnpm check # формат, линтер, типы, тесты
pnpm test:e2e # сквозные в Chromium и WebKit
pnpm dev # сервер
pnpm dev:web # Mini App в браузере, вход подписывается сам
Требования · Правила · API и данные · Журнал решений и итоги этапов · Нагрузочный замер · Деплой
Лицензия — MIT.