A full-stack web application for discovering and booking movies, events, restaurants, stores, and activities across multiple cities.
Frontend:
- React 19 + Vite
- Tailwind CSS v3
- Clerk Authentication
- Framer Motion, GSAP, Lenis
- React Router, Axios
Backend:
- Node.js + Express
- MongoDB + Mongoose
- Slug-based routing
- RESTful APIs
BlockBuster/
βββ client/ # React Frontend
β βββ src/
β β βββ api/
β β βββ components/
β β βββ context/
β β βββ pages/
β βββ package.json
βββ server/ # Express Backend
βββ config/
βββ controllers/
βββ middleware/
βββ models/
βββ routes/
βββ index.js
βββ package.json
Backend:
cd server
npm install
npm run devFrontend:
cd client
npm install
npm run devServer (.env):
PORT=5000
MONGO_URI=your_mongodb_uri
CLERK_PUBLISHABLE_KEY=pk_test_...
CLERK_SECRET_KEY=sk_test_...
Client (.env):
VITE_CLERK_PUBLISHABLE_KEY=pk_test_...
GET/POST /api/cities- Cities managementGET/POST /api/venues- Venues (with citySlug)GET/POST /api/movies- MoviesGET/POST /api/events- EventsGET/POST /api/restaurants- RestaurantsGET/POST /api/stores- StoresGET/POST /api/activities- Activities
All POST endpoints support bulk insertion and slug resolution.
This project is designed to be deployed as two separate services on Render:
Backend Service:
- Build Command:
cd server && npm install - Start Command:
cd server && npm start - Root Directory:
/
Frontend Service:
- Build Command:
cd client && npm install && npm run build - Start Command: (Static site, uses built files)
- Root Directory:
/
MIT