LI
likeinlife/memes
АПИ для загрузки/получения/редактирования мемов.
Description
АПИ для загрузки/получения/редактирования мемов.
Мем состоит из текста и картинки.
Картинки сохраняются в S3 хранилище.
Диаграмма
Запуск
make dev-storages- запустить PostgreSQL, MinIOmake dev-app- запустить приложенияmake down-all- закрыть приложенияmake down-storages-v- удалить volume хранилищ
Swagger
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/
On this page
Languages
Python95.8%Makefile1.3%Mako1.0%Dockerfile1.0%Shell0.9%
Contributors
Created June 19, 2024
Updated July 20, 2024


