Skip to content

Бэкенд для вебсайта/мобильного приложения обмена валют. Cтек: Python, Django, DRF, PostgreSQL, Celery, RabbitMQ, Redis, Sentry, YookassaAPI, Unittest, Swagger, Docker, Docker-Compose, Token-Auth

Notifications You must be signed in to change notification settings

aquaracer/DRF_Backend_Exchanger

Repository files navigation

Бэкенд для веб-сайта/мобильного приложения обмена валют

Технологический стек: Python, Django, DjangoRestFramework, PostgreSQL, Celery, RabbitMQ, Redis, Sentry, YookassaAPI, Unittest, Swagger, Docker, Docker-Compose

Реализован следующий функционал:

1. Создание таблицы Currency с 4 основными валютами: RUR, EUR, USD, CNY. В таблице должны быть следующие столбцы: краткое название валюты, полное название валюты, код валюты, символ валюты. Создана миграция с данными по 4 основным валютам для автоматического заполнения таблицы при развертывании проекта.

2. Регистрация пользователя. При регистрации пользователя автоматически создается 4 счета в валютах RUR, EUR, USD, CNY посредством Django Signals.

3. Система биллинга. Пользователь может пополнять счет банковской картой. Для реализации использовано API сервиса Yookassa.

4. Аутентификация пользователя по почте и паролю c присвоением токена авторизации.

5. Личный кабинет пользователя со следующими возможностями:

5.1 Отображение и редактирование личных данных пользователя.

5.2 Отображение всех счетов пользователя с указанием балансов и валют.

5.3 Отображение актуальных курсов валют.

5.4 Перевод средств (на свой счет или счет другого пользователя системы). В случае отправки средств другому пользователю - отправляется смс уведомление(если у получателя включена данная опция) в фоновом режиме посредством Celery. В качестве брокера сообщений использован RabbitMQ.

5.5 Отображение списка операций по счетам с возможностью фильтрации и сортировки. Фильтрацию осуществляется по следующим полям:

  • Валюта
  • Тип транзакции(списание/зачисление)
  • Сумма транзакции
  • Диапазон сумм для транзакции
  • Дата создания транзакции
  • Диапазон дат транзакций

Осуществлена возможность сортировки по дате создания транзакции, по сумме транзакции

5.6 Реализована постраничная пагинацию списка операций.

5.7 Логаут из личного кабинет.

5.8 Создание заявки на пополнение счета банковской картой.

6. Личный кабинет Администратора со следующими возможностями:

6.1 Вывод списка счетов всех пользователей с возможностью фильтрации и сортировки.
Осуществлена фильтрацию по следующим полям:

  • Валюта счета (мультиселект)
  • Баланс
  • Диапазон сумм на балансе
  • Номер счета
  • Email пользователя(используется в качестве username)

Осуществлена возможность сортировки по дате создания счета, балансу счета

6.2 Постраничная пагинация списка счетов.

6.3 Вывод списка всех транзакций всех пользователей с возможностью фильтрации и сортировки. Фильтрация осуществляется по следующим полям:

  • Валюта операции (мультиселект)
  • Тип транзакции
  • Сумма транзакции
  • Диапазон сумм для транзакции
  • Дата создания транзакции
  • Диапазон дат транзакций
  • Счет отправителя
  • Счет получателя

Сортировка осуществляется по датe создания транзакции и сумме транзакции.

6.4 Постраничная пагинация списка транзакций.

6.5 Пополнение баланса конкретного счета

7. Автоматическое развертывание приложения происходит через Docker-Compose.

8. Для снижения нагрузки на основную базу используется хранилище Redis(хранения и получения актуальных курсов валют).

9. Ежедневное обновление курсов валют посредством Celery Cron. Для получения актуальных курсов валют используется API внешнего сервиса.

10. Логгирование ошибок осуществляется посредством Sentry.

11. В качестве СУБД используется PostgreSQL.

12. Для автодокументирования API используется Swagger.

13. Модульные тесты к приложению (Unittest).

Сборка контейнера docker

docker-compose --build

Запуск приложения через docker-compose

docker-compose up

Запуск тестов в docker-compose

 docker-compose run --rm api ./manage.py test

About

Бэкенд для вебсайта/мобильного приложения обмена валют. Cтек: Python, Django, DRF, PostgreSQL, Celery, RabbitMQ, Redis, Sentry, YookassaAPI, Unittest, Swagger, Docker, Docker-Compose, Token-Auth

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published