Browse movies, watch trailers, and book cinema tickets with seat selection and payment
AI summary · revised during review
CommerceJavaScript · PythonGitHub @Datquangbui1011OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
A full-stack MERN application for browsing movies, watching trailers, and booking cinema tickets with real-time seat selection and payment integration.
The application is built using a modern full-stack architecture with a decoupled frontend and backend, using Inngest for background workflows and MongoDB for data persistence.
🔹 Frontend (Client)
• State Management: Uses React Context API (AppContext) for auth and movie data.
• Micro-interactions: Interactive SeatLayout for real-time selection.
• AI Integration: Custom CineBot component for movie recommendations and support.Read the full README ↗A full-stack MERN application for browsing movies, watching trailers, and booking cinema tickets with real-time seat selection and payment integration.
The application is built using a modern full-stack architecture with a decoupled frontend and backend, using Inngest for background workflows and MongoDB for data persistence.
graph TD
subgraph Client ["💻 Client (React + Vite)"]
direction TB
AC["AppContext (Global State)"]
P["Pages (Home, Details, Seats)"]
C["Components (Navbar, Footer)"]
CB["CineBot (AI Chatbot)"]
TWR["Tailwind CSS & React Router"]
end
subgraph Server ["⚙️ Server (Node.js + Express.js)"]
direction TB
R["Routes (API Endpoints)"]
CT["Controllers (Business Logic)"]
M["Models (Mongoose Schemas)"]
I["Inngest (Background Jobs)"]
VD["Vercel Deployment"]
end
DB[("💾 MongoDB (Persistence)")]
Client <-->|"REST API"| Server
Server --> DB
DB -.->|"Data Store"| M
style Client fill:#3b3bb1,stroke:#fff,color:#fff
style Server fill:#a64d2e,stroke:#fff,color:#fff
style DB fill:#1e511e,stroke:#fff,color:#fff
AppContext) for auth and movie data.SeatLayout for real-time selection.CineBot component for movie recommendations and support.routes, controllers, and models.git clone <repository-url>
cd Movie-Ticket-booking
cd server
npm install
Create a .env file in the server directory:
MONGODB_URI=your_mongodb_connection_string
PORT=3000
TMDB_API_KEY=your_tmdb_api_key
# Clerk Auth
CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
CLERK_SECRET_KEY=your_clerk_secret_key
# Stripe
STRIPE_SECRET_KEY=your_stripe_secret_key
STRIPE_PUBLISHABLE_KEY=your_stripe_publishable_key
# Inngest (Required for background tasks)
INNGEST_EVENT_KEY=your_inngest_event_key
INNGEST_SIGNING_KEY=your_inngest_signing_key
# Resend (Required for emails)
RESEND_API_KEY=your_resend_api_key
Start the server:
npm run server
cd client
npm install
Create a .env file in the client directory:
VITE_BASE_URL=http://localhost:3000
VITE_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
VITE_TMDB_IMAGE_BASE_URL=https://image.tmdb.org/t/p/original
VITE_CURRENCY=$
Start the client:
npm run dev
server folder code to GitHub.server/.env.0.0.0.0/0) in MongoDB Atlas Network Access.client folder code to GitHub.client/.env.VITE_BASE_URL to your deployed server URL (e.g., https://your-server.vercel.app).To test the email flow and user sync locally:
npm run server).npx inngest-cli@latest dev -u http://localhost:3000/api/inngest
http://localhost:8288) to view event logs and trigger dry-runs.