Skip to content

code-418-dpr/VZOR-backend

Repository files navigation

VZOR-backend

license release downloads code size

build CodeQL (C#, GH Actions)

Бэкенд для проекта 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

Установка и запуск

  1. Клонируйте репозиторий и перейдите в его папку.

Посредством Docker

  1. Установите Docker.
  2. Установите .NET SDK, а также EF Core. Последний можно добавить командой:
dotnet tool install --global dotnet-ef
  1. Настройте файл appsetting.Docker.json, прописав собственные строки подключения (они должны совпадать с указанными в compose.yaml)

  2. Создайте файл .env и настройте все описанные там параметры.

  3. Запустите сборку и подъём контейнера:

docker-compose up -d --build
  1. Создайте миграции к базе данных:

Воспользуйтесь заготовленным скриптом:

.\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.

Contributors 2

  •  
  •  

Languages