Учебный (университетский) веб-проект: ASP.NET Core 9 backend + статический SPA-фронтенд + PostgreSQL. Публикуется как open-source под лицензией MIT.
- Backend: ASP.NET Core 9 (Web API), Entity Framework Core 9, JWT-аутентификация
- БД: PostgreSQL 16
- Frontend: статические файлы в
CourseProject/wwwroot(отдаются тем же приложением) - Документация API: Swagger UI на
/swagger - Деплой: Docker / docker-compose
CourseProject/
API/ контроллеры (Auth, Event, User)
Aplication/ сервисы и helpers (JWT, password hashing)
Domain/ сущности и модели
DTOs/ DTO для API
Infrastructure/ AppDbContext, репозитории
Migrations/ миграции EF Core
wwwroot/ фронтенд (SPA)
Program.cs точка входа
-
Скопируй пример окружения и заполни значения:
cp .env.example .env
Сгенерируй надёжный
JWT_SECRET(минимум 32 символа), задай пароль БД. -
Подними сервисы:
docker compose up --build
-
Открой:
- API + SPA:
http://localhost:7234 - Swagger:
http://localhost:7234/swagger
- API + SPA:
Миграции EF Core применяются автоматически при старте приложения.
Нужен .NET 9 SDK и работающий PostgreSQL.
Передай конфигурацию через переменные окружения (двойное подчёркивание = вложенность):
export ConnectionStrings__DefaultConnection="Host=localhost;Port=5432;Database=CourseProjectDB;Username=postgres;Password=..."
export JwtSettings__Secret="долгая-случайная-строка-минимум-32-символа"
export JwtSettings__Issuer="CourseProjectServer"
export JwtSettings__Audience="CourseProjectClient"
export JwtSettings__ExpiryMinutes=60
dotnet run --project CourseProjectФайл CourseProject/appsettings.json намеренно не содержит секретов — заполни их через переменные окружения, .env (для Docker) или dotnet user-secrets (для локальной разработки).
| Переменная | Назначение |
|---|---|
POSTGRES_USER / _PASSWORD / _DB |
Учётные данные PostgreSQL (docker-compose) |
APP_PORT |
Внешний порт приложения |
JWT_SECRET |
Подписной ключ JWT (≥ 32 символов) |
ConnectionStrings__DefaultConnection |
Строка подключения к БД |
JwtSettings__Issuer / __Audience |
Issuer/audience для JWT |
JwtSettings__ExpiryMinutes |
Время жизни токена в минутах |
MIT.