Skip to content

SlavaKlkv/wallet

Repository files navigation

Wallet


Описание

Wallet — это сервис, где пользователь может пополнять свой кошелек,
снимать с него средства и проверять баланс.

Архитектура и стек

  • Стек: Django, DRF, PostgreSQL, Docker, pytest.
  • Архитектура:
    • backend/ — код сервиса
    • nginx/ — настройки прокси
    • tests/ — тесты
    • docker-compose.yml — запуск в контейнерах (Docker Compose)
    • docker-compose.production.yml — продакшен-конфигурация

Установка

Как развернуть проект на локальной машине

  1. Клонируйте репозиторий:

    git clone https://github.com/SlavaKlkv/wallet.git

    Перейдите в корень проекта:

     cd wallet
  2. Создайте и активируйте виртуальное окружение:

    python -m venv venv

    Для Linux/macOS

    source venv/bin/activate

    Для Windows:

    venv\Scripts\activate
  3. Установите зависимости:

    pip install -r backend/requirements.txt
  4. Создайте и заполните .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

  1. Примените миграции
   python backend/manage.py migrate
  1. Запуск тестов
   pytest

Запуск через Docker Compose

Запуск приложения

   docker compose up

Для запуска без пересборки образов с пересозданием контейнеров даже,
если не было изменений:

   docker compose up --build --force-recreate

Для пересборки всех образов без использования кеша:

   docker compose build --no-cache
   docker compose up

Остановка и удаление всех контейнеров

   docker compose down

Примеры API-запросов

Получить баланс

GET /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