Newer
Older
exp-cats-new / technical_spec.md

Техническое задание проекта «Клон взрывных котят – карточная игра»

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. Дальнейшие шаги

  1. Создать README.md, CONTRIBUTING.md. |
  2. Настроить docker-compose.yml (API, PostgreSQL). |
  3. Реализовать базовый CRUD + auth. |
  4. Переход к итерациям.

Важно: Уровень покрытия тестами – минимум 80 %.