LoVisual/backend/TODO.md
loki5512344 52d87368c9 chore(history): squash 10 commit(s) from 2026-07-31
- feat: Фаза 1 ребрендинг combatant → lovisual + восстановление config
- refactor: Фаза 2 — выкинуть Runtime/JarReplacement, заменить на Lifecycle
- refactor: Фаза 3.5 — удалить читерские модули, ESP под легит
- refactor: Фаза 3 — разбить Renderer2D (3379→2150 фасад + 14 хелперов ≤200)
- refactor: Фаза 3 — разбить BetterChatRenderer (2870→210 фасад + 21 хелпер ≤200)
- refactor: Фаза 3 — разбить UnifiedSettingRenderer (2798→208 фасад + 24 хелпера ≤200)
- refactor: Фаза 3 — разбить ClickGuiRenderer (1887→542 фасад + 15 хелперов ≤200)
- refactor: Фаза 3 — разбить NameTags (1791→438 фасад + 11 хелперов ≤200)
- refactor: Фаза 3 — разбить TargetHud (1655→340 фасад + 11 хелперов ≤200)
- refactor: Фаза 3 — разбить ESP (1538→269 фасад + 11 хелперов ≤200)
2026-07-31 23:14:14 +02:00

51 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# LoVisual Backend (Rust + axum)
## Правила (ОБЯЗАТЕЛЬНЫЕ, нарушение = откат)
- **KISS / DRY / SOLID** — простая структура, без оверинжиниринга
- **Макс. 200 строк на файл** — превышение = разбить на модули
- **Макс. 3 файла на папку** — больше = новая подпапка по смыслу
- **Обязательное прохождение:** `cargo fmt` + `cargo clippy --all-targets` (ноль ошибок) + `cargo test`
- **Запрещено `#[allow(dead_code)]`** — мёртвый код удаляется, не прячется
- **Запрещено `unsafe`** (в собственной логике; lints: `unsafe_code = "forbid"`)
- **Без пустышек** — модуль создаётся только с рабочей реализацией
- **Каждый этап компилируется** — перед переходом к следующему
- **Ошибки JSON-декода не игнорировать** — всегда `.context()`/`?`
- **`user_id` из токена, не из тела запроса**
---
## Сделано
- [x] Каркас: main.rs + server/{mod,config} + routes/{mod,health}
- [x] `GET /health` + graceful shutdown (SIGTERM/SIGINT)
- [x] Config из env (LOVISUAL_HOST/PORT/CORS_ORIGINS), валидация на старте
- [x] CORS (настраиваемые origins) + tower TraceLayer
- [x] Rust 2024 edition, актуальные версии пакетов
---
## Фаза 1: DB (SQLite, sqlx)
- [ ] `src/db/mod.rs` — подключение, миграции
- [ ] `src/db/users.rs` — таблица users
- [ ] `src/db/configs.rs` — облачные конфиги
- [ ] `src/db/profiles.rs` — профили, playtime, friends
## Фаза 2: Auth
- [ ] `src/auth/mod.rs` — argon2 + JWT (jsonwebtoken)
- [ ] `src/auth/handlers.rs` — register/login/logout
- [ ] `src/auth/middleware.rs` — Bearer token → 401, не panic
## Фаза 3: Profile API
- [ ] `src/profile/mod.rs` — get/update/playtime/search/friends
## Фаза 4: Configs API
- [ ] `src/config_api/mod.rs` — upload/download
- [ ] 16-byte share keys (минимум)
## Фаза 5: IRC
- [ ] `src/irc/mod.rs` — WebSocket хаб (axum + tokio-tungstenite)
## Фаза 6: Middleware
- [ ] RateLimit — с cleanup-задачей (без утечки)
- [ ] Request logging через tracing
### Проверка после каждой фазы: `cargo fmt && cargo clippy --all-targets && cargo test`