https://github.com/nitindevspace/entrify
๐๏ธ Full-stack ticket booking platform for movies, events, and shows. Built with React, Node.js, Express, MongoDB, and Stripe payments.
https://github.com/nitindevspace/entrify
antd express fullstack jwt-authentication mern mongodb nodejs react react-router stripe-payments tailwindcss ticket-booking
Last synced: 3 months ago
JSON representation
๐๏ธ Full-stack ticket booking platform for movies, events, and shows. Built with React, Node.js, Express, MongoDB, and Stripe payments.
- Host: GitHub
- URL: https://github.com/nitindevspace/entrify
- Owner: NitinDevSpace
- Created: 2025-07-06T16:18:05.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-07-14T14:39:12.000Z (12 months ago)
- Last Synced: 2025-07-14T18:36:17.238Z (12 months ago)
- Topics: antd, express, fullstack, jwt-authentication, mern, mongodb, nodejs, react, react-router, stripe-payments, tailwindcss, ticket-booking
- Language: JavaScript
- Homepage: https://entrify.onrender.com/
- Size: 7.46 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Entrify
Entrify is a full-stack event and movie booking platform inspired by BookMyShow, but extended to support SaaS features for venue partners. This project demonstrates secure authentication, payment processing, seat selection, and role-based access control.
## ๐๏ธ Project Structure
```
entrify/
โโโ client/ # Frontend (React + Vite)
โ โโโ src/
โ โ โโโ components/
โ โ โโโ pages/
โ โ โโโ services/ # Axios API calls
โ โ โโโ App.jsx
โ โ โโโ main.jsx
โ โโโ index.html
โ โโโ tailwind.config.js
โโโ server/ # Backend (Node.js + Express + Mongoose)
โ โโโ controllers/
โ โโโ models/
โ โโโ routes/
โ โโโ stripeWebhook.js
โ โโโ server.js
โ โโโ .env
โโโ README.md
```
## ๐ Features
โ
User Registration & Login
โ
JWT Authentication (stored in cookies)
โ
Role-based authorization (Admin/User)
โ
Movies, Theatres, Shows CRUD (Admin only)
โ
Seat selection with dynamic booking
โ
Stripe Checkout Integration
โ
Webhook to finalize bookings after payment success
โ
Email notifications with nodemailer
โ
Rate limiting to prevent abuse
## ๐ก๏ธ Security Measures
- Passwords hashed with bcrypt
- JWT tokens stored securely in cookies
- `express-rate-limit` to prevent abuse
- `helmet` for HTTP header protection
- Input validation on backend
- Mongoose schema validation
## ๐งพ How to Run Locally
1๏ธโฃ **Clone the repository**
```bash
git clone https://github.com/YOUR_USERNAME/entrify.git
cd entrify
```
2๏ธโฃ **Install backend dependencies**
```bash
cd server
npm install
```
3๏ธโฃ **Install frontend dependencies**
```bash
cd ../client
npm install
```
4๏ธโฃ **Configure environment variables**
Create a `.env` file in the `server/` directory:
```
PORT=8080
MONGO_URL=mongodb+srv://...
JWT_SECRET=your_jwt_secret
STRIPE_SECRET_KEY=sk_test_...
STRIPE_WEBHOOK_SECRET=whsec_...
```
5๏ธโฃ **Run backend**
```bash
cd server
npm run dev
```
6๏ธโฃ **Run frontend**
```bash
cd ../client
npm run dev
```
The frontend will be served on `http://localhost:5173` and the backend on `http://localhost:8080`.
## ๐ณ Stripe Integration
- On payment, Stripe Checkout session is created.
- Webhook endpoint listens for `checkout.session.completed` events.
- Booking is saved only after payment succeeds.
- Email confirmation is sent to the user.
## โ๏ธ Email Sending
- Nodemailer configured with Gmail or any SMTP service.
- Used to send OTPs and booking confirmations.
## ๐ฏ Rate Limiting
- Limits requests to 40 per 5 minutes per IP.
- Returns a dynamic message showing minutes remaining.
## ๐งฉ Technologies Used
- **Frontend:** React, TailwindCSS, Ant Design, Axios, React Router
- **Backend:** Node.js, Express, Mongoose
- **Database:** MongoDB Atlas
- **Payments:** Stripe
- **Email:** Nodemailer
## ๐ Why Entrify?
This project showcases a full production-like workflow:
- Authentication & authorization
- Payment processing with Stripe webhooks
- Role-based dashboards
- Real-world security practices
- Clean UI built with Tailwind and Ant Design
It demonstrates an end-to-end application suitable for production, but built as a learning project.
---
Feel free to explore the code, run it locally, and try the features!