Leonid Pershin 701c3a1d51
CI / Backend (build + test) (push) Successful in 1m18s
CI / Frontend (lint + typecheck + build) (push) Successful in 32s
Add factory reset functionality and update identity service
- Introduced a new DELETE endpoint `/api/admin/maintenance/factory-reset` for a complete reset of the admin panel, removing all users except the current admin and clearing various data.
- Implemented the `FactoryReset` method in `AdminMaintenanceEndpoints` to handle the reset logic.
- Added a new method `ListAllUserIdsExceptAsync` in `IIdentityService` to retrieve user IDs excluding a specified user, aiding in the factory reset process.
- Updated the frontend to include a confirmation dialog for the factory reset action, enhancing user experience and safety.
- Enhanced localization support for the new factory reset feature in both Russian and English, ensuring clarity for all users.
2026-07-14 18:58:51 +03:00
2026-07-01 12:55:52 +00:00

PnvPanel

PnvPanel — self-service портал для VPN-конфигураций. Пользователи самостоятельно создают и управляют своими VPN-конфигами (VLESS / VMess / Trojan / Shadowsocks), а администраторы управляют серверами, лимитами и пользователями. Есть Telegram-бот (ссылка на сайт, просмотр конфигов, passwordless-вход через привязку Telegram). Под капотом — интеграция с панелями 3x-ui через библиотеку 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:

cp .env.example .env    # заполнить AdminSeed__Password, Jwt__SigningKey и т.д.
docker compose up -d --build
# → http://localhost:8080  (админ — логин/пароль из .env, AdminSeed__Username/Password)

Локальная разработка (без Docker для приложения — только db):

# backend, из backend/
dotnet build && dotnet test
dotnet run --project src/PnvPanel.Api

# frontend, из frontend/
pnpm install
pnpm dev          # проксирует /api, /hubs на localhost:8080

Документация

Проектная документация лежит в docs/:

  • Product Vision & Scope — что мы строим и для кого
  • Architecture — Clean Architecture, CQRS, интеграция, realtime, безопасность
  • Domain Model — сущности, связи, инварианты
  • Tech Stack — используемые технологии
  • Backend Conventions — структура проекта, паттерны, стиль кода
  • Frontend — стек фронтенда и структура
  • Telegram Bot — бот, привязка Telegram и passwordless-вход
  • API Design — REST-эндпоинты и SignalR-контракты

Пример переменных окружения (сид админа, БД, JWT, Telegram) — .env.example. Инструкции для AI-ассистента (Claude Code) — в CLAUDE.md.

Лицензия

MIT

S
Description
No description provided
Readme MIT
1.9 MiB
Languages
C# 69.5%
TypeScript 30.1%
Dockerfile 0.2%