Back to projects

Вместе

Backend Case Study // 2026
REST API для групповых денежных сборов.

Fundraising API — сервис групповых денежных сборов

  Fundraising API — REST API для создания и управления   групповыми денежными сборами. Проект разработан в рамках тестового задания.

Пользователи могут создавать сборы на благотворительность, свадьбу,   день рождения или другую цель, принимать пожертвования и отслеживать   текущий прогресс. Для каждого сбора можно указать название, описание,   обложку, целевую сумму и дату завершения.

Основные возможности

  • создание, просмотр, редактирование и удаление сборов;
  • создание и управление платежами;
  • просмотр списка пользователей и карточки пользователя;
  • автоматический подсчёт собранной суммы;
  • подсчёт количества уникальных участников сбора;
  • проверка срока завершения сбора;
  • запрет платежей сверх установленной целевой суммы;
  • email-уведомления при создании сбора и совершении платежа;
  • пагинация списка платежей;
  • интерактивная документация API;
  • генерация демонстрационных данных;
  • запуск проекта через Docker Compose.

Архитектура и бизнес-логика

Логика работы с платежами вынесена в отдельный сервисный слой.   Представление данных, обработка HTTP-запросов и бизнес-правила разделены   между отдельными компонентами приложения.
Такой подход упрощает поддержку проекта, тестирование и дальнейшее   расширение функциональности.
Для защиты от ошибок при одновременном создании нескольких платежей   используются транзакции и блокировка изменяемого сбора.

Перед сохранением платежа система повторно проверяет актуальную сумму   сбора. Поэтому несколько одновременных запросов не смогут превысить   установленную цель.
После создания, изменения или удаления платежа система автоматически   пересчитывает общую собранную сумму и количество уникальных участников.

Кэширование

Ответы на GET-запросы к спискам и отдельным объектам временно сохраняются   в кэше. Это уменьшает количество повторных обращений к базе данных и   ускоряет получение данных.
После изменения сбора или платежа связанные данные удаляются из кэша,   чтобы пользователи всегда получали актуальную информацию.

Email-уведомления

При создании нового сбора автор получает уведомление по электронной почте.   После совершения платежа уведомление отправляется пользователю,   который поддержал сбор.
Отправка письма выполняется только после успешного сохранения данных.   Если операция была отменена из-за ошибки, уведомление не отправляется.

Документация и тестирование

Для проекта сформирована интерактивная документация Swagger UI.   Она содержит доступные маршруты, параметры запросов, форматы ответов   и позволяет проверять работу API прямо из браузера.
Основная бизнес-логика проекта покрыта автоматическими тестами.
Проверяются операции со сборами и платежами, ограничения целевой суммы,   завершённые сборы, пересчёт итогов, кэширование и конкурентные запросы.
Также настроена автоматическая проверка проекта при добавлении изменений   в репозиторий.

Результат

В результате создано документированное и протестированное REST API   с разделённой архитектурой, кэшированием, транзакционной обработкой   платежей и защитой от конкурентных запросов.

Проект можно запустить локально или развернуть вместе с необходимыми   сервисами через Docker Compose.

System Architecture & UI

Tech Infrastructure

Python Django Django REST Framework PostgreSQL Redis Celery Docker Docker Compose drf-spectacular Swagger UI pytest Coverage GitHub Actions

External Resources

Backend Matters?

Давайте обсудим ваши задачи или новый проект.

Start a Conversation