Учебный проект с банковским интерфейсом и SmartDebit-флоу.
frontend/- React + TypeScript + Vite.api/,smartdebit_core/,manage.py- Django backend.db/schema.sql- SQL-схема данных.
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 runserverBackend поднимется на http://127.0.0.1:8000.
В новом терминале:
cd frontend
npm install
npm run devFrontend поднимется на 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.sqlite3DB_NAME=db.sqlite3
Для PostgreSQL задайте:
DB_ENGINE=django.db.backends.postgresqlDB_NAME=smartdebit_dbDB_USER=smartdebit_userDB_PASSWORD=smartdebit_passwordDB_HOST=localhostDB_PORT=5432
- Создайте проект и базу в Neon.
- Скопируйте строку подключения
DATABASE_URL.
- В репозитории уже есть
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_KEYDJANGO_DEBUG=FalseDATABASE_URL=<из Neon>DB_SSL_REQUIRE=TrueDJANGO_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 выполняются автоматически на старте сервиса.
- Импортируйте проект
frontend/в Vercel. - Добавьте env:
VITE_API_BASE_URL=https://<render-host>/api/v1VITE_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/accessJWT живёт 1 час,refreshJWT живёт 7 дней- Все API-эндпоинты, кроме
/api/v1/auth/*и/api/health/, требуют заголовок:
Authorization: Bearer <access_token>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 |