- Backend
Онлайн-кинотеатр Film!
Сервис онлайн-афиши: каталог фильмов, выбор сеанса и мест, корзина и оформление заказа.
- NestJS
- MongoDB
- PostgreSQL
Задача и назначение
Нужно было провести пользователя от афиши до купленного билета и при этом не допустить, чтобы одно место продали дважды.
Что реализовано
- Пошаговое бронирование в модалке: сеанс, схема зала, корзина и контакты
- REST API каталога, расписания и заказа с проверкой границ зала и занятости мест
- Атомарная бронь: занятость проверяется и записывается в одной транзакции, одно место нельзя продать дважды
Особенности реализации
Сначала произведена реализация бэкенда с использованием MongoDB, затем осуществлена миграция на PostgreSQL. Связь OneToMany, бронь в транзакции с блокировкой строки.
Результат
Работающее приложение кинотеатра с афишей, выбором мест и заказом билетов. Бэкенд покрыт e2e-тестами на каталог, расписание и конфликтные брони.