АПИ для загрузки/получения/редактирования мемов.
Мем состоит из текста и картинки.
Картинки сохраняются в S3 хранилище.
make dev-storages
- запустить PostgreSQL, MinIOmake dev-app
- запустить приложенияmake down-all
- закрыть приложенияmake down-storages-v
- удалить volume хранилищ
Swagger доступен по адресу http://localhost:8000/api/docs
cd memes/public
- перейти в тестируемую директориюpoetry install --with test
- установить зависимости для тестированияpytest
- запустить тесты
Проект представляет собой два сервиса: PublicAPI и Gateway.
- PublicAPI - публичное апи для действий с мемами.
- Gateway - закрытое апи для взаимодействия с S3 хранилищем.
Приложения построены с оглядкой на чистую архитектуру.
В каждом выделены слои:
domain
- доменlogic
- бизнес-логика: use-cases, interactors (в Gateway отсутствует, т.к. нет необходимости)infra
- репозитории, сервисыpresentation
- представление
В качестве DI-библиотеки применяется Dishka. Конфигурация описана в каждом проекте в пакете container
Полное время работы над проектом составило 8 часов.
- Python3.11
- FastAPI
- MinIO
- PostgreSQL
- Docker
- SQLALchemy
- alembic
- dishka
- pytest
Скриншоты Swagger можно посмотреть в папке ./static/