- Removed deprecated Telegram user ID configuration from `.env.example` and added a new setting for admin Telegram user IDs. - Updated `CLAUDE.md` to reflect the current MVP status, detailing completed features and testing coverage. - Enhanced `README.md` with quick start instructions for Docker setup and clarified project status. - Revised API design documentation to include updated error handling and request/response structures. - Improved frontend documentation to outline the project structure and technologies used.
75 lines
4.7 KiB
Markdown
75 lines
4.7 KiB
Markdown
# PnvPanel
|
||
|
||
**PnvPanel** — self-service портал для VPN-конфигураций. Пользователи самостоятельно создают
|
||
и управляют своими VPN-конфигами (VLESS / VMess / Trojan / Shadowsocks), а администраторы
|
||
управляют серверами, лимитами и пользователями. Есть **Telegram-бот** (ссылка на сайт, просмотр
|
||
конфигов, passwordless-вход через привязку Telegram). Под капотом — интеграция с панелями
|
||
[3x-ui](https://github.com/MHSanaei/3x-ui) через библиотеку
|
||
[ThreeXui.Net](https://github.com/mrleo1nid/ThreeXui.Net). Приложение (фронт + бек + бот)
|
||
поставляется **единым Docker-образом**; PostgreSQL — отдельным контейнером в compose.
|
||
|
||
## Стек
|
||
|
||
| Слой | Технологии |
|
||
| ----------- | -------------------------------------------------------------------------------- |
|
||
| Backend | C# / .NET 10, ASP.NET Core Web API, Clean Architecture, CQRS (свой диспетчер), EF Core |
|
||
| БД | PostgreSQL (Npgsql) |
|
||
| Auth | ASP.NET Core Identity + JWT (access + refresh) |
|
||
| Realtime | SignalR |
|
||
| Интеграция | ThreeXui.Net (3x-ui REST API) |
|
||
| Telegram | Telegram.Bot (in-process hosted service, long polling) |
|
||
| Frontend | React 19 + Vite + TypeScript, TanStack Query/Router, shadcn/ui + Tailwind |
|
||
| Упаковка | Единый Docker-образ (API + бот + статика SPA) + PostgreSQL в docker-compose |
|
||
|
||
## Быстрый старт
|
||
|
||
Единый Docker-образ (API + бот + статика SPA) + PostgreSQL:
|
||
|
||
```bash
|
||
cp .env.example .env # заполнить AdminSeed__Password, Jwt__SigningKey и т.д.
|
||
docker compose up -d --build
|
||
# → http://localhost:8080 (админ — логин/пароль из .env, AdminSeed__Username/Password)
|
||
```
|
||
|
||
Локальная разработка (без Docker для приложения — только `db`):
|
||
|
||
```bash
|
||
# backend, из backend/
|
||
dotnet build && dotnet test
|
||
dotnet run --project src/PnvPanel.Api
|
||
|
||
# frontend, из frontend/
|
||
pnpm install
|
||
pnpm dev # проксирует /api, /hubs на localhost:8080
|
||
```
|
||
|
||
## Документация
|
||
|
||
Проектная документация лежит в [`docs/`](docs/README.md):
|
||
|
||
- [Product Vision & Scope](docs/vision.md) — что мы строим и для кого
|
||
- [Architecture](docs/architecture.md) — Clean Architecture, CQRS, интеграция, realtime, безопасность
|
||
- [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) — бот, привязка Telegram и passwordless-вход
|
||
- [API Design](docs/api-design.md) — REST-эндпоинты и SignalR-контракты
|
||
- [Roadmap](docs/roadmap.md) — этапы разработки (ретроспектива) + backlog
|
||
|
||
Пример переменных окружения (сид админа, БД, JWT, Telegram) — [`.env.example`](.env.example).
|
||
Инструкции для AI-ассистента (Claude Code) — в [`CLAUDE.md`](CLAUDE.md).
|
||
|
||
## Статус
|
||
|
||
✅ **MVP реализован.** Backend (Clean Architecture, CQRS, 134 теста) и frontend (React SPA, полная
|
||
админка) готовы, покрывают весь [roadmap](docs/roadmap.md) M0–M8: регистрация/активация/роли,
|
||
управление нодами 3x-ui и inbound'ами, самообслуживание конфигами, realtime по SignalR, Telegram-бот
|
||
(привязка + passwordless-вход + уведомления), админ-статистика и аудит. Единый Docker-образ и
|
||
docker-compose стек проверены end-to-end. Что осталось за рамками MVP осознанно — раздел Backlog в
|
||
[roadmap.md](docs/roadmap.md#backlog-после-mvp).
|
||
|
||
## Лицензия
|
||
|
||
[MIT](LICENSE)
|