# ТЗ: cactoz.su ## 1. Общее Личный сайт-визитка на домене `cactoz.su`. Три страницы, единая Matrix-стилистика. **Тема:** чёрный фон, зелёный и серебро, моноширинный шрифт (JetBrains Mono / Share Tech Mono), строго и технично — без лишних декоративных элементов. **Ник `cacto` (кактус) — сквозной мотив:** - Пиксельный кактус (16×16 или 32×32 спрайт, зелёный/серебро на чёрном) как лого в шапке и favicon. - ASCII-арт кактуса в hero-блоке главной страницы. - Терминальные префиксы вместо обычных заголовков/навигации: `cacto@matrix:~$ whoami`, `cacto@matrix:~$ ls projects/`, `cacto@matrix:~$ ./battlecity`. - Названия комнат в лобби генерируются в формате `cactus-room-01`, `cactus-room-02`, ... - Характер, а не просто ник: живучесть, минимум ресурсов, "колючий" стиль текста в отдельных местах (например, error-сообщения). ## 2. Страницы | # | Файл | Назначение | |---|------|------------| | 1 | `index.html` | Резюме — PHP/Go backend, опыт КИПиА/АСУТП | | 2 | `projects.html` | Карточки проектов со ссылками на репозитории | | 3 | `game.html` | BattleCity: лобби + игра | ## 3. Структура проекта ``` cactoz.su/ ├── docker-compose.yml ├── nginx/ │ ├── Dockerfile │ └── nginx.conf ├── frontend/ # чистый HTML/CSS/JS, без сборки │ ├── index.html │ ├── projects.html │ ├── game.html │ ├── favicon.ico │ ├── css/ │ │ ├── theme.css # переменные темы, общий сброс │ │ ├── resume.css │ │ ├── projects.css │ │ └── game.css │ ├── js/ │ │ ├── matrix-rain.js # canvas-эффект цифрового дождя │ │ ├── projects.js # рендер карточек проектов из data │ │ └── game/ │ │ ├── network.js # обёртка над WebSocket, очередь сообщений │ │ ├── lobby.js # UI лобби: список комнат, создание/вход │ │ ├── protocol.js # константы типов сообщений, (де)сериализация │ │ ├── entities.js # клиентские представления Tank/Bullet/Wall для Quintus │ │ └── main.js # инициализация Quintus, игровой цикл рендера │ └── vendor/ │ └── quintus/ # Quintus.js, подключается напрямую