Skip to content

API Service for helping people doing workout. Course project.

Notifications You must be signed in to change notification settings

neekrasov/workout_helper

Repository files navigation

Веб-сервис для целевого поиска спортивных площадок в городе Москве.

Технический стек

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 . Там же можно посмотреть разделение на слои, диаграмму классов, диаграмму вариантов использования, схемы отдельных сценариев и др.

Дополнительно

Протестирована работа приложения по полному циклу, а также валидация анемичных моделей.

Развертывание

  1. Клонировать репозиторий.
~$ git clone https://github.com/neekrasov/workout_helper.git
  1. Создать файлы .env на примере корневой директории и директории /docker.
~$ mv .env.example .env && mv docker/.env.example docker/.env
  1. Поднять контейнеры.
~$ make compose-up
  1. Открыть в браузере http://localhost/api/docs .

Releases

No releases published

Packages

No packages published