Doc Tech Stack - PlutoGr/TravelAgency GitHub Wiki
Стек и версии
Версии взяты из global.json, файлов *.csproj, package.json и docker/docker-compose.yml в main. При обновлении зависимостей (Dependabot) таблица правится в том же PR, если меняется мажорная версия.
Бэкенд
| Компонент |
Технология и версия |
Где используется |
| Платформа |
.NET 10 (SDK 10.0.100, rollForward: latestMinor), ASP.NET Core |
все сервисы и Gateway |
| Обратный прокси |
YARP 2.3.0 |
Gateway |
| ORM |
EF Core, провайдер Npgsql 10.0.0 |
все сервисы с БД |
| Медиатор |
MediatR 14.1.0 |
команды и запросы в слое Application |
| Валидация |
FluentValidation 12.1.1 |
запросы API |
| Пароли |
BCrypt.Net-Next 4.1.0 |
Identity |
| Аутентификация |
JWT Bearer (Microsoft.AspNetCore.Authentication.JwtBearer) |
все сервисы и Gateway |
| Межсервисные вызовы |
gRPC: Grpc.AspNetCore, Grpc.Net.Client 2.76.0 |
Booking, Chat, Catalog, Identity, Media |
| Realtime |
ASP.NET Core SignalR |
Chat |
| Хранилище файлов |
AWSSDK.S3 4.0.x поверх MinIO |
Media |
| Обработка изображений |
SixLabors.ImageSharp 3.1.12 |
превью в Media |
| Redis-клиент |
StackExchange.Redis 2.11.8 |
Gateway (лимиты), Identity (lockout) |
| Логи |
Serilog.AspNetCore 10.0.0 |
все |
| Трассировка |
OpenTelemetry 1.15.x |
все |
| Тесты |
xUnit, FluentAssertions, Testcontainers (PostgreSQL, MinIO) |
*.UnitTests, *.IntegrationTests |
Фронтенд
| Компонент |
Версия |
Назначение |
| React |
19 |
интерфейс |
| TypeScript |
5.9 |
типизация |
| Vite |
7 |
сборка и dev-сервер |
| React Router |
7 |
маршруты SPA |
| TanStack React Query |
5 |
загрузка и кеш данных с API |
| Zustand |
5 |
состояние (вход, избранное, интерфейс) |
| Axios |
1 |
HTTP-клиент |
| Tailwind CSS |
4 |
стили |
| @microsoft/signalr |
10 |
клиент чата |
| Vitest, Testing Library |
3, 16 |
тесты |
| ESLint |
9 |
линтер |
Инфраструктура
| Компонент |
Версия |
Назначение |
| PostgreSQL |
17 (alpine) |
базы сервисов |
| Redis |
7 (alpine) |
лимиты Gateway, lockout Identity |
| MinIO |
локально minio/minio:latest, на сервере свой образ из docker/minio/Dockerfile |
файлы Media |
| nginx |
в образе frontend |
HTTPS, basic auth, раздача SPA, прокси /api/ |
| Docker Compose |
|
запуск всех сервисов локально и на dev |
| GitHub Actions, GHCR |
|
CI, сборка и хранение образов |
| Let's Encrypt (certbot) |
|
сертификат dev |
Версионирование API
Внешний префикс /api/v1. Ломающие изменения допускаются только в новом префиксе (/api/v2), неломающие (новые необязательные поля) в текущем. См. Публичный API.