Проект представляет собой бэкенд-систему для платформы обмена валют с двумя личными кабинетами: Личный Кабинет Пользователя и Личный Кабинет Администратора.
Пользователь авторизуется по логину и паролю, получая JWT токен для доступа к защищенным эндпоинтам.
- Просмотр и редактирование информации о Пользователе;
- Просмотр списка собственных счетов с отоборажение для каждого счета: номера счета, валюты счета, баланса;
- Перевод средств между своим счетами и на счет другого пользователя. Если валют счета отправителя и счета получателя отличаются - происходит автоматическая конвертация средств по текущему курсу в системе. При переводе средств производится отправка(в фоновом режиме посредством Celery) смс-уведомления получателю;
- Просмотр списка транзакций с возможностью фильтрации и сортировки
- Просмотр текущий курсов валют к рублю: Доллар, Евро, Юани;
- Пополнение счета обменника с банковской карты посредством сервиса YooKassa;
- Просмотр списка заявок на ввод-вывод средств;
- Отображение списка всех счетов всех пользователей с возможностью фильтрации и сортировки;
- Отображение списка всех транзакций всех пользователей с фильтрацией и сортировкой;
- 🔐 Безопасная аутентификация (JWT, OAuth2)
- 💱 Автоматическое обновление курсов валют
- 🔄 Асинхронные задачи (Celery, RabbitMQ)
- 🐳 Контейнеризация (Docker Compose)
- 🔍 Документация API (Swagger/OpenAPI, ReDoc)
- 📈 Кэширование (Redis)
- 📧 SMS-уведомления
- 💳 Интеграция с YooKassa API
POST /auth/token/login/
- Получение токена аутентификации (требует username/password)POST /auth/token/logout/
- Выход из системы (инвалидация токена)
POST /api/v1/users/signup
- Регистрация нового пользователя с дополнительной информациейGET /api/v1/users/profile/
- Получение профиля пользователя (имя, телефон, настройки)PUT /api/v1/users/profile/
- Полное обновление профиля пользователяPATCH /api/v1/users/profile/
- Частичное обновление профиля пользователя
GET /api/v1/users/accounts/
- Список счетов пользователя с пагинацией
GET /api/v1/users/transactions/
- Список транзакций пользователя ( входящие/исходящие)POST /api/v1/users/transactions/transfer_funds/
- Перевод средств между счетами ( своими или контрагента)
GET /api/v1/users/applications/
- Список заявок пользователя на ввод/вывод средствPOST /api/v1/users/applications/
- Создание заявки на ввод/вывод средств через YooKassaPOST /api/v1/users/applications/webhook_handler/
- Обработка вебхука от YooKassa для обновления статуса платежа
GET /api/v1/finance/get_rates/
- Получение актуальных курсов валют (RUR, USD, EUR, CNY)
GET /api/v1/admins/accounts/
- Список всех счетов пользователей с фильтрацией и сортировкойPATCH /api/v1/admins/accounts/{id}/
- Изменение баланса счета пользователя (только для админов)
GET /api/v1/admins/transactions/
- Список всех транзакций в системе с фильтрацией и сортировкой
GET /api/schema/
- OpenAPI схема в JSON форматеGET /api/schema/swagger-ui/
- Интерактивный Swagger UI интерфейс
GET /admin/
- Django Admin панель для управления данными
DRF_Backend_Exchanger/
├── 📁 admins/ # Личный Кабинет Администратора
│ ├── 📄 views.py # API представления админа
│ ├── 📄 urls.py # URL маршруты админ-панели
│ └── 📁 migrations/ # Миграции базы данных
│
├── 📁 config/ # Конфигурация Django
│ ├── 📄 settings.py # Настройки проекта
│ ├── 📄 urls.py # Главные URL маршруты
│ ├── 📄 celery.py # Конфигурация Celery
│ └── 📄 wsgi.py # WSGI конфигурация
│
├── 📁 common/ # Общие компоненты
│ ├── 📄 models.py # Базовые модели
│ └── 📄 exceptions.py # Кастомные исключения
│
├── 📁 finance/ # Финансовый модуль
│ ├── 📄 models.py # Модели: Account, Transaction, Currency, Application
│ ├── 📄 views.py # API представления финансов
│ ├── 📄 serializers.py # Сериализаторы для API
│ ├── 📄 urls.py # URL маршруты финансов
│ ├── 📄 filters.py # Фильтры для списков
│ ├── 📄 pagination.py # Настройки пагинации
│ ├── 📄 tasks.py # Celery задачи
│ ├── 📄 signals.py # Django сигналы
│ ├── 📄 admin.py # Админ-панель моделей
│ └── 📁 services/ # Бизнес-логика
│ ├── 📄 finance_services.py # Финансовые операции
│ └── 📄 yookassa.py # Интеграция с YooKassa
│
├── 📁 users/ # Личный Кабинет Пользователя
│ ├── 📄 models.py # Модели: User, UserAdditionalInfo
│ ├── 📄 views.py # API представления пользователей
│ ├── 📄 serializers.py # Сериализаторы пользователей
│ ├── 📄 urls.py # URL маршруты пользователей
│ ├── 📄 services.py # Сервисы пользователей
│ ├── 📄 admin.py # Админ-панель пользователей
│ └── 📁 migrations/ # Миграции базы данных
│
├── 📁 nginx/ # Конфигурация Nginx
│ ├── 📄 default.conf # Nginx конфигурация
│ └── 📄 Dockerfile # Dockerfile для Nginx
│
├── 📄 docker-compose.yml # Docker Compose конфигурация
├── 📄 Dockerfile # Dockerfile для Django
├── 📄 manage.py # Django management script
├── 📄 pyproject.toml # Poetry конфигурация
├── 📄 poetry.lock # Poetry lock файл
├── 📄 env.example # Пример переменных окружения
└── 📄 README.md # Документация проекта
- Создайте папку с проектом и склонируйте репозиторий:
mkdir DRF_Backend_Exchanger
cd DRF_Backend_Exchanger
git clone https://github.com/aquaracer/DRF_Backend_Exchanger.git
-
Настройте переменные окружения в файле .env.
-
Соберите и запустите контейнеры:
docker-compose up --build
Приложение будет доступно по следующим адресам:
- API:
http://localhost:8000
- Swagger UI:
http://localhost:8000/api/schema/swagger-ui/