A full-stack web application for booking movie tickets online.
- User Authentication & Authorization: Users can register, log in, and view their booking history. JWT-based authentication is used.
- Movie Listings: View movie details including title, description, genre, showtimes, and ratings.
- Search and Filter: Users can search for movies by name or filter by genre and rating.
- Seat Selection: Users can select available seats for a movie showtime and reserve them.
- Booking Management: Users can manage their booking history after confirming a ticket purchase.
- Admin Panel: Admin users can manage movie listings, showtimes, and view booking statistics.
- React.js: The main JavaScript library for building the user interface.
- React Router: Used for navigation and routing within the app.
- Axios: A promise-based HTTP client used for making API calls.
- Material-UI or Bootstrap: CSS frameworks used for styling the app and creating responsive layouts.
- Redux or Context API (optional): Used for state management in React, allowing efficient data flow and handling of app-wide states.
- Node.js + Express: The backend server is built with Node.js, using Express.js for building RESTful APIs.
- JWT-based Authentication: JSON Web Tokens (JWT) are used for secure login/signup and managing user sessions.
- RESTful APIs: APIs are designed to manage movie listings, user information, and bookings.
- Integration with MongoDB: MongoDB is used to store and manage the app's data, including movie details, user profiles, and booking history.
- MongoDB: A NoSQL database used to store data in a flexible, JSON-like format.
- Mongoose ORM: Mongoose is an Object Data Modeling (ODM) library for MongoDB and Node.js. It provides a schema-based solution to model data in MongoDB.
The frontend consists of several pages and components to interact with the user:
- Home Page: Displays a list of available movies with options to view details and select showtimes.
- Movie Details Page: Allows the user to select a showtime and reserve seats.
- Booking Confirmation: Once seats are selected, the user confirms the booking and proceeds to payment.
- User Profile & History: Displays the user's personal information and previous bookings.
- Search and Filter: Allows users to search and filter movies by genre, rating, or name.
The backend provides APIs for user authentication, movie management, and booking creation:
- User Authentication: JWT is used for secure authentication during login and signup.
- Movie Management: Admins can add, edit, and delete movies and showtimes.
- Booking Management: Users can create a booking by selecting available seats for a movie showtime.