Веб-сервис на базе Django, предоставляющий CRUD REST API для групповых денежных сборов.
Приложение содержит три сущности: Пользователь системы, Платёж для сбора и Групповой денежный сбор.
Групповой сбор содержит: автора сбора, название, обложку, повод, описание, запланированную сумму, собранную сумму, количество донатеров, дату и время завершения сбора, а также ленту сбора (список пожертвований).
При создании Группового сбора или Платежа для сбора на почту автора/донатера приходит письмо с информацией об успешном создании сбора/отправке платежа.
Реализовано кэширование данных, возвращаемых GET эндпоинтом.
Выполнено в рамках тестового задания Backend Python (ProninTeam).
- Склонируйте репозиторий:
git clone git@github.com:esfiro4ka/group_fundraise.git
cd group_fundraise
- Перейдите в infra и создайте .env файл:
cd infra
touch .env
- Заполните по примеру своими значениями: скопируйте этот файл
Запустите контейнеры с проектом следующей командой:
docker compose up -d
Создайте суперюзера командой:
docker compose exec group-fundraise-web python manage.py createsuperuser
Наполните БД моковыми данными:
docker compose exec group-fundraise-web python manage.py load_mock_data [вставьте количество]
Замените '[вставьте количество]' на необходимое количество моковых данных. Например, команда может выглядеть, как: docker compose exec group-fundraise-web python manage.py load_mock_data 1000
.
Создайте таблицу в Google Sheets.
Выберите существующий проект или создайте новый проект, а также сервисный аккаунт для него в Google Cloud Console.
Запомните значение автоматически присвоенного Идентификатора сервисного аккаунта. После этого создайте ключ в формате JSON и поместите его в папку infra. Откройте файл для редактирования и в поле 'client_email' введите значение Идентификатора.
Перейдите в настройки проекта в Google Cloud Console и включите Google Sheets API.
Выгрузите данные из БД командой в терминале:
docker compose exec group-fundraise-web python manage.py google_export_data
Документация сгенерирована автоматически при помощи drf-spectacular. После запуска проекта она будет доступна по ссылкам: