A MERN Stack mini project built as part of CBA training program.
RevBookMyShow is a movie ticket booking system that allows customers to browse movies, check show timings, select seats, and book tickets. Theatre Administrators can manage theatres, screens, movies, shows, pricing, and monitor bookings.
| Member | Role / Epic | Branch Prefix |
|---|---|---|
| Rajendra | Project Architecture & Authentication | feature/project-setup-auth |
| Madhusudan | Movie Management Module | feature/movie-management |
| Samarth | Theatre & Screen Management Module | feature/theatre-screen-management |
| Samrudhi | Show & Booking Management Module | feature/show-booking-management |
| Spoorthy | Reporting & Notification Module | feature/reporting-notification |
| Layer | Technology |
|---|---|
| Frontend | React.js (Vite) |
| Backend | Node.js + Express.js |
| Database | MongoDB + Mongoose |
| Auth | JWT (JSON Web Tokens) |
RevBookMyShow/
├── backend/
│ ├── config/
│ │ └── db.js # MongoDB connection
│ ├── models/
│ │ ├── User.js
│ │ ├── Movie.js
│ │ ├── Theatre.js
│ │ ├── Screen.js
│ │ ├── Seat.js
│ │ ├── Show.js # ticketPrice: { Regular, Premium, VIP }
│ │ ├── Booking.js
│ │ ├── BookingSeat.js
│ │ └── Notification.js
│ ├── controllers/
│ │ ├── authController.js
│ │ ├── movieController.js
│ │ ├── theatreController.js
│ │ ├── showController.js
│ │ ├── bookingController.js
│ │ └── reportController.js
│ ├── routes/
│ ├── middleware/
│ │ └── authMiddleware.js # JWT verify + role check
│ ├── .env # (DO NOT commit this file)
│ └── server.js
├── frontend/
│ ├── src/
│ │ ├── pages/
│ │ │ ├── Login.jsx
│ │ │ ├── Register.jsx
│ │ │ ├── MovieList.jsx # Browse & search movies
│ │ │ ├── MovieDetails.jsx # Movie info + available shows
│ │ │ ├── TheatreList.jsx # Customer theatre browser
│ │ │ ├── TheatreDetail.jsx # Screen & seat viewer (read-only)
│ │ │ ├── SeatSelection.jsx # Seat map + booking flow
│ │ │ ├── BookingHistory.jsx
│ │ │ ├── AdminCreateShow.jsx # Admin Panel (Movies, Shows, Theatres)
│ │ │ └── Reports.jsx # Revenue, Occupancy, Notifications
│ │ ├── components/
│ │ │ └── Navbar.jsx
│ │ ├── services/ # Axios API call functions
│ │ │ ├── authService.js
│ │ │ ├── movieService.js
│ │ │ ├── theatreService.js
│ │ │ ├── showService.js
│ │ │ └── bookingService.js
│ │ ├── App.jsx # All routes defined here
│ │ └── main.jsx
│ ├── index.html
│ └── package.json
├── docs/ # API testing guides per module
├── .gitignore
└── README.md
| Route | Access | Description |
|---|---|---|
/login |
Public | Login page |
/register |
Public | Register page |
/movies |
All users | Browse & search movies |
/movies/:id |
All users | Movie details + available shows |
/theatres |
Customer only | Browse theatres |
/theatres/:id |
Customer only | Theatre screens & seats (read-only) |
/booking |
Customer | Seat selection & booking |
/bookings |
Customer | My booking history |
/admin/show/create |
Admin only | Admin panel (movies, shows, theatres) |
/reports |
All logged-in | Reports (admin) + Notifications (customer) |
- Node.js v18+
- MongoDB (local) or MongoDB Atlas account
- Git
git clone https://github.com/Rajendra0309/Rev-BookMyShow.git
cd Rev-BookMyShowcd backend
npm installCreate a .env file inside backend/:
MONGO_URI=mongodb://localhost:27017/revbookmyshow
JWT_SECRET=your_jwt_secret_key
PORT=5000
Run the backend:
npx nodemon server.jscd frontend
npm install
npm run devRuns on http://localhost:5173
- Browse and search movies (by title, genre, language)
- View available shows per movie grouped by theatre
- Visual seat map with colour-coded Regular / Premium / VIP seats
- Per-seat-type pricing (different price per seat category)
- Booking confirmation with seat breakdown and total
- Booking history and cancellation (before show start only)
- In-app notifications for bookings and cancellations
- Browse theatres and view their screens/seats
| Tab | Manages |
|---|---|
| Movie Management | Add / Edit / Delete movies |
| Show Management | Create / Edit / Cancel shows with per-type pricing |
| Theatre Management | Add/Edit/Delete theatres → screens → configure seats |
# 1. Always pull latest main before starting work
git checkout main
git pull origin main
# 2. Create / switch to your feature branch
git checkout -b feature/your-module-name
# 3. Make changes, then commit
git add .
git commit -m "feat: Day1 - description of what you did (YourName)"
# 4. Push your branch
git push origin feature/your-module-name
# 5. Create a Pull Request on GitHub for reviewSee the /docs folder for detailed API testing guides:
| File | Module |
|---|---|
AUTH_TESTING.md |
Register, Login, Forgot Password |
MOVIE_TESTING.md |
Movie CRUD |
THEATRE_TESTING.md |
Theatre, Screen & Seat management |
BOOKING_TESTING.md |
Show creation & Booking flow |
REPORTS_TESTING.md |
Revenue, Occupancy & Notifications |
Base URL:
http://localhost:5000/api
Frontend URL:http://localhost:5173