A full‑stack event booking and hosting platform built as a production‑grade MERN + TypeScript project.
EventSphere allows users to discover, book, and manage events, while verified hosts can create and manage their own events, coupons, and dashboard analytics.
- Browse and search events (text search, filters, sorting)
- Debounced search (500ms)
- Event detail view
- Stripe payments for bookings
- Automatic ticket email
- Bookings history page
- Leave a review for booked events
- Mobile‑friendly UI
- Host verification via $1 Stripe payment
- Host‑only protected routes
- Create, update, delete (soft delete) events
- Coupon CRUD
- Dashboard with basic analytics (total revenue, total bookings, event performance)
- Express + TypeScript + MongoDB
- MVC architecture
- JWT auth + Google OAuth
- Stripe integration (bookings + host verification)
- Nodemailer for transactional emails
- Cloudinary for image uploads
- Aggregation pipelines for filters and analytics
- MongoDB indexes for performance
- React 18 + TypeScript
- React Query (data fetching, caching, dedupe)
- Zustand (UI state)
- TailwindCSS + shadcn/ui
- Responsive design
- Clean, minimal dashboard layout
- Frontend: SPA deployed on Vercel
- Backend: REST API deployed on Railway
- Database: MongoDB (Atlas)
- Storage: Cloudinary for event images
- Payments: Stripe Checkout
- Email: Nodemailer (SMTP)
- User selects event and initiates booking.
- Backend creates Stripe Checkout session.
- On success, backend records booking and triggers confirmation email.
- User is redirected to booking confirmation page.
- User attempts to access host tools.
- System checks host status.
- If not verified, user completes a $1 Stripe payment.
- Backend marks user as verified host.
- Hosts can create/update events.
- Events with existing bookings cannot be hard‑deleted.
- "Deleted" events are soft‑deleted (archived) for data integrity.
- React 18
- TypeScript
- React Query
- Zustand
- TailwindCSS
- shadcn/ui
- Node.js / Express
- TypeScript
- MongoDB + Mongoose
- Stripe
- Nodemailer
- Cloudinary
- Frontend: Vercel
- Backend: Railway
- Database: MongoDB Atlas
- Image Hosting: Cloudinary
react-queryzustandmongoosestripenodemailercloudinary
src/
controllers/
db/
middleware/
models/
routes/
types/
utils/
app.ts
index.ts
src/
api/
assets/
components/
hooks/
lib/
store/
utils/
App.css
App.tsx
index.css
main.tsx
- Event CRUD
- Booking system with Stripe
- Host verification
- Basic analytics
- Cloud image uploads
- User bookings page
- Mobile responsive structure
- Calendar invite (.ics) support
- UI micro‑interactions
