How zubiakhanam/mediaamp-booking-website works
MediaAMP is a movie-ticket booking application. A customer browses movies, chooses a show, views live seat availability, selects seats, and confirms a multi-seat booking. React calls FastAPI route handlers, which query SQLAlchemy-backed MySQL data. Booking requests are delegated to a transactional service that validates the user, show, and seats, locks seats deterministically, calculates prices, writes booking records, and returns confirmation or conflict errors. The sampled source directly supports the main browsing and booking workflow; optional operational details are omitted.
Components 14
React Client
- Movie Browser
frontend/src/App.jsx - Show Selection
frontend/src/App.jsx - Seat Booking UI
frontend/src/App.jsx - Booking Confirmation
frontend/src/App.jsx
FastAPI API
- FastAPI Application
backend/app/main.py - Movie Routes
backend/app/routes/movies.py - Show Routes
backend/app/routes/shows.py - Seat Routes
backend/app/routes/seats.py - Booking Routes
backend/app/routes/bookings.py
Booking Domain
- Booking Service
backend/app/services/booking_service.py
Persistence Layer
- Booking Models
backend/app/models.py - Database Session
backend/app/database.py - MySQL Database
Other components
- Customer
Connections 27
- Customer → Movie Browser: browses movies
- Customer → Show Selection: chooses show
- Customer → Seat Booking UI: selects seats
- Movie Browser → FastAPI Application: fetches movies
- Show Selection → FastAPI Application: fetches shows
- Seat Booking UI → FastAPI Application: fetches seats
- Seat Booking UI → FastAPI Application: submits booking
- FastAPI Application → Movie Routes: dispatches requests
- FastAPI Application → Show Routes: dispatches requests
- FastAPI Application → Seat Routes: dispatches requests
- FastAPI Application → Booking Routes: dispatches requests
- Movie Routes → Database Session: gets session
- Show Routes → Database Session: gets session
- Seat Routes → Database Session: gets session
- Booking Routes → Booking Service: calls service
- Booking Service → Database Session: runs transaction
- Movie Routes → Booking Models: queries movies
- Show Routes → Booking Models: queries shows
- Seat Routes → Booking Models: queries seats
- Booking Service → Booking Models: locks and writes
- Database Session → MySQL Database: reads and writes
- Booking Routes → FastAPI Application: returns booking
- FastAPI Application → Booking Confirmation: returns confirmation
- FastAPI Application → Seat Booking UI: returns availability
- FastAPI Application → Show Selection: returns shows
- FastAPI Application → Movie Browser: returns movies
- FastAPI Application → Seat Booking UI: returns errors