Tomato is a modern, high-performance food delivery platform built with the MERN stack (MongoDB, Express, React, Node.js). It features real-time order tracking, comprehensive restaurant management, and a premium user experience.
- Real-time Tracking: Live order status updates using Socket.io.
- Multi-user Roles: Dedicated dashboards for Customers, Restaurant Owners, and Delivery Partners.
- Authentication: Secure JWT-based authentication with Firebase integration.
- Dynamic Maps: Integrated Leaflet/Google Maps for restaurant locations and delivery tracking.
- Responsive Design: Premium, mobile-first UI built with modern CSS and React.
- Frontend: React (Vite), Axios, Socket.io-client, React Router, Leaflet.
- Backend: Node.js, Express, MongoDB (Mongoose), Socket.io, Firebase Admin SDK.
- Hosting: Vercel (Frontend), Render (Backend).
This app is optimized for Pune, Maharashtra. It includes:
- Geo-spatial Discovery: 15+ real-world restaurants sorted by distance from your current Pune location.
- Pune Landmarks: Seed data includes iconic spots like Vaishali (FC Road), Sujata Mastani, and German Bakery.
- Local Menus: Featuring Misal Pav, Mastani, Keema Pav, and authentic Puran Poli Thali.
git clone https://github.com/NotArsal/Tomato.git
cd Tomatocd backend
npm installCreate a .env file in the root folder (for Vite) and backend folder (for server):
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret
PORT=5001
VITE_GOOGLE_MAPS_API_KEY=your_key
VITE_MAP_ID=your_map_idTo populate the database with authentic Pune restaurant data and test users:
node backend/seed.jsAll accounts use the same password: password123
| Role | Description | |
|---|---|---|
| Customer | antigravity@test.com |
Shaikh Ahmed (Pune) |
| Restaurant | vohuman@tomato.com |
Vohuman Cafe Manager |
| Restaurant | vaishali@tomato.com |
Vaishali Manager |
| Restaurant | goodluck@tomato.com |
Goodluck Cafe Manager |
| Restaurant | leplaisir@tomato.com |
Le Plaisir Manager |
| Restaurant | sujata@tomato.com |
Sujata Mastani Manager |
| Restaurant | ... |
Use [name]@tomato.com for others |
| Delivery | driver1@test.com |
Pune Delivery Partner 1 |
| Delivery | driver2@test.com |
Pune Delivery Partner 2 |
| Delivery | driver3@test.com |
Pune Delivery Partner 3 |
Note: There are 15 unique restaurant accounts. Use the restaurant name (lowercase, no spaces) followed by @tomato.com to log in as any manager.
# From root directory
npm install
npm run dev- Build Command:
npm install - Start Command:
node server.js - Environment Variables:
MONGO_URI: Your MongoDB string.JWT_SECRET: Your secret key.FIREBASE_SERVICE_ACCOUNT: The full JSON string from yourserviceAccountKey.json. (Ensure it's a valid JSON string without extra quotes).
- Framework Preset:
Vite - Build Command:
npm run build - Output Directory:
dist - Environment Variables:
VITE_API_URL: Your hosted backend URL.VITE_GOOGLE_MAPS_API_KEY: Your Google Maps key.
This project is licensed under the MIT License.
Built with ❤️ by Arsal in Pune.