Бэкенд для проекта VZOR
- Аутентификация и авторизация
- Настройка профиля пользователя
- Проверка консистентности загруженных файлов в S3 и MongoDb через Hangfire
- Получение кэшированной информации о изображениях с возможностью фильтрации, сортировки и пагинации
- Полнотекстовый поиск с возможностью анализа искаженного текста через ElasticSearch на основе метаданных изображений
- Запись результата обработки изображений в метаданные файла
- Сервис уведомлений
- Админ-панель
- Связь с сервисом уведомлений через RabbitMQ
- Файловый сервис
- Подтверждение учётной записи через почту
- Загрузка фотографий в S3, MongoDb и отправка на CV через gRPC
- Принятие и обработка результатов CV-сервиса с занесением мета-данных в БД
- Авторизация через oauth 2(Yandex,VK,Google)
- C# — язык программирования
- Postgres — реляционная база данных
- ElasticSearch — Движок полнотекстового поиска
- MongoDb — NoSql база данных для хранения метаданных о изображениях
- Seq — сервис логгирования
- gRPC — протокол взаимодействия между бэкендом и сервисом CV
- RabbitMQ — брокер сообщений для взаимодействия между бэкендом и сервисом уведомлений
- Redis — NoSql база данных для кэширование объектов
- Minio — облачное S3 хранилище объектов
- Docker — платформа для контейнеризации
Библиотека | Версия | Источник |
---|---|---|
Grpc.AspNetCore | 2.64.0, 2.67.0 | nuget.org |
Grpc.Tools | 2.70.0 (2.64.0) | nuget.org |
Hangfire.AspNetCore | 1.8.18 | nuget.org |
Hangfire.Core | 1.8.18 | nuget.org |
Hangfire.PostgreSql | 1.20.10 | nuget.org |
Microsoft.AspNetCore.Authentication.JwtBearer | 9.0.2 | nuget.org |
Microsoft.AspNetCore.Identity.EntityFrameworkCore | 9.0.2 | nuget.org |
Microsoft.AspNetCore.Mvc.Core | 2.3.0 | nuget.org |
Microsoft.AspNetCore.OpenApi | 9.0.2 | nuget.org |
Microsoft.EntityFrameworkCore | 9.0.2 | nuget.org |
Microsoft.EntityFrameworkCore.Design | 9.0.2 | nuget.org |
Microsoft.EntityFrameworkCore.Tools | 9.0.2 | nuget.org |
Microsoft.Extensions.Configuration | 9.0.2 | nuget.org |
Minio | 6.0.4 | nuget.org |
Newtonsoft.Json | 13.0.3 (11.0.1) | VS Offline nuget.org |
Npgsql.EntityFrameworkCore.PostgreSQL | 9.0.4 | nuget.org |
OpenTelemetry.Instrumentation.Process | 1.11.0-beta.1 | - |
Scrutor | 6.0.1 | nuget.org |
Serilog.AspNetCore | 9.0.0 | nuget.org |
Serilog.Enrichers.Environment | 3.0.1 | nuget.org |
Serilog.Enrichers.Thread | 4.0.0 | nuget.org |
Serilog.Exceptions | 8.4.0 | nuget.org |
Serilog.Sinks.Seq | 9.0.0 | nuget.org |
Swashbuckle.AspNetCore | 7.3.1 | nuget.org |
- Клонируйте репозиторий и перейдите в его папку.
- Установите Docker.
- Установите .NET SDK, а также EF Core. Последний можно добавить командой:
dotnet tool install --global dotnet-ef
-
Настройте файл appsetting.Docker.json, прописав собственные строки подключения (они должны совпадать с указанными в compose.yaml)
-
Создайте файл
.env
и настройте все описанные там параметры. -
Запустите сборку и подъём контейнера:
docker-compose up -d --build
- Создайте миграции к базе данных:
Воспользуйтесь заготовленным скриптом:
.\migrations-add-and-update-without-drop-and-remove.cmd
или
cd src
dotnet ef migrations add <название миграции> --startup-project .\VZOR.Web\ --project .\Accounts\VZOR.Accounts.Infrastructure\ --context AccountsDbContext
cd ..
В будущем, если миграции не применятся автоматически (при создании базы данных), их можно применить вручную:
cd src
dotnet ef database update --startup-project .\VZOR.Web\ --project .\Accounts\VZOR.Accounts.Infrastructure\ --context AccountsDbContext
cd ..
Теперь можно использовать бэкенд по адресу http://localhost:8080. Документация к бэкенду доступна в интерфейсе Swagger. Также доступен dashboard Hangfire`a по адресу Hangfire.