Примечание: Это учебный проект. Код предоставляется в образовательных целях.
Это серверный бэкенд для фанатской мультиплеерной игры по вселенной Danganronpa.
Важно: Данный репозиторий содержит только серверный код. Ассеты, защищенные авторским правом (арты, музыка, тексты и т.д.), не распространяются и не включены в этот проект.
| Репозиторий | Описание |
|---|---|
| DROWeb.Backend | ASP.NET WebAPI сервер |
| DROWeb.Deploy — в разработке | Kubernetes/helm конфигурация |
| DROWeb.Unity — в разработке | Игровой клиент на движке Unity |
При первом запуске в указанной базе данных будут созданы таблицы Users и ExternalAuths.
Шаг 1. Для начала работы необходимо выдать себе права ManagePermissions:
UPDATE public."Users" SET "Permissions" = 1073741824 WHERE "Id" = '00000000-0000-0000-0000-000000000000'Шаг 2. После выдачи прав необходимо перезайти.
Панель администратора доступна по адресу /admin после получения прав.
Здесь можно:
- Управлять правами отдельных пользователей
- Отметить
GameAccessдля предоставления доступа к игре
После выдачи прав клиент будет автоматически переподключен (см. TODO: автопродление токенов).
При наличии права GameAccess у пользователя появляется зелёная кнопка «Играть», ведущая на /game.
Без необходимых прав пользователь видит соответствующее сообщение:
-
Реализовать механизм Refresh Tokens для автопродления сессий.
-
Распределенное кэширование: миграция с InMemoryCache на Redis для хранения сессий и пермишенов.
-
Покрытие кода Unit-тестами и валидация входящих DTO (FluentValidation).
-
Реализовать эндпоинт аутентификации (Forward Auth) для Ingress-роутера для контроля доступа к ресурсам R3 Storage.
- .NET 10.0 SDK
- PostgreSQL (опционально, по умолчанию используется SQLite)
-
Клонируйте репозиторий
git clone <repo-url>
-
Настройте
.env(используйте.env.example). Вам понадобятся:- Данные приложения
Discord Client ID/Secret. - Настройки подключения к PostgreSQL (по умолчанию в
appsettings.Developmentиспользуется"USE_SQLITE": "true").
- Данные приложения
-
Запустите приложение
dotnet run --project DROWeb.WebAPI
Сервер запустится на
https://localhost:7001.
| Компонент | Технология |
|---|---|
| Framework | ASP.NET 10.0 |
| ORM | Entity Framework Core 10.0 |
| API Framework | FastEndpoints 8.1.0 |
| Database (Prod) | PostgreSQL (Npgsql) |
| Database (Dev) | SQLite |
| Auth | Cookie Authentication |
| Auth Provider | Discord OAuth (AspNet.Security.OAuth.Discord) |
При пуше в репозиторий запускается CI/CD пайплайн (deploy.yml), который выполняет следующие этапы:
1. Semantic Release (ветки: main, develop)
- При пуше в
mainили ручном запуске (workflow_dispatch) — выпускает стабильную версию (latest) - При пуше в
develop— выпускает dev-версию (dev)
2. Build & Pack
- Сборка
DROWeb.WebAPI - Генерация UnitySDK через NSwag из OpenAPI спецификации
- Сборка UnitySDK (.NET Standard 2.1)
- Генерация
.metaфайлов для Unity (с помощьюmetagen-gha) - Публикация UPM пакета в реестр Verdaccio
3. Docker Image
- Сборка образа
DROWeb.WebAPI - Пуш в GHCR с двумя тегами:
ghcr.io/<owner>/droweb-backend:<version>— конкретная версияghcr.io/<owner>/droweb-backend:<latest|dev>— алиас в зависимости от ветки
4. Deploy to k3s
- Деплой на k3s кластер через
kubectl - Обновление образа деплоя
droweb-backendв namespaceapp
| Ветка | Действие |
|---|---|
main |
Стабильный релиз (latest) |
develop |
Dev-версия (dev) |
workflow_dispatch |
Ручной запуск (стабильный релиз) |
Добавьте в Settings → Variables and secrets → Variables:
| Переменная | Описание |
|---|---|
REGISTRY_HOST |
Хост реестра UPM пакетов (например, Verdaccio) |
Добавьте в Settings → Secrets and variables → Actions:
| Секрет | Описание |
|---|---|
GITHUB_TOKEN |
Автоматически создается GitHub |
VERDACCIO_TOKEN |
Токен доступа к реестру UPM пакетов |
KUBE_CONFIG |
Base64-encoded kubeconfig для доступа к k3s кластеру |




