A modern React-based web application for renting event equipment including furniture, sound systems, lighting, décor, and appliances.
- User Authentication - Login/Signup with account types (Customer/Vendor)
- Product Catalog - Browse 5 categories with multiple products each
- Shopping Cart - Add items, manage quantities, persistent storage
- Favorites - Save favorite items (requires login)
- Razorpay Integration - Dummy payment gateway for checkout
- Responsive Design - Mobile-first design with hamburger menu
- Toast Notifications - User-friendly feedback for all actions
- State Management - Zustand with localStorage persistence
- Frontend Framework: React 19.1.1
- Build Tool: Vite 7.1.7
- Routing: React Router DOM 7.9.4
- State Management: Zustand 5.0.8 with persist middleware
- Form Handling: React Hook Form 7.65.0
- UI Components: Lucide React 0.548.0 (icons)
- Notifications: React Hot Toast 2.6.0
- Payments: React Razorpay (dummy integration)
eventra-app/
├── public/
│ └── assets/ # Static assets (images, icons)
├── src/
│ ├── components/
│ │ ├── common/ # Navbar, Footer, RazorpayCheckout
│ │ ├── layout/ # MainLayout
│ │ └── products/ # ProductCard
│ ├── pages/ # Home, Login, Signup, Cart, Categories, etc.
│ ├── stores/ # authStore, cartStore
│ ├── styles/ # index.css
│ ├── App.jsx
│ └── main.jsx
├── index.html
└── package.json
npm installnpm run devOpen http://localhost:5173
npm run dev- Start development servernpm run build- Create production buildnpm run preview- Preview production buildnpm run lint- Run ESLint
The app includes dummy Razorpay integration for testing checkout flows.
Test Mode:
- Dummy key in code:
rzp_test_1234567890 - Amount: Auto-calculated from cart
- Currency: INR
Razorpay Test Cards:
- Card:
4111 1111 1111 1111 - CVV: Any 3 digits
- Expiry: Any future date
For Real Integration:
- Sign up at Razorpay
- Get your test API key
- Replace key in
src/components/common/RazorpayCheckout.jsx
- Home (
/) - Hero, categories, testimonials, FAQ - Categories (
/categories) - All categories - Category Detail (
/category/:categoryId) - Products with filters - Login (
/login) - Authentication - Signup (
/signup) - Registration with password validation - Cart (
/cart) - Shopping cart with Razorpay checkout - Dashboard (
/dashboard) - User profile and stats - About (
/about) - Company info - Contact (
/contact) - Contact form
Password requirements:
- At least 8 characters
- One uppercase letter
- One lowercase letter
- One number
- One special character (@, #, _, -)
- No spaces
npm run buildnpm install -g vercel
vercelDrag dist folder to Netlify Drop
MIT License
Made with ❤️ using React + Vite