Wallet — это сервис, где пользователь может пополнять свой кошелек,
снимать с него средства и проверять баланс.
- Стек: Django, DRF, PostgreSQL, Docker, pytest.
- Архитектура:
backend/— код сервисаnginx/— настройки проксиtests/— тестыdocker-compose.yml— запуск в контейнерах (Docker Compose)docker-compose.production.yml— продакшен-конфигурация
-
Клонируйте репозиторий:
git clone https://github.com/SlavaKlkv/wallet.git
Перейдите в корень проекта:
cd wallet -
Создайте и активируйте виртуальное окружение:
python -m venv venv
Для Linux/macOS
source venv/bin/activateДля Windows:
venv\Scripts\activate
-
Установите зависимости:
pip install -r backend/requirements.txt
-
Создайте и заполните
.env.
| Переменная | Описание | Пример |
|---|---|---|
| USE_SQLITE | Использовать SQLite вместо PostgreSQL (1 — да, 0 — нет) | 0 |
| DEBUG | Переключатель режима отладки Django | True |
| CSRF_TRUSTED_ORIGINS | Доверенные домены для CSRF (через запятую) | https://site-domen.com |
| SECRET_KEY | Секретный ключ Django | your_secret_key |
| POSTGRES_USER | Пользователь PostgreSQL | postgres_user |
| POSTGRES_PASSWORD | Пароль для PostgreSQL | postgres_password |
| POSTGRES_DB | Название базы данных PostgreSQL | db_name |
| DB_HOST | Хост для подключения к БД (db — docker, localhost — локально) | db |
| DB_PORT | Порт для подключения к БД | 5432 |
| COMPOSE_BAKE | Ускоряет сборку Docker Compose при поддержке bake | true |
| MEDIA_ROOT | Путь для хранения медиафайлов при запуске вне локального окружения | /media |
- Примените миграции
python backend/manage.py migrate- Запуск тестов
pytestЗапуск приложения
docker compose upДля запуска без пересборки образов с пересозданием контейнеров даже,
если не было изменений:
docker compose up --build --force-recreateДля пересборки всех образов без использования кеша:
docker compose build --no-cache
docker compose upОстановка и удаление всех контейнеров
docker compose downGET /api/v1/wallets/uuid/
Ответ:
{
"balance": 5250.37
}POST /api/v1/wallets/uuid/operation/
Тело запроса:
{
"operation_type": "deposit",
"amount": 200
}Ответ:
{
"balance": 5450.37
}Пример формата ошибок для 400, 401, 403, 404:
{
"detail": "Недостаточно средств."
}MIT