- Чистая архитектура (выделен домен, прикладной слой, инфраструктурный слой и презентационный слой, выстроен модульный монолит)
- Некоторые паттерны из 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)
Операции:
- Регистрация
- Подтверждение почты
- Вход в аккаунт
- Чтение
- FastAPI
- SQLAlchemy (asyncpg)
- Pydantic
- JWT Auth
- Docker
- PostgreSQL
- aiohttp
- Alembic
Проект распространяется под лицензией GPLv3