8 месяцев назад
История
README.md
FastAPI Backend
Backend-часть игры “Монета” (Telegram-бот с механикой подбрасывания монеты, кастомизацией и прокачкой).
Реализована на FastAPI с JWT-аутентификацией, валидацией данных через Pydantic, асинхронными запросами к БД (Tortoise ORM + PostgreSQL), тестирование с Pytest.
👉 Ключевые функции:
- Авторизация через Telegram WebApp (
loginByInitData) - Механика подбрасывания монеты с энергосистемой и наградами
- Ежедневные награды (стрик-система)
- Покупка/активация кастомизаций (скины монет, фоны)
- Прокачка характеристик (уровень, бонусы за серии побед)
- Задания и достижения
- Реферальная система
🛠 Технологии и подходы
| Категория | Технологии/Библиотеки |
|---|---|
| Backend | FastAPI, Tortoise ORM, Pydantic, iogram 3+ |
| База данных | PostgreSQL (асинхронный доступ через asyncpg) |
| Аутентификация | JWT (OAuth2PasswordBearer) + Refresh-токены |
| Валидация | Pydantic (модели запросов/ответов + кастомные валидаторы) |
| Тестирование | pytest (юнит-тесты, интеграционные тесты) |
| Документация | Swagger UI (автогенерация из OpenAPI 3.1) |
| Архитектура | REST API, слоистая структура (роутеры → сервисы → репозитории) |
Оптимизации:
- Асинхронные операции с БД для избежания блокировок
- Валидация данных на уровне API перед сохранением в БД
📚 Документация API
Полная документация доступна в Swagger UI после запуска:
Основные эндпоинты
| Метод | Путь | Описание |
|---|---|---|
POST |
/users/loginByInitData |
Авторизация через Telegram WebApp |
GET |
/users/claimDailyReward |
Получить ежедневную награду |
POST |
/users/toss |
Подбросить монету (угадать сторону) |
GET |
/customizations/ |
Список кастомизаций |
POST |
/customizations/buy/{id} |
Купить кастомизацию |
PUT |
/customizations/activate/{id} |
Активировать кастомизацию |
GET |
/upgrades/ |
Список улучшений |
PUT |
/upgrades/{type} |
Купить улучшение |
Конфигурации:
- Создать
.envфайл на основе.env.example(указатьDATABASE_URL,JWT_SECRETи др.)
Описание
Конвейеры
0 успешных
0 с ошибкой