Full-stack booking platform for sports courts with Telegram authentication, dynamic pricing, and payment integration.
- Backend: Python 3.11 + FastAPI + SQLAlchemy async + Alembic + asyncpg
- Frontend: React + Vite (Telegram WebApp)
- Admin Panel: React + Vite
- Database: PostgreSQL
- Auth: Telegram WebApp authentication
- Payments: Multicard integration
- Deploy: Docker
backend/
src/
models/ # SQLAlchemy models (users, courts, bookings, pricing_rules, amenities)
schemas/ # Pydantic schemas (auth, courts, bookings, admin)
routes/ # API endpoints (auth, courts, bookings, payments, admin)
services/ # Business logic (pricing, Telegram auth, Multicard payments)
middleware/ # Auth & rate limiting
migrations/ # Alembic migrations
tests/ # 17 test files (models, routes, services, integration)
frontend/ # React SPA (Telegram Mini App)
admin-panel/ # Admin dashboard
- Court Management — courts with images, amenities, availability schedules
- Dynamic Pricing — configurable pricing rules (peak/off-peak, weekday/weekend)
- Booking Flow — real-time availability, conflict detection, multi-user support
- Telegram Auth — WebApp authentication (initData HMAC-SHA256)
- Payments — Multicard payment integration
- Admin Panel — court management, booking overview, user management
- Tests — integration tests covering full booking flow, multi-user conflicts, cross-user access prevention
cp backend/.env.example backend/.env
cd backend && pip install -r requirements.txt
alembic upgrade head
uvicorn src.main:app --reload