Skip to content

ClosedEyeVisuals/api-donation

Repository files navigation

REST API веб-сервиса по сбору денежных средств

Тестовое задание Реализовать веб-сервис на базе Django, предоставляющий CRUD REST API для групповых денежных сборов.

Приложение должно содержать как минимум три сущности:

  • User (модель Пользователя системы, можно использовать стандартного)
  • Payment (модель описывающая Платёж для сбора)
  • Collect (модель непосредственно Группового денежного сбора).

Групповой сбор должно должен содержать как минимум:

  • автора сбора
  • название
  • повод (один из нескольких на выбор, например, “день рождение”, “свадьба” и т.д.)
  • описание
  • сумму, которую запланировали собрать (можно сделать “бесконечный” сбор, вез верхней границы)
  • сумму, которую собрали на текущий момент
  • сколько человек уже сделало пожертвования
  • обложку сбора (картинка)
  • дата и время завершения сбора
  • лента сбора (список пожертвований от других пользователей: сумма, дата и время, ФИО пользователя).

При создании Группового сбора или Платежа по сбору на почту автора/ донатера должно прийти письмо с информацией об успешном создании сбора (отправке платежа). Все эндпоинты соответствуют REST и покрыты документацией Swagger.

Требования:

  1. Данные хранятся в реляционной БД, взаимодействие с ней осуществляется посредством Django ORM.
  2. API реализовано на базе Django REST Framework.
  3. Реализовано кэширование данных, возвращаемых GET-эндпоинтом, с обеспечением достоверности ответов.
  4. Проект должен быть докеризирован и запускаться через docker compose up.
  5. Должна присутствовать Management command для наполнения БД моковыми данными (несколько тысяч).

Как запустить проект с помощью docker-контейнеров:

Клонировать репозиторий и перейти в него в командной строке:

git clone git@github.com:ClosedEyeVisuals/api-donation.git

Cоздать .env файл по примеру:

SECRET_KEY='sOme_SeCR3t_KeY'
DEBUG=False
ALLOWED_HOSTS=host1, host2

Запустить контейнеры:

docker compose up

Выполнить миграции:

docker compose exec backend python manage.py migrate

Наполнить БД тестовыми данными

docker compose exec backend python manage.py load_collects

Документация с полным перечнем эндпоинтов доступна после запуска проекта по адресу:

http://localhost:8000/api/swagger/

Автор

About

REST API веб-сервиса по сбору денежных средств.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published