Design and build a BookMyShow-like web application that allows users to browse events (movies, shows, plays), view details, select seats, and book tickets online. The application is intended for learning, assessment, and portfolio demonstration purposes, focusing on real-world Angular architecture and best practices.
The goal is not to replicate BookMyShow fully, but to implement a simplified yet realistic ticket booking platform.
- End Users (Customers): Users who browse events and book ticketspractices
Assumptions
- Backend APIs are mocked or simulated (JSON server / static APIs)
- Payment gateway is simulated (no real transactions)
- Authentication uses dummy credentials or mock JWT
- Single-country and single-currency support
Constraints -Use Bootstrap
- Angular 20+ must be used -use standalone comopnent -dont use ngmodule
- RxJS must be used for async data handling
- Lazy loading must be implemented
- No server-side rendering (SSR) required
- No mobile app; web application only
User Capabilities
- User registration and login
- Browse movies/events by category and city
- View event details (description, cast, duration, rating)
- View available shows and timings
- Select seats and number of tickets
- Book tickets and view booking confirmation
- View booking history
- Modular and scalable Angular architecture
- Clean separation of concerns
- Responsive UI
- Maintainable folder structure
- Strong typing and RxJS best practices
- Route-level access control
- Error handling and loading states
User Flow – Booking a Ticket
- User logs in
- Selects city
- Browses movies/events
- Selects a movie
- Chooses show time
- Selects seats
- Proceeds to payment
- Views booking confirmation
Admin Flow – Managing Shows
- Admin logs in
- Creates/updates a movie
- Assigns venue and show timings
- Sets seat pricing
- User authentication (login/register/logout)
- City-based event browsing
- Movie and event listing
- Event detail page
- Show timing selection
- Seat selection UI
- Booking confirmation page
- Booking history
- Ticket price calculation
- Convenience fee calculation
- Mock payment processing
- Booking confirmation
- Ticket summary generation
- Booking success message
- Payment failure message
- Session timeout handling
- Optional email/SMS simulation (UI only)
- Role-based access (User vs Admin)
- Route guards
- Token-based authentication (mock JWT)
- Secure route segregation
- AuthModule
- UserModule
- MoviesModule
- BookingModule
- PaymentModule
- CoreModule
- SharedModule
Container (Smart) Components
- MovieListContainer
- MovieDetailContainer
- BookingContainer
- SeatSelectionContainer
- AdminDashboardContainer
Presentational (Dumb) Components
- MovieCardComponent
- ShowTimeComponent
- SeatComponent
- BookingSummaryComponent
- Button / Modal components
- RoleBasedAccessDirective
- HighlightSeatDirective
- ClickOutsideDirective
- DurationPipe
- PriceFormatPipe
- RatingPipe
- FilterByCityPipe
- AuthService
- UserService
- MovieService
- BookingService
- PaymentService
- AdminService
- NotificationService
- AuthGuard
- AdminGuard
- BookingGuard
- AuthTokenInterceptor
- ErrorHandlingInterceptor
- LoadingInterceptor
- Reusable UI components
- Common pipes and directives
- Form validators
- Constants and enums
- Clean folder structure
- README explaining setup and assumptions
- Screenshots or short demo (optional)
- Focus on architecture over styling