AI-powered movie ticket booking platform with smart recommendations, secure authentication, online payments, profile management, and downloadable receipts.
BookMySeats_AI is a full-stack web application for discovering movies, selecting seats, booking tickets, and managing payment history.
Key capabilities include:
- Firebase-powered login (Google and email)
- Guest access mode
- Movie listing and search
- Seat selection and booking workflow
- Razorpay payment integration
- Payment verification and receipt generation (PDF + email)
- AI chatbot assistance for movie/help queries
- Profile, notifications, and feedback modules
- Frontend (Vercel): https://bookmyseatsai.vercel.app
- GitHub Repository: https://github.com/ReshDeen/BookMySeats_AI
- Demo Video: https://drive.google.com/drive/folders/1fO87W4po4obHROGuEp61DLDqPpvNwa-o?usp=sharing
- Presentation/Poster: https://drive.google.com/drive/folders/1kNIY_b7Wujbe8vOSg8bEeodpGoK_OHJ2?usp=sharing
- Documentation: https://drive.google.com/drive/folders/1tNlCqAURCIBRV20HdkOcXjmCT3IFuCtd?usp=sharing
- React 19 (Create React App)
- Firebase Auth
- CSS (custom styling)
- Node.js
- Express.js
- Mongoose
- Nodemailer
- PDFKit
- OpenAI API (chat assistant)
- Razorpay (payments)
- Gmail SMTP (email receipts/notifications)
- MongoDB Atlas
- Sign up / Sign in with email-password
- Google OAuth login using Firebase
- Guest mode entry
- Browse and search recommended movies
- Seat availability and booking
- Razorpay checkout and payment verification
- Payment history and downloadable receipts
- Email receipt send endpoint
- User profile and notifications
- Feedback submission
- Chat assistant endpoint-backed UI
- Frontend calls backend through environment-based API URL resolution.
- Backend exposes REST APIs under /api/* and manages:
- auth lifecycle
- booking lifecycle
- payment + receipt lifecycle
- profile + notifications
- chatbot responses
- MongoDB stores users, bookings, payments, feedback, notifications, and chat history.
- GET /api/health
- POST /api/auth/request-otp
- POST /api/auth/verify-otp
- POST /api/auth/signup
- POST /api/auth/login
- POST /api/auth/guest
- POST /api/auth/google-login
- GET /api/auth/profile/:userId
- PUT /api/auth/profile/:userId
- GET /api/movies
- GET /api/movies/trending
- GET /api/movies/genre/:genre
- GET /api/movies/:movieId
- POST /api/movies
- POST /api/movies/seed/create-sample-movies
- GET /api/bookings/seats/:movieId
- POST /api/bookings/book
- GET /api/bookings/user/:userId
- GET /api/bookings/:bookingId
- PUT /api/bookings/:bookingId/payment
- PUT /api/bookings/:bookingId/cancel
- POST /api/payments/create-order
- POST /api/payments/verify
- POST /api/payments/record
- GET /api/payments/history/:userId
- GET /api/payments/receipt/:paymentId
- GET /api/payments/receipt/:paymentId/pdf
- POST /api/payments/receipt/:paymentId/send
- POST /api/chat/message
- POST /api/chat
- POST /api/feedback/submit
- GET /api/feedback/movie/:movieId
- GET /api/feedback/user/:userId
- GET /api/feedback
- GET /api/profile/:userId
- GET /api/notifications/user/:userId
- PUT /api/notifications/user/:userId/read-all
BookMySeats_AI/
backend/
controllers/
models/
routes/
services/
server.js
package.json
frontend/
public/
src/
components/
pages/
styles/
utils/
package.json
README.md
- Node.js 18+
- npm 9+
- MongoDB Atlas connection string
- Firebase project (Auth enabled)
- Razorpay test/live credentials
- OpenAI API key
- Gmail app password (for SMTP)
git clone https://github.com/ReshDeen/BookMySeats_AI.git
cd BookMySeats_AIcd backend
npm installCreate backend/.env:
PORT=5000
MONGO_URI=
NODE_ENV=development
RAZORPAY_KEY_ID=
RAZORPAY_KEY_SECRET=
OPENAI_API_KEY=
EMAIL_USER=
EMAIL_PASS=
JWT_SECRET=Run backend:
npm startcd ../frontend
npm installCreate frontend/.env.local:
REACT_APP_API_BASE_URL=http://localhost:5000
REACT_APP_RAZORPAY_KEY_ID=Run frontend:
npm start- Root directory: frontend
- Build command: npm run build
- Output directory: build
Required Vercel env vars:
REACT_APP_API_BASE_URL=https://bookmyseats-ai-dekf.onrender.com
REACT_APP_RAZORPAY_KEY_ID=- Root directory: backend
- Build command: npm install
- Start command: node server.js
Required Render env vars:
MONGO_URI=
NODE_ENV=production
RAZORPAY_KEY_ID=
RAZORPAY_KEY_SECRET=
OPENAI_API_KEY=
EMAIL_USER=
EMAIL_PASS=
JWT_SECRET=To avoid auth/unauthorized-domain errors:
- Firebase Console -> Authentication -> Settings -> Authorized domains
- Add your production domain(s):
- bookmyseatsai.vercel.app
- any active vercel preview/project domain used for testing
Also ensure Google provider is enabled under Authentication -> Sign-in method.
Main collections/models include:
- users
- movies
- bookings
- payments
- feedback
- notifications
- chat history
CRUD coverage:
- Create: auth, bookings, payment records, feedback
- Read: movies, profile, payment history, notifications
- Update: booking/payment state, notification read state, profile
- Delete: [Add if implemented in your current routes]
- Email signup/login works
- Google login works from production domain
- Guest login works
- Seat booking flow works
- Razorpay popup opens and verifies payment
- Payment history renders with receipts
- Receipt email send endpoint works
- Chat assistant responds
- Profile and notifications load
- Render free tier may sleep; first API call can be delayed.
- Google login requires correct Firebase authorized domains.
- Keep API keys only in deployment environment variables.
- Never commit .env files.
- Rotate exposed keys immediately if they were ever shared.
- Use separate dev/test/prod credentials.
- Add admin analytics dashboard
- Add booking cancellation refund workflow
- Add test suite (frontend + backend integration)
- Add rate limiting and API hardening
- ReshDeen (Reshma Banu T)
If this project helped you, consider starring the repository.