Техническое задание проекта «Клон взрывных котят – карточная игра»
1. Общие сведения
| Параметр |
Значение |
| Название |
«Explosive Cats – Card Game» |
| Тип проекта |
Простая браузерная карточная игра • Backend: Python • Frontend: Vanilla JS/HTML+SCSS |
| Целевая аудитория |
Игроки в кругу друзей (не более 4 чел.) |
| Платформы |
Web‑браузер (десктоп + мобильный) |
| Технологический стек |
Back‑end: FastAPI, SQLAlchemy, PostgreSQL (опционально для хранения результатов), Docker. Front‑end: HTML5 Canvas, Vanilla JS, SCSS. Dev‑тех: Docker‑Compose, Prettier, ESLint, pytest. |
2. Функциональные требования
| Номер |
Функциональность |
Описание |
Приоритет |
| 1 |
Аутентификация |
Регистрация/вход по email+пароль, JWT. |
Критический |
| 2 |
Создание/присоединение лобби |
Игрок может создать lobby с уникальным кодом, поделиться им. Другие игроки вводят код – присоединяются. |
Критический |
| 3 |
Карточная система |
Карточки с уникальными эффектами (прыжок, взрыв, защита). |
Критический |
| 4 |
Правила игры |
Ходы, эффект карт, окончание игры. |
Критический |
| 5 |
Синхронизация |
Через WebSocket: передача состояния колод, очков, активного игрока, эффекта. |
Критический |
| 6 |
UI/UX |
Таблица очков, колоды, активный игрок. |
Средний |
| 7 |
Сохранение результатов |
Сохраняем победы/поражения. |
Средний |
| 8 |
Тесты |
Unit tests для API, integration tests для WebSocket, UI tests (Playwright). |
Средний |
3. Нефункциональные требования
- Масштабируемость: до 10 одновременных игр – простая Docker‑композиция.
- Безопасность: базовый HTTPS, защита от CSRF/XSS, rate‑limiting (не более 10 запросов/минута).
- Документация: Swagger/OpenAPI, README, CONTRIBUTING.
- Версионирование не требуется.
- CI/CD не предусмотрено – ручная сборка Docker, запуск при изменении.
4. Архитектура
+----------------+ +----------------+
| Client (Browser)|<------->| WebSocket Server |
+----------------+ +----------------+
|
v
+----------------+ +----------------+ +----------------+ +----------------+
| HTTP API Server|<------->| Database (PostgreSQL)|<------->| Admin UI |
+----------------+ +----------------+ +----------------+ +----------------+
- HTTP API – CRUD для пользователей, лобби, статистики. |
- WebSocket – real‑time передача игрового состояния. |
- PostgreSQL – долговременное хранение результатов. |
- Docker‑compose – разворачивает все сервисы.
5. План разработки
| Итерация |
Длительность |
Результат |
| 1 |
1 неделя |
Проектный репозиторий, Dockerfile, docker‑compose, базовый API auth/register, auth/login. |
| 2 |
1 неделя |
JWT, Swagger, CRUD игроков и лобби. |
| 3 |
1 неделя |
WebSocket‑сервер, реализация лобби и простого UI без карты. |
| 4 |
2 недели |
Реализация карточек, колоды, правила игры, клиентский Canvas. |
| 5 |
1 неделя |
Тесты, финальная сборка Docker, обновление документации. |
6. Технологические детали
Backend
- FastAPI – асинхронный фреймворк, WebSocket поддержка. |
- SQLAlchemy – ORM, Alembic migrations. |
- Uvicorn – ASGI сервер. |
- Passlib – хэширование паролей. |
- PyJWT или fastapi-users – JWT.
Frontend
- Vanilla JS – ES6 modules, fetch API, async/await. |
- Canvas API – отрисовка карты и карточек. |
- SCSS – стили, BEM. |
Test & Dev
- pytest – unit tests для API. |
- playwright – UI‑тесты. |
- Docker‑compose – разворот для dev. |
7. Минимальные риски
- Синхронизация: использовать простую модель с версионированием состояния. |
- Производительность: WebSocket‑соединения простейшие, 4 игрока.
- Безопасность: базовый HTTPS/CSRF/XSS.
8. Дальнейшие шаги
- Создать
README.md, CONTRIBUTING.md. |
- Настроить
docker-compose.yml (API, PostgreSQL). |
- Реализовать базовый CRUD + auth. |
- Переход к итерациям.
Важно: Уровень покрытия тестами – минимум 80 %.