Skip to content

Andrey-Muratov/SmartDebit

Repository files navigation

SmartDebit

Учебный проект с банковским интерфейсом и SmartDebit-флоу.

Структура

  • frontend/ - React + TypeScript + Vite.
  • api/, smartdebit_core/, manage.py - Django backend.
  • db/schema.sql - SQL-схема данных.

Быстрый старт

1) Backend (Django)

python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
$env:DB_ENGINE="django.db.backends.sqlite3"
$env:DB_NAME="db.sqlite3"
python manage.py migrate
python manage.py seed_data
python manage.py runserver

Backend поднимется на http://127.0.0.1:8000.

2) Frontend

В новом терминале:

cd frontend
npm install
npm run dev

Frontend поднимется на http://127.0.0.1:5173.

Vite уже настроен с proxy /api -> http://127.0.0.1:8000.

Конфиг БД

Рекомендуемый способ для прода и облака — DATABASE_URL.

  • DATABASE_URL=postgres://... (Neon)
  • DB_SSL_REQUIRE=True для облачной PostgreSQL

Если DATABASE_URL не задан, backend использует конфиг через отдельные переменные.

По умолчанию используется SQLite (без доп. настройки):

  • DB_ENGINE=django.db.backends.sqlite3
  • DB_NAME=db.sqlite3

Для PostgreSQL задайте:

  • DB_ENGINE=django.db.backends.postgresql
  • DB_NAME=smartdebit_db
  • DB_USER=smartdebit_user
  • DB_PASSWORD=smartdebit_password
  • DB_HOST=localhost
  • DB_PORT=5432

Deploy: Vercel + Render + Neon

1) Neon (PostgreSQL)

  • Создайте проект и базу в Neon.
  • Скопируйте строку подключения DATABASE_URL.

2) Render (Backend)

  • В репозитории уже есть render.yaml, можно деплоить через Blueprint.
  • Создайте Web Service из этого репозитория.
  • Build Command:
pip install -r requirements.txt && python manage.py collectstatic --noinput
  • Start Command:
python manage.py migrate && python manage.py seed_data && gunicorn smartdebit_core.wsgi:application
  • Добавьте переменные окружения:

    • DJANGO_SECRET_KEY
    • DJANGO_DEBUG=False
    • DATABASE_URL=<из Neon>
    • DB_SSL_REQUIRE=True
    • DJANGO_ALLOWED_HOSTS=<render-host>,api.<your-domain>
    • DJANGO_CORS_ALLOWED_ORIGINS=https://<vercel-host>,https://app.<your-domain>
    • DJANGO_CSRF_TRUSTED_ORIGINS=https://<vercel-host>,https://app.<your-domain>
  • Если используете Neon, обязательно задайте DATABASE_URL в Render env.

  • Миграции и seed выполняются автоматически на старте сервиса.

3) Vercel (Frontend)

  • Импортируйте проект frontend/ в Vercel.
  • Добавьте env:
    • VITE_API_BASE_URL=https://<render-host>/api/v1
    • VITE_AUTH_PROVIDER=backend

Если нужно быстро запустить UI без backend, можно оставить VITE_AUTH_PROVIDER=mock.

Аутентификация и заголовки

  • POST /api/v1/auth/register/
  • POST /api/v1/auth/login/
  • POST /api/v1/auth/token/refresh/
  • access JWT живёт 1 час, refresh JWT живёт 7 дней
  • Все API-эндпоинты, кроме /api/v1/auth/* и /api/health/, требуют заголовок:
Authorization: Bearer <access_token>

Основные API endpoints

  • GET /api/v1/smartdebit/services/
  • GET /api/v1/smartdebit/dashboard/
  • POST /api/v1/smartdebit/toggle/
  • GET /api/v1/payments/
  • POST /api/v1/payments/
  • GET /api/v1/payments/<id>/
  • PATCH /api/v1/payments/<id>/
  • POST /api/v1/payments/<id>/pay/
  • GET /api/v1/notifications/
  • PATCH /api/v1/notifications/<id>/read/
  • GET /api/health/

Тестовые учётные записи

При входе в SmartDebit используйте один из 10 встроенных аккаунтов. У всех имя «Иван Иванов», но у каждого собственная история операций, избранные платежи и просрочки. Баланса достаточно, чтобы погасить все просрочки.

Логин Пароль
user1 user1
user2 user2
user3 user3
user4 user4
user5 user5
user6 user6
user7 user7
user8 user8
user9 user9
user10 user10

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors