Python/asyncio
, Blacksheep
, Celery
, SQLAlchemy (PostgreSQL)
, Docker / docker-compose
, bs4
, selenium
, pytest
Огранизована регистрация и аутентификация пользователей (сессии/redis). Пользователь может добавлять в избранное площадки, которые ему понравились, просматривать список площадок, которые он добавил в избранное, удалять площадки из избранного.
Пользователю доступны следующие полезные предметные методы:
- Поиск площадок по параметрам.
- Поиск ближайших площадок по заданным координатам.
- Получение рекомендаций исходя из выбранных площадок.
Администратору доступна команда (make compose-update-dataset) с помощью которой он может обновить данные о площадках и сделать перерасчёт некоторых обязательных для работы программы параметров.
Все CPUBound задачи выполняются отдельно от основного потока. Для этого используется Celery. Все I/OBound задачи выполняются в основном потоке. Для этого используется Blacksheep.
Подробнее про архитектуру можно посмотреть в docs/coursework.pdf . Там же можно посмотреть разделение на слои, диаграмму классов, диаграмму вариантов использования, схемы отдельных сценариев и др.
Протестирована работа приложения по полному циклу, а также валидация анемичных моделей.
- Клонировать репозиторий.
~$ git clone https://github.com/neekrasov/workout_helper.git
- Создать файлы .env на примере корневой директории и директории
/docker
.
~$ mv .env.example .env && mv docker/.env.example docker/.env
- Поднять контейнеры.
~$ make compose-up
- Открыть в браузере http://localhost/api/docs .