A full-stack food delivery marketplace application built with React, Node.js, Express, and MongoDB. Features real-time order tracking, WhatsApp integration, 10-point rating system, and modern responsive design.
- Restaurant Discovery: Browse restaurants by cuisine, rating, and location
- Advanced Search & Filters: Find restaurants and dishes quickly
- Menu Management: Digital menus with images, descriptions, and prices
- Shopping Cart: Add items from restaurants with quantity management
- Order Management: Place orders with delivery address and payment options
- Live Status Updates: Real-time order status using Socket.IO
- Delivery Timeline: Visual timeline showing order progress
- Location Tracking: Track delivery partner location (simulated)
- Estimated Delivery Time: Dynamic delivery time calculations
- Detailed Reviews: Customers can rate dishes on a 1-10 scale
- Review Categories: Tag reviews by taste, quantity, packaging, delivery, value
- Helpful Reviews: Mark reviews as helpful
- Verified Reviews: Only customers who ordered can review
- Restaurant Contact: Direct WhatsApp link to restaurant
- Delivery Partner Contact: WhatsApp delivery partner during delivery
- Order Updates: Get order updates via WhatsApp (configurable)
- Responsive Design: Works perfectly on all devices
- Smooth Animations: Framer Motion animations throughout
- Glass Morphism: Modern glassmorphism design elements
- Gradient Themes: Beautiful gradient color schemes
- Interactive Elements: Hover effects and micro-interactions
- JWT Authentication: Secure user authentication
- Role-based Access: Customer, Restaurant Owner, Delivery Partner roles
- Protected Routes: Secure API endpoints
- Password Encryption: Bcrypt password hashing
- React 18: Modern React with hooks
- React Router: Client-side routing
- Axios: HTTP client for API calls
- Socket.IO Client: Real-time communication
- Framer Motion: Smooth animations
- React Icons: Beautiful icon library
- React Toastify: Toast notifications
- Node.js: JavaScript runtime
- Express.js: Web application framework
- MongoDB: NoSQL database
- Mongoose: MongoDB object modeling
- Socket.IO: Real-time bidirectional communication
- JWT: JSON Web Tokens for authentication
- Bcrypt: Password hashing
- Multer: File upload handling
- Node.js (v14 or higher)
- MongoDB (local or cloud)
- npm or yarn
git clone <repository-url>
cd zomatoa-appnpm installcd client
npm installCreate a .env file in the root directory:
NODE_ENV=development
PORT=5000
MONGODB_URI=mongodb://localhost:27017/zomatoa
JWT_SECRET=your_jwt_secret_key_here_make_it_long_and_secure
FRONTEND_URL=http://localhost:3000Make sure MongoDB is running on your system:
# For Windows (if MongoDB is installed as a service)
net start MongoDB
# For macOS/Linux
mongodnpm run devcd client
npm startThe application will be available at:
- Frontend: http://localhost:3000
- Backend API: http://localhost:5000
- Register/Login: Create an account or login
- Browse Restaurants: Explore restaurants by cuisine or search
- View Menu: Check restaurant details and menu items
- Add to Cart: Add items to your shopping cart
- Place Order: Enter delivery address and place order
- Track Order: Real-time tracking of your order
- Contact Support: WhatsApp restaurant or delivery partner
- Rate & Review: Rate dishes after delivery
- Register as Restaurant: Sign up with restaurant role
- Add Restaurant Details: Complete restaurant profile
- Manage Menu: Add/update menu items with images
- Receive Orders: Get notified of new orders
- Update Order Status: Mark orders as confirmed, preparing, ready
- Customer Communication: Respond to customer queries
- Register as Delivery Partner: Sign up with delivery role
- Accept Orders: Accept delivery requests
- Update Location: Share real-time location with customers
- Update Status: Mark orders as picked up, on the way, delivered
- Customer Communication: WhatsApp customers for delivery updates
- Socket.IO integration for live updates
- Visual timeline with order status
- Estimated delivery time calculations
- Location tracking simulation
// Example WhatsApp link generation
const openWhatsApp = (phone, message) => {
const whatsappUrl = `https://wa.me/${phone}?text=${encodeURIComponent(message)}`;
window.open(whatsappUrl, '_blank');
};- Detailed rating from 1-10 for each dish
- Category-based reviews (taste, quantity, packaging, etc.)
- Helpful review voting system
- Verified purchase reviews only
- Mobile-first approach
- Flexible grid layouts
- Touch-friendly interactions
- Optimized for all screen sizes
POST /api/auth/register- User registrationPOST /api/auth/login- User login
GET /api/restaurants- Get all restaurants with filtersGET /api/restaurants/:id- Get restaurant detailsPOST /api/restaurants- Create restaurant (owners only)
POST /api/orders- Create new orderGET /api/orders/my-orders- Get user ordersGET /api/orders/:id- Get order detailsPATCH /api/orders/:id/status- Update order status
POST /api/reviews- Create reviewGET /api/reviews/restaurant/:id- Get restaurant reviewsPOST /api/reviews/:id/helpful- Mark review as helpful
- Primary: Linear gradient (#667eea to #764ba2)
- Secondary: #ff6b6b, #4ecdc4
- Success: #2ecc71
- Warning: #ffa500
- Error: #e74c3c
- Font Family: Inter (Google Fonts)
- Weights: 300, 400, 500, 600, 700, 800
- Smooth page transitions
- Hover effects on interactive elements
- Loading animations
- Micro-interactions for better UX
- Build the React app:
cd client
npm run build- Deploy the
buildfolder to your hosting service
- Set environment variables on your hosting platform
- Deploy the root directory (contains server.js)
- Create a MongoDB Atlas cluster
- Update MONGODB_URI in environment variables
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- React team for the amazing framework
- MongoDB for the flexible database
- Socket.IO for real-time capabilities
- Framer Motion for smooth animations
- All the open-source contributors
For support, email support@zomatoa.com or join our Slack channel.
Built with β€οΈ by the Zomatoa Team