Update documentation and clarify MVP status
- Revised the CLAUDE.md and README.md files to reflect the current MVP status, emphasizing completed features and intentionally omitted elements such as traffic limits and billing. - Enhanced clarity in the documentation regarding the architecture, tech stack, and user roles. - Removed the outdated roadmap section and streamlined references to tech stack decisions. - Updated API design documentation to clarify the absence of versioning in the MVP and the handling of configuration details.
This commit is contained in:
@@ -11,18 +11,17 @@
|
||||
хранит свою проекцию домена в PostgreSQL. Живые обновления — по SignalR. Приложение (фронт + бек +
|
||||
бот) поставляется **единым Docker-образом**; PostgreSQL — отдельным контейнером в compose.
|
||||
|
||||
> **Статус: MVP реализован и работает.** Бэкенд (M0–M8) и фронтенд полностью собраны, покрыты
|
||||
> тестами (134 бэкенд-теста), единый Docker-образ и docker-compose стек проверены живьём. История
|
||||
> этапов — [`docs/roadmap.md`](docs/roadmap.md); там же — раздел Backlog с тем, что осознанно
|
||||
> оставлено за рамками MVP (тарифы, лимиты трафика/срока на конфиг, полное самообслуживание в боте и т.д.).
|
||||
> Бэкенд и фронтенд полностью собраны и покрыты тестами (134 бэкенд-теста), единый Docker-образ и
|
||||
> docker-compose стек проверены живьём. Осознанно не реализовано: тарифы, лимиты трафика/срока на
|
||||
> конфиг, полное самообслуживание в боте — см. [tech-stack.md](docs/tech-stack.md).
|
||||
|
||||
## Документация (single source of truth)
|
||||
|
||||
Прежде чем менять архитектуру или добавлять фичу — свериться с [`docs/`](docs/README.md):
|
||||
|
||||
- [Vision](docs/vision.md) · [Architecture](docs/architecture.md) · [Domain Model](docs/domain-model.md)
|
||||
- [Tech Stack (ADR)](docs/tech-stack.md) · [Backend Conventions](docs/backend-conventions.md)
|
||||
- [Frontend](docs/frontend.md) · [Telegram Bot](docs/telegram-bot.md) · [API Design](docs/api-design.md) · [Roadmap](docs/roadmap.md)
|
||||
- [Tech Stack](docs/tech-stack.md) · [Backend Conventions](docs/backend-conventions.md)
|
||||
- [Frontend](docs/frontend.md) · [Telegram Bot](docs/telegram-bot.md) · [API Design](docs/api-design.md)
|
||||
|
||||
**Держи доки в синхроне с кодом.** Меняешь контракт/архитектуру — обнови соответствующий док в том же изменении.
|
||||
|
||||
@@ -35,7 +34,7 @@
|
||||
- **Frontend**: React 19 + Vite + TypeScript, TanStack Query/Router, shadcn-стиль поверх Radix +
|
||||
Tailwind CSS v4, Zustand (только auth-стор), react-hook-form + zod, @microsoft/signalr. Пакетный
|
||||
менеджер — pnpm, линтер — oxlint. `recharts`/`@tanstack/react-table` установлены, но не
|
||||
используются в MVP (статистика — карточками, таблицы — руками).
|
||||
используются (статистика — карточками, таблицы — руками).
|
||||
- **Telegram**: Telegram.Bot, бот как `BackgroundService` **в процессе Api** (long polling).
|
||||
- **Инфра**: единый Docker-образ (API + бот + статика SPA) + PostgreSQL в docker-compose.
|
||||
|
||||
@@ -89,10 +88,10 @@
|
||||
- **Аудит**: значимые действия (активация, блок, смена роли, отзыв, ноды/инбаунды) писать в `AuditLog`
|
||||
(append-only, источник Web/Telegram/System).
|
||||
- **Подписка**: агрегированная на юзера (`AppUser.SubscriptionToken`, все активные конфиги) + по конфигу.
|
||||
- **Ротация конфига** (`Rotate()`): новый UUID/ссылка, квоту не тратит. **Бот в MVP — read-only** по конфигам.
|
||||
- **Ротация конфига** (`Rotate()`): новый UUID/ссылка, квоту не тратит. **Бот — read-only** по конфигам.
|
||||
- **Конфиг**: пользователь задаёт метку (`Label`) и лимит устройств (`DeviceLimit` → `limitIp` в 3x-ui, 0=без лимита), может редактировать.
|
||||
- **Самоудаление аккаунта** (`DELETE /api/auth/me`): отзыв всех конфигов + удаление данных, аудит анонимизируется.
|
||||
- **API без версионирования** в MVP (`/api` без `v1`). Подписка отдаёт `Subscription-Userinfo`.
|
||||
- **API без версионирования** (`/api` без `v1`). Подписка отдаёт `Subscription-Userinfo`.
|
||||
- **Тема**: светлая/тёмная/системная (Tailwind `dark`, выбор в localStorage).
|
||||
- **Инструкции + приложения**: отдельная страница инструкций; каталог `ClientApp` (админ CRUD:
|
||||
название/ссылка/ОС/порядок/вкл), пользователю `GET /api/apps` отдаётся сгруппированным по ОС.
|
||||
@@ -133,7 +132,7 @@
|
||||
- Не вводи отдельный nginx-контейнер для статики без явной просьбы — это ломает требование единого контейнера.
|
||||
- **TLS — внешний** (прокси/шлюз вне compose); `app` отдаёт HTTP + доверяет `X-Forwarded-*` через
|
||||
`ForwardedHeaders` (иначе Secure-cookie/схема за прокси сломаются). Свой nginx/Caddy не добавляй.
|
||||
- **Миграции** применяются авто на старте (MVP). **CI** (GitHub Actions) — только build/test, без деплоя.
|
||||
- **Миграции** применяются авто на старте. **CI** (GitHub Actions) — только build/test, без деплоя.
|
||||
|
||||
## Соглашения по коду
|
||||
|
||||
@@ -180,11 +179,11 @@ docker compose up -d # api + postgres (+ web)
|
||||
> Окружение: Windows, основная оболочка — **PowerShell**. Для POSIX-скриптов есть Bash-инструмент.
|
||||
> Пути — с учётом Windows.
|
||||
|
||||
## Принятые решения (зафиксированы)
|
||||
## Ключевые решения
|
||||
|
||||
Ключевые развилки закрыты — см. [tech-stack.md](docs/tech-stack.md#принятые-решения-по-открытым-вопросам):
|
||||
CQRS — **собственный диспетчер** (не MediatR); **одна роль** на пользователя; секреты нод —
|
||||
**ASP.NET Data Protection**; тарифы `Plan` — **backlog** (в MVP без лимитов трафика/срока);
|
||||
См. [tech-stack.md](docs/tech-stack.md#ключевые-решения-по-домену-и-поведению): CQRS —
|
||||
**собственный диспетчер** (не MediatR); **одна роль** на пользователя; секреты нод —
|
||||
**ASP.NET Data Protection**; тарифы `Plan` не реализованы (нет лимитов трафика/срока на конфиг);
|
||||
i18n — **RU+EN** (react-i18next); Telegram — **long polling**, только **привязка** (не signup);
|
||||
история трафика — **простая таблица + TTL**; логирование — **Serilog**.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user