1 месяц назад
История
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 с ошибкой