Skip to content

Latest commit

 

History

History
80 lines (63 loc) · 3.05 KB

README.md

File metadata and controls

80 lines (63 loc) · 3.05 KB

API Приложения zametka

Особенности

  • Чистая архитектура (выделен домен, прикладной слой, инфраструктурный слой и презентационный слой, выстроен модульный монолит)
  • Некоторые паттерны из DDD, например Value Objects или Domain Services
  • Реализован синхронный (сетевой) вариант общения между контекстами с применением паттерна EventEmitter из EDP
  • Хорошее качество кода (mypy --strict проходит без ошибок)
  • Все завернуто в докер
  • Своя аутентификация на базе JWT, выделен отдельный контекст авторизации и доступа
  • Продуманная структура базы данных, используется PostgreSQL
  • Система миграций
  • Оптимизация, эндпоинты в среднем отвечают за меньше чем 100мс
  • Код соответствует PEP8
  • Код придерживается принципов SOLID

Основные сущности в контексте заметок

Note (заметкa):

Поля:

  • Название (строка <= 50 символов)
  • Текст (строка <= 60000 символов)
  • Дата создания (datetime)
  • Айди автора

Операции:

  • Создание
  • Чтение
  • Обновление
  • Удаление
  • Получение заметок пользователя (поддерживаются параметры limit & offset)
  • Полнотекстовый поиск по заметкам пользователя с помошью триграмм (pg_trgm)

User (пользователь):

Поля:

  • Имя (строка >= 2 & <= 40 символов)
  • Фамилия (строка >= 2 & <= 60 символов)
  • Дата регистрации (datetime)
  • Айди авторизационных данных (из контекста авторизации и доступа)

Операции:

  • Регистрация
  • Подтверждение почты
  • Вход в аккаунт
  • Чтение
  • Выход из аккаунта
  • Удаление аккаунта

Основные сущности в контексте авторизации и доступа

UserIdentity (авторизационные данные пользователя):

Поля:

  • Почта (строка <= 100 символов)
  • Захэшированный пароль
  • Активный? (false)

Операции:

  • Регистрация
  • Подтверждение почты
  • Вход в аккаунт
  • Чтение

Стeк технологий backend

  • FastAPI
  • SQLAlchemy (asyncpg)
  • Pydantic
  • JWT Auth
  • Docker
  • PostgreSQL
  • aiohttp
  • Alembic

Лицензия

Проект распространяется под лицензией GPLv3