/cash_fees

Rest API для веб-сервиса групповых денежных сборов.

Primary LanguagePythonMIT LicenseMIT

cash_fees

Описание

Rest API для веб-сервиса групповых денежных сборов.


Примечания

Платежи интегрированы через сервис ЮKassa, ссылка на SDK.

В проекте доступна swagger-документация по адресу /api/v1/docs/.

Эндпоинты пользователя ограничены для простоты восприятия.

Поле cover может принимать как base64-строку, так и slug дефолтной обложки.

Эндпоинт DELETE: /api/v1/collectings/{slug}/ не удаляет объект, а делает его неактивным.


Как запустить

Через Docker

  • 1. Создать и заполнить файл .env в папке infra по шаблону .env.example.
  • 2. Если имеется утилита Make, в корне проекта выполнить команду make project-init,

    иначе

    выполнить команду docker compose -f ./infra/docker-compose.yml --env-file ./infra/.env up -d.

    Docker соберёт контейнеры с postgreSQL, Сelery, приложением, выполнит миграцию,

    заполнит БД тестовыми платежами, групповыми сборами, дефолтными обложками, поводами для сбора, некоммерческими организациями, регионами, решаемыми проблемами и пользователями, создаст superuser-a.

    После сервер будет доступен по адрессу: http://127.0.0.1:8000/.

  • Примечание

    3. В контейнер с приложением проброшен volume с кодом, изменение кода в проекте обновляет его в контейнере и перезапускает сервер.

    В mock-данныx генерируются изображения, на слабой вычислительной машине это может затянуть сбор контейнера.

    Для корректировки данной ситуации уменьшите количество/размер изображений в management command.

  • 4. Последующие запуски проекта осуществляются через команду make project-start

    или

    docker compose -f ./infra/docker-compose-start.yml --env-file ./infra/.env up -d

Через консоль

  • 1. Создать и заполнить файл .env в папке infra по шаблону .env.example.
  • 2. Создать БД в postgreSQL.

  • 3. Установить poetry pip install poetry.

  • 4. Создать и активировать виртуальную оболочку poetry shell.

  • 5. Установить зависимости poetry install.

  • 6. Выполнить миграцию БД python src/manage.py migrate.

  • 7. Создать superuser-a python src/manage.py createsuperuser --noinput.

  • 8. Заполнить БД тестовыми данными(платежи, групповые сборы, дефолтные обложки, поводы для сбора, некоммерческие организации, регионы, решаемые проблемы и пользователи) python src/manage.py test_data.

  • Примечание

    В mock-данныx генерируются изображения, на слабой вычислительной машине это может быть продолжительно.

    Для корректировки данной ситуации уменьшите количество/размер изображений в management command.

    В проекте брокером сообщений и хранилищем для кэша используется Redis.

  • 9. Запустить сервер python src/manage.py runserver.

  • 10. Сервер будет доступен по адрессу: http://127.0.0.1:8000/.

  • 11. В новой консоле запустить worker cd src/ && celery -A config worker -l debug --without-gossip --without-mingle --without-heartbeat -Ofair --pool=solo.

  • 12. В новой консоле запустить beat cd src/ && celery -A config beat --loglevel=DEBUG.


Стек