Skip to content

Doc Tech Stack

PlutoGr edited this page Oct 17, 2026 · 1 revision

Стек и версии

Версии взяты из 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.

Clone this wiki locally