A comprehensive Food Delivery web application developed using the MERN stack, designed to provide a seamless and efficient user experience.
- User Authentication: Secure login and registration system.
- Dynamic Menu: Interactive menu for users to browse and select items.
- Order Management: Efficient system for placing and tracking orders.
- Admin Dashboard: Comprehensive dashboard for managing menu items, orders, and restaurants.
- HTML, CSS (Tailwind CSS), TypeScript
- React (for building user interfaces)
- Vite (for fast development and build tooling)
- Node.js (Express for server-side operations)
- MongoDB (Database for storing application data)
- JWT (JSON Web Tokens for secure authentication)
github.com/codewithshek/mern-stack-intern-ey/
├── eslint.config.js
├── index.html
├── package.json
├── postcss.config.js
├── tailwind.config.js
├── tsconfig.app.json
├── tsconfig.json
├── tsconfig.node.json
├── vite.config.ts
├── server/
│ ├── index.js
│ ├── .env
│ ├── middleware/
│ │ └── auth.js
│ ├── models/
│ │ ├── MenuItem.js
│ │ ├── Order.js
│ │ ├── Restaurant.js
│ │ └── User.js
│ └── routes/
│ ├── auth.js
│ ├── menu.js
│ ├── orders.js
│ └── restaurants.js
└── src/
├── App.tsx
├── index.css
├── main.tsx
├── vite-env.d.ts
├── components/
│ ├── AdminRoute.tsx
│ ├── Footer.tsx
│ ├── MenuItem.tsx
│ ├── Navbar.tsx
│ ├── ProtectedRoute.tsx
│ └── RestaurantCard.tsx
├── context/
│ ├── AuthContext.tsx
│ └── CartContext.tsx
├── pages/
│ ├── Cart.tsx
│ ├── Checkout.tsx
│ ├── Home.tsx
│ ├── Login.tsx
│ ├── MyOrders.tsx
│ ├── NotFound.tsx
│ ├── OrderDetails.tsx
│ ├── OrderSuccess.tsx
│ ├── Profile.tsx
│ ├── Register.tsx
│ ├── RestaurantDetails.tsx
│ └── admin/
│ ├── Dashboard.tsx
│ ├── MenuItems.tsx
│ ├── Orders.tsx
│ └── Restaurants.tsx
└── utils/
└── axios.ts
- Clone the Repository
git clone https://github.com/codewithshek/mern-stack-intern-ey.git
cd mern-stack-intern-ey
- Install Dependencies
npm install
- Run the Application
Start the frontend
npm run dev
Start the backend
npm run server
- Access the Application Open your browser and navigate to http://localhost:5173/ to start using the application.
- authenticateUser(email, password): Authenticates a user using their email and password.
- fetchMenuItems(): Retrieves the list of menu items from the database.
- placeOrder(orderDetails): Places a new order with the provided details.
- getOrderStatus(orderId): Fetches the current status of an order using its ID.
✅ Implement real-time order tracking.
✅ Add support for multiple payment gateways.
✅ Develop a mobile application for better accessibility.
Feel free to fork and submit pull requests. Any contributions are welcome!
Made with ❤️ by D ABHISHEK YADAV as part of the EY Internship


