В праздничные дни с 29.12 по 08.01 техническая поддержка отдыхает, но на наиболее важные вопросы постараемся ответить. Счастливого Нового Года!
gitverse new year логотип

T-Planet_If_else_Ermakov

Форк
0

7 месяцев назад
7 месяцев назад
7 месяцев назад
9 месяцев назад
7 месяцев назад
9 месяцев назад
7 месяцев назад
7 месяцев назад
README.md

README

КОНТАКТЫ

Телеграм: @egor4yt

Запуск проекта (Docker)

  1. Открыть командную строку в директории проекта

  2. Настроить окружение

  3. Запустить docker-compose

    docker-compose up -d

  4. Приложение доустпно по адресу http://localhost:5173/swagger или http://127.0.0.1:5173/swagger, разницы нет, фронтенд по адресу http://localhost:5553/.

Окружение

Если нужно править какие-то настройки приложения или базы данных, это можно сделать с помощью переменных окружения.

Переменные окружения, с помощью которых настраиваются API и база данных хранятся в файле .env, находящийся в корневой директории проекта

ПеременнаяСтандартное значениеОписание
WEBAPI_PUBLIC_PORT5173Порт, на котором будет работать API
DB_PUBLIC_PORT5715Порт, на котором будет работать сервис с базой данных PostgreSQL
DB_NAMEweather-historyНазвание базы данных
DB_USERsberИмя пользователя базы данных
DB_PASSWORDbestПароль для доступа к базе данных
UI_PUBLIC_PORT5553Порт, на котором запустится Frontend. Менять вместе с REACT_APP_API_URL
REACT_APP_API_URLREACT_APP_API_URL=http://localhost:5553URL для которого бекенд разрешит CORS. Менять вместе с UI_PUBLIC_PORT

Возможно вызовет трудности при проверке проекта

Так как в ТЗ не указано жестких требований к работе с типом date-time, все поля такого типа принимаются в формате ISO-8061 с любым часовым поясом и преобразуются в UTC+00:00, а вовзращаются в формате ISO-8061 с часовым поясом UTC+00:00

UPD: ФИНАЛ:

Иногда интерфейс тупит, не успел сделать норм реализацию. Например: удаление типа региона отрабатывает успешно, но тип не пропадает на UI, чтобы пофиксить - перезагрузите страницу вручную

При удалении аккаунта - вылетает, даже если удалил не тот аккаунт, которым авторизован

Постман коллекция версии 2.1, фронтенд в ней не описал, так как для загрузки страницы требуется Javascript, а постман этого не поддерживает. Умоляю простить, тестить руками в интерфейсе. Добавил только один запрос для UI, чтоб было видно, что проблему не выдумал

Архитектура проекта

Проект WeatherHistory имеет многослойную архитектуру, разделенную на несколько проектов с целью обеспечения чистого кода, гибкости, масштабируемости и удобства поддержки:

1. WeatherHistory.Shared

Этот проект предоставляет общие утилиты и расширения (helper и extension классы), которые используются между различными частями приложения. Эта библиотека классов обеспечивает повторное использование кода и уменьшает связанность между компонентами проекта.

2. WeatherHistory.Data

Содержит всё, что связано с хранением и манипуляцией данными. Проект определяет

ApplicationDbContext
для взаимодействия с базой данных через Entity Framework, использует папку
Migrations
для управления версионированием схемы базы данных, и описывает сущности в папке
Entities
для представления таблиц базы данных в коде. Реализуется паттерн Repository, обеспечивают абстракцию над непосредственным доступом к данным, что упрощает тестирование и поддержку кода, обеспечивает возможность замены источника данных без изменения большего количества кода.

3. WeatherHistory.Api.CommandsQueries

Этот проект решает задачи, связанные с бизнес-логикой, через механизмы команд и запросов, внедряя CQRS паттерн, который позволяет разделить операции чтения и записи для повышения производительности и масштабируемости. Используя MediatR, упрощается декомпозиция бизнес-логики на обрабатываемые хэндлерами команды и запросы, что ведет к лучшей организации кода и упрощает поддержку и тестирование. Библиотека AutoMapper помогает в автоматизации преобразования между сущностями базы данных и DTOs, тем самым сокращая объем шаблонного кода.

4. WeatherHistory.Api

Основное приложение веб-API, которое выступает в качестве точки входа в приложение. Запускает миграции для актуализации схемы БД при старте, конфигурирует зависимости для Dependency Injection, настраивает контроллеры, мидлвары и систему авторизации. Использование библиотеки MediatR в этом слое позволяет создать четкое разделение между веб-слоем и слоем приложения, где бизнес-логика может организована в виде команд и запросов, улучшая таким образом читаемость и поддерживаемость кода.

Используя такой подход и структуру проекта, можно достичь высокого уровня абстракции, чистоты кода и легкости в внесении изменений или добавления новых функциональностей.

Результат работы

В проекте были реализованы все требуемые по ТЗ функции.

Описание

Языки

C#

  • Dockerfile
  • JavaScript
  • SCSS
  • HTML
  • CSS
Сообщить о нарушении

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.