# keshavmehra79/foodrush architecture

> Architecture diagram of the GitHub repository keshavmehra79/foodrush, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/keshavmehra79/foodrush
- Repository: https://github.com/keshavmehra79/foodrush

## Overview

This repository is a food-ordering web app with a React storefront and admin dashboard backed by an Express/Mongoose API. The main customer flow is browse products, select a product for quick order or use the cart, enter delivery details, and initiate payment; the admin flow manages products and views orders and users. Sampled code confirms product retrieval, payment-order creation, and email confirmation, but the email handler does not persist an order. Several frontend and backend modules are represented by their exact tree paths; their internal wiring is omitted where source was not sampled.

Main entry points: [`client/src/App.jsx`](https://github.com/keshavmehra79/foodrush/blob/master/client/src/App.jsx) (Route application), [`server/routes/adminRouter.js`](https://github.com/keshavmehra79/foodrush/blob/master/server/routes/adminRouter.js) (Admin routes), [`server/routes/userRouter.js`](https://github.com/keshavmehra79/foodrush/blob/master/server/routes/userRouter.js) (User routes), [`server/controllers/adminController.js`](https://github.com/keshavmehra79/foodrush/blob/master/server/controllers/adminController.js) (Admin controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_storefront["Customer storefront"]
  node_app["Route application<br/>[App.jsx]"]
  node_home["Home page<br/>[Home.jsx]"]
  node_product_cards["Product browsing<br/>[Cards..jsx]"]
  node_cart["Cart<br/>[Mycart.jsx]"]
  node_cart_state["Cart state<br/>[cartSlice.jsx]"]
  node_checkout["Checkout<br/>[Checkout.jsx]"]
  node_quick_order["Quick order<br/>[Quickorder.jsx]"]
  node_user_login["User login<br/>[Userlogin.jsx]"]
end

subgraph group_admin["Admin dashboard"]
  node_admin_login["Admin login<br/>[AdminLogin.jsx]"]
  node_admin_dashboard["Admin dashboard<br/>[AdminDashboard.jsx]"]
  node_admin_products["Product management<br/>[Seeproducts.jsx]"]
  node_add_product["Add product<br/>[AddProduct.jsx]"]
  node_admin_orders["Order listing<br/>[Orders.jsx]"]
  node_admin_users["User listing<br/>[Users.jsx]"]
end

subgraph group_api["API and controllers"]
  node_server["Express app<br/>[index.js]"]
  node_admin_routes["Admin routes<br/>[adminRouter.js]"]
  node_user_routes["User routes<br/>[userRouter.js]"]
  node_admin_controller["Admin controller<br/>[adminController.js]"]
  node_user_controller["User controller<br/>[userController.js]"]
end

subgraph group_data["Persistence and integrations"]
  node_product_model["Product model<br/>[productModel.js]"]
  node_order_model["Order model<br/>[orderModel.js]"]
  node_user_model["User model<br/>[userModels.js]"]
  node_admin_model["Admin model<br/>[adminmodel.js]"]
  node_mongo[("MongoDB")]
  node_cloudinary[("Cloudinary")]
  node_razorpay["Razorpay"]
  node_email_service["Email service"]
end

node_customer(("Customer"))

node_customer -->|"opens"| node_app
node_app -->|"routes to"| node_home
node_app -->|"routes to"| node_cart
node_app -->|"routes to"| node_checkout
node_app -->|"routes to"| node_quick_order
node_app -->|"routes to"| node_user_login
node_app -->|"routes to"| node_admin_login
node_app -->|"routes to"| node_admin_dashboard
node_admin_dashboard -->|"routes to"| node_admin_products
node_admin_dashboard -->|"routes to"| node_add_product
node_admin_dashboard -->|"routes to"| node_admin_orders
node_admin_dashboard -->|"routes to"| node_admin_users
node_cart -->|"uses state"| node_cart_state
node_home -->|"authenticates via"| node_user_routes
node_user_login -->|"submits login"| node_user_routes
node_product_cards -->|"requests product"| node_user_routes
node_quick_order -->|"fetches product"| node_user_routes
node_quick_order -->|"sends confirmation"| node_user_routes
node_quick_order -->|"creates payment order"| node_admin_routes
node_admin_products -->|"manages products"| node_admin_routes
node_add_product -->|"adds product"| node_admin_routes
node_admin_orders -->|"requests orders"| node_admin_routes
node_admin_users -->|"requests users"| node_admin_routes
node_server -->|"mounts routes"| node_admin_routes
node_server -->|"mounts routes"| node_user_routes
node_admin_routes -->|"dispatches"| node_admin_controller
node_user_routes -->|"dispatches"| node_user_controller
node_admin_routes -.->|"creates payment order"| node_razorpay
node_admin_controller -->|"looks up admin"| node_admin_model
node_admin_controller -->|"reads and changes"| node_product_model
node_admin_controller -->|"reads orders"| node_order_model
node_admin_controller -->|"reads users"| node_user_model
node_admin_controller -.->|"uploads images"| node_cloudinary
node_user_controller -->|"reads product"| node_product_model
node_user_controller -->|"looks up user"| node_user_model
node_user_controller -.->|"sends confirmation"| node_email_service
node_server -->|"connects to"| node_mongo
node_product_model -->|"persists products"| node_mongo
node_order_model -->|"models orders"| node_mongo
node_user_model -->|"models users"| node_mongo
node_admin_model -->|"models admins"| node_mongo

click node_app "https://github.com/keshavmehra79/foodrush/blob/master/client/src/App.jsx"
click node_home "https://github.com/keshavmehra79/foodrush/blob/master/client/src/pages/Home.jsx"
click node_product_cards "https://github.com/keshavmehra79/foodrush/blob/master/client/src/component/Cards..jsx"
click node_cart "https://github.com/keshavmehra79/foodrush/blob/master/client/src/component/Mycart.jsx"
click node_cart_state "https://github.com/keshavmehra79/foodrush/blob/master/client/src/cartSlice.jsx"
click node_checkout "https://github.com/keshavmehra79/foodrush/blob/master/client/src/component/Checkout.jsx"
click node_quick_order "https://github.com/keshavmehra79/foodrush/blob/master/client/src/component/Quickorder.jsx"
click node_user_login "https://github.com/keshavmehra79/foodrush/blob/master/client/src/component/Userlogin.jsx"
click node_admin_login "https://github.com/keshavmehra79/foodrush/blob/master/client/src/admin/AdminLogin.jsx"
click node_admin_dashboard "https://github.com/keshavmehra79/foodrush/blob/master/client/src/admin/AdminDashboard.jsx"
click node_admin_products "https://github.com/keshavmehra79/foodrush/blob/master/client/src/admin/Seeproducts.jsx"
click node_add_product "https://github.com/keshavmehra79/foodrush/blob/master/client/src/admin/AddProduct.jsx"
click node_admin_orders "https://github.com/keshavmehra79/foodrush/blob/master/client/src/admin/Orders.jsx"
click node_admin_users "https://github.com/keshavmehra79/foodrush/blob/master/client/src/admin/Users.jsx"
click node_server "https://github.com/keshavmehra79/foodrush/blob/master/server/index.js"
click node_admin_routes "https://github.com/keshavmehra79/foodrush/blob/master/server/routes/adminRouter.js"
click node_user_routes "https://github.com/keshavmehra79/foodrush/blob/master/server/routes/userRouter.js"
click node_admin_controller "https://github.com/keshavmehra79/foodrush/blob/master/server/controllers/adminController.js"
click node_user_controller "https://github.com/keshavmehra79/foodrush/blob/master/server/controllers/userController.js"
click node_product_model "https://github.com/keshavmehra79/foodrush/blob/master/server/models/productModel.js"
click node_order_model "https://github.com/keshavmehra79/foodrush/blob/master/server/models/orderModel.js"
click node_user_model "https://github.com/keshavmehra79/foodrush/blob/master/server/models/userModels.js"
click node_admin_model "https://github.com/keshavmehra79/foodrush/blob/master/server/models/adminmodel.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_home,node_product_cards,node_cart,node_cart_state,node_checkout,node_quick_order,node_user_login toneBlue
class node_admin_login,node_admin_dashboard,node_admin_products,node_add_product,node_admin_orders,node_admin_users toneAmber
class node_server,node_admin_routes,node_user_routes,node_admin_controller,node_user_controller toneMint
class node_product_model,node_order_model,node_user_model,node_admin_model,node_mongo,node_cloudinary,node_razorpay,node_email_service toneRose
class node_customer toneIndigo
```

## Components

### Customer storefront

- [Route application](https://github.com/keshavmehra79/foodrush/blob/master/client/src/App.jsx): `client/src/App.jsx`
- [Home page](https://github.com/keshavmehra79/foodrush/blob/master/client/src/pages/Home.jsx): `client/src/pages/Home.jsx`
- [Product browsing](https://github.com/keshavmehra79/foodrush/blob/master/client/src/component/Cards..jsx): `client/src/component/Cards..jsx`
- [Cart](https://github.com/keshavmehra79/foodrush/blob/master/client/src/component/Mycart.jsx): `client/src/component/Mycart.jsx`
- [Cart state](https://github.com/keshavmehra79/foodrush/blob/master/client/src/cartSlice.jsx): `client/src/cartSlice.jsx`
- [Checkout](https://github.com/keshavmehra79/foodrush/blob/master/client/src/component/Checkout.jsx): `client/src/component/Checkout.jsx`
- [Quick order](https://github.com/keshavmehra79/foodrush/blob/master/client/src/component/Quickorder.jsx): `client/src/component/Quickorder.jsx`
- [User login](https://github.com/keshavmehra79/foodrush/blob/master/client/src/component/Userlogin.jsx): `client/src/component/Userlogin.jsx`

### Admin dashboard

- [Admin login](https://github.com/keshavmehra79/foodrush/blob/master/client/src/admin/AdminLogin.jsx): `client/src/admin/AdminLogin.jsx`
- [Admin dashboard](https://github.com/keshavmehra79/foodrush/blob/master/client/src/admin/AdminDashboard.jsx): `client/src/admin/AdminDashboard.jsx`
- [Product management](https://github.com/keshavmehra79/foodrush/blob/master/client/src/admin/Seeproducts.jsx): `client/src/admin/Seeproducts.jsx`
- [Add product](https://github.com/keshavmehra79/foodrush/blob/master/client/src/admin/AddProduct.jsx): `client/src/admin/AddProduct.jsx`
- [Order listing](https://github.com/keshavmehra79/foodrush/blob/master/client/src/admin/Orders.jsx): `client/src/admin/Orders.jsx`
- [User listing](https://github.com/keshavmehra79/foodrush/blob/master/client/src/admin/Users.jsx): `client/src/admin/Users.jsx`

### API and controllers

- [Express app](https://github.com/keshavmehra79/foodrush/blob/master/server/index.js): `server/index.js`
- [Admin routes](https://github.com/keshavmehra79/foodrush/blob/master/server/routes/adminRouter.js): `server/routes/adminRouter.js`
- [User routes](https://github.com/keshavmehra79/foodrush/blob/master/server/routes/userRouter.js): `server/routes/userRouter.js`
- [Admin controller](https://github.com/keshavmehra79/foodrush/blob/master/server/controllers/adminController.js): `server/controllers/adminController.js`
- [User controller](https://github.com/keshavmehra79/foodrush/blob/master/server/controllers/userController.js): `server/controllers/userController.js`

### Persistence and integrations

- [Product model](https://github.com/keshavmehra79/foodrush/blob/master/server/models/productModel.js): `server/models/productModel.js`
- [Order model](https://github.com/keshavmehra79/foodrush/blob/master/server/models/orderModel.js): `server/models/orderModel.js`
- [User model](https://github.com/keshavmehra79/foodrush/blob/master/server/models/userModels.js): `server/models/userModels.js`
- [Admin model](https://github.com/keshavmehra79/foodrush/blob/master/server/models/adminmodel.js): `server/models/adminmodel.js`
- **MongoDB**
- **Cloudinary**
- **Razorpay**
- **Email service**

### Other components

- **Customer**

## Connections

- Customer → Route application: opens
- Route application → Home page: routes to
- Route application → Cart: routes to
- Route application → Checkout: routes to
- Route application → Quick order: routes to
- Route application → User login: routes to
- Route application → Admin login: routes to
- Route application → Admin dashboard: routes to
- Admin dashboard → Product management: routes to
- Admin dashboard → Add product: routes to
- Admin dashboard → Order listing: routes to
- Admin dashboard → User listing: routes to
- Cart → Cart state: uses state
- Home page → User routes: authenticates via
- User login → User routes: submits login
- Product browsing → User routes: requests product
- Quick order → User routes: fetches product
- Quick order → User routes: sends confirmation
- Quick order → Admin routes: creates payment order
- Product management → Admin routes: manages products
- Add product → Admin routes: adds product
- Order listing → Admin routes: requests orders
- User listing → Admin routes: requests users
- Express app → Admin routes: mounts routes
- Express app → User routes: mounts routes
- Admin routes → Admin controller: dispatches
- User routes → User controller: dispatches
- Admin routes → Razorpay: creates payment order
- Admin controller → Admin model: looks up admin
- Admin controller → Product model: reads and changes
- Admin controller → Order model: reads orders
- Admin controller → User model: reads users
- Admin controller → Cloudinary: uploads images
- User controller → Product model: reads product
- User controller → User model: looks up user
- User controller → Email service: sends confirmation
- Express app → MongoDB: connects to
- Product model → MongoDB: persists products
- Order model → MongoDB: models orders
- User model → MongoDB: models users
- Admin model → MongoDB: models admins
