This is a full-stack MERN (MongoDB, Express, React, Node.js) food delivery application. It allows users to browse restaurants and their menus, add items to a cart, and place orders. The app features user authentication, restaurant management, and secure payment integration via Stripe.
Check out the live version: Food Delivery App
- User authentication (Login/Signup)
- Search restaurnats and cuisines
- Place orders and process payments
- User profile for managing orders, Profile and Address
- Responsive design for all devices
- Switch between light and dark theme
- Add your restaurant and become admin to manage your restaurant
- Admin dashboard to manage restaurants, menus, and orders
- Frontend: React, TailwindCSS, Shadcn UI
- Backend: Node.js, Express.js
- Database: MongoDB (Mongoose)
- Authentication: JWT (JSON Web Token)
- Payment Gateway: Stripe API
- Images: Cloudinary
- Express - Fast, unopinionated, minimalist web framework for Node.js
- Mongoose - Elegant MongoDB object modeling for Node.js
- jsonwebtoken - Used for authenticating users with JWT
- bcryptjs - For hashing passwords
- Stripe - Payment gateway integration
- cors - Middleware to enable Cross-Origin Resource Sharing
- dotenv - To manage environment variables
- cloudinary - Cloud image storage
- cookie-parser - For parsing cookies
- nodemailer - For sending emails
- nodemon - For automatically restarting the server when code changes
- React - Frontend JavaScript library
- TailwindCSS - Utility-first CSS framework for styling
- Shadcn UI - UI primitives for building high-quality user interfaces
- React Router - Declarative routing for React
- Axios - Promise-based HTTP client for the browser and Node.js
- React-Stripe - For integrating Stripe in React
- Lucide-Icons - For Icons
- Node.js (v20 or later)
- MongoDB
- Stripe API Key
- Clone the repository:
git clone https://github.com/Abhishek-Devanda/Food-Order-App.git cd Food-Order-App - Install backend dependencies:
npm install
- Set up environment variables: Create a
.envfile in thebackendfolder and add the following:PORT=5000 BRAND_NAME=TomatoEats CLIENT_URL=Yours_Client_URL NODE_ENV=development #TOKENS OTP_EXPIRES_IN=2 * 60 * 60 * 1000 PASSWORD_RESET_LINK_EXPIRES_IN=10 * 60 * 1000 TOKEN_SECRET=Your_Token_Secret REFRESH_TOKEN_EXPIRS_IN=7d ACCESS_TOKEN_EXPIRS_IN=15m REFRESH_TOKEN_COOKIE_MAXAGE=7 * 24 * 60 * 60 * 1000 ACCESS_TOKEN_COOKIE_MAXAGE=15 * 60 * 1000 #MONGODB MONGO_URI=Your_MONGO_URI #CLOUDINARY CLOUDINARY_CLOUD_NAME =Your_CLOUDINARY_CLOUD_NAME CLOUDINARY_API_KEY =Your_CLOUDINARY_API_KEY CLOUDINARY_API_SECRET =Your_CLOUDINARY_API_SECRET #STRIPE STRIPE_PUBLISHABLE_KEY =Your_STRIPE_PUBLISHABLE_KEY STRIPE_SECRET_KEY =Your_STRIPE_SECRET_KEY #EMAIL SMTP_HOST =smtp.google.com SMTP_PASSWORD =Your_SMTP_PASSWORD SMTP_EMAIL =Your_SMTP_EMAIL
- Start the backend server:
npm run dev
- Install frontend dependencies:
cd frontend npm install - Start the frontend server:
npm run dev
Contributions are welcome! Feel free to open an issue or submit a pull request.