Перейти к содержимому
Сергей Артамонов
  • Backend

Онлайн-кинотеатр Film!

Сервис онлайн-афиши: каталог фильмов, выбор сеанса и мест, корзина и оформление заказа.

  • NestJS
  • MongoDB
  • PostgreSQL

Задача и назначение

Нужно было провести пользователя от афиши до купленного билета и при этом не допустить, чтобы одно место продали дважды.

Что реализовано

  • Пошаговое бронирование в модалке: сеанс, схема зала, корзина и контакты
  • REST API каталога, расписания и заказа с проверкой границ зала и занятости мест
  • Атомарная бронь: занятость проверяется и записывается в одной транзакции, одно место нельзя продать дважды

Особенности реализации

Сначала произведена реализация бэкенда с использованием MongoDB, затем осуществлена миграция на PostgreSQL. Связь OneToMany, бронь в транзакции с блокировкой строки.

Результат

Работающее приложение кинотеатра с афишей, выбором мест и заказом билетов. Бэкенд покрыт e2e-тестами на каталог, расписание и конфликтные брони.