Веб-сервис кинотеатра с личным кабинетом и админ панелью

Полноценное веб-приложение для кинотеатра с двумя зонами доступа: пользовательской и административной. Пользователи просматривают фильмы, выбирают места, бронируют сеансы и управляют профилем, администратор управляет залами, фильмами, расписанием сеансов и аналитикой бронирований.

2 зоны доступа: user + admin
10+ основных API-эндпоинтов
24h TTL токена email-верификации
Пользовательская часть

Ключевой функционал

  • Регистрация и вход с проверкой email-подтверждения.
  • Каталог фильмов и страница фильма с доступными сеансами.
  • Выбор мест и создание бронирования на выбранный сеанс.
  • Личный кабинет с историей и отменой бронирований.
  • Проверка авторизации через JWT и защищенные маршруты.
Результат

Пользователь получает понятный сценарий от регистрации до покупки места без перехода на сторонние сервисы.

Административная часть

Управление кинотеатром

  • CRUD для залов, фильмов и киносеансов.
  • Просмотр бронирований по сеансам и в целом по системе.
  • Базовая статистика для оценки загрузки и продаж.
  • Отдельная аутентификация администратора через JWT.
  • Логирование запросов и ошибок с ротацией файлов логов.
Результат

Админ-панель покрывает операционные задачи кинотеатра и ускоряет обновление расписания и контента.

Технологический стек

Backend и инфраструктура

  • Python 3.11+, FastAPI, Uvicorn.
  • SQLAlchemy 2.0 async + asyncpg + PostgreSQL.
  • Pydantic v2 для валидации схем и ответов API.
  • JWT (python-jose), passlib + bcrypt для безопасности.
  • dotenv-конфигурация и SMTP email-подтверждение.
FastAPI PostgreSQL SQLAlchemy Async JWT SMTP
Архитектура проекта

Как организован код

  • app/routers - отдельные роутеры для users/admin/movies.
  • app/database - модели и инициализация базы данных.
  • app/utils - jwt, email и security-утилиты.
  • frontend/users и frontend/admin - разделенные UI-зоны.
  • main_project.py - точка запуска сервера.
Плюс для развития

Структура готова к масштабированию: легко добавлять роли, платежные интеграции и уведомления.