# shreenidhims/onlyfoods architecture

> Architecture diagram of the GitHub repository shreenidhims/onlyfoods, 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/shreenidhims/onlyfoods
- Repository: https://github.com/shreenidhims/onlyfoods

## Overview

OnlyFoods is a Java servlet-based food-delivery application. Users register or sign in, browse restaurants and menus, manage a cart, check out with a delivery address and payment mode, and place orders; they can later review order history and manage profile details and favourites. Servlets handle requests and coordinate JDBC-backed DAOs, with MySQL as the persistent store. The README documents additional UI capabilities, but web assets and several servlet implementations are not present in the supplied tree or excerpts, so their internal wiring is not expanded here.

Main entry points: [`src/main/java/com/OnlyFoods/util/DBConnector.java`](https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/util/DBConnector.java) (JDBC Connections), [`src/main/java/com/OnlyFoods/Servlet/ProfileServlet.java`](https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/Servlet/ProfileServlet.java) (Profile and Favourites), [`src/main/java/com/OnlyFoods/daoimp/UserDAOImpl.java`](https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/daoimp/UserDAOImpl.java) (User Persistence), [`src/main/java/com/OnlyFoods/Servlet/PlaceOrderServlet.java`](https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/Servlet/PlaceOrderServlet.java) (Place Order)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Accounts"]
  node_register["Registration"]
  node_login["Login<br/>[LoginServlet.java]"]
  node_logout["Logout<br/>[LogoutServlet.java]"]
end

subgraph group_discovery["Food Discovery"]
  node_restaurants["Restaurant Browse"]
  node_categories["Category Browse"]
  node_menus["Menu Browse<br/>[MenuServlet.java]"]
end

subgraph group_ordering["Cart and Orders"]
  node_cart["Cart Management<br/>[CartServlet.java]"]
  node_checkout["Checkout"]
  node_placeorder["Place Order"]
  node_history["Order History"]
end

subgraph group_account["Profile"]
  node_profile["Profile and Favourites"]
end

subgraph group_persistence["Persistence"]
  node_userdao["User Persistence<br/>[UserDAOImpl.java]"]
  node_restaurantdao["Restaurant Persistence"]
  node_categorydao["Category Persistence"]
  node_menudao["Menu Persistence<br/>[MenuDAOImpl.java]"]
  node_cartdao["Cart Persistence<br/>[CartDAOImpl.java]"]
  node_orderdao["Order Persistence<br/>[OrderDAOImpl.java]"]
  node_addressdao["Address Persistence"]
  node_favouritedao["Favourite Persistence"]
  node_dbconnector["JDBC Connections<br/>[DBConnector.java]"]
end

node_customer(("Customer"))
node_mysql[("MySQL")]

node_customer -->|"registers"| node_register
node_customer -->|"signs in"| node_login
node_customer -->|"signs out"| node_logout
node_customer -->|"browses"| node_restaurants
node_customer -->|"filters"| node_categories
node_customer -->|"explores"| node_menus
node_customer -->|"manages cart"| node_cart
node_customer -->|"checks out"| node_checkout
node_customer -->|"reviews orders"| node_history
node_customer -->|"manages account"| node_profile
node_register -->|"creates user"| node_userdao
node_login -->|"authenticates"| node_userdao
node_restaurants -->|"loads restaurants"| node_restaurantdao
node_categories -->|"loads categories"| node_categorydao
node_menus -->|"loads menus"| node_menudao
node_cart -->|"reads and updates"| node_cartdao
node_checkout -->|"loads addresses"| node_addressdao
node_placeorder -->|"reads cart"| node_cartdao
node_placeorder -->|"resolves menu"| node_menudao
node_placeorder -->|"persists order"| node_orderdao
node_history -->|"loads orders"| node_orderdao
node_profile -->|"updates user"| node_userdao
node_profile -->|"manages addresses"| node_addressdao
node_profile -->|"manages favourites"| node_favouritedao
node_userdao -->|"opens connection"| node_dbconnector
node_restaurantdao -->|"opens connection"| node_dbconnector
node_categorydao -->|"opens connection"| node_dbconnector
node_menudao -->|"opens connection"| node_dbconnector
node_cartdao -->|"opens connection"| node_dbconnector
node_orderdao -->|"opens connection"| node_dbconnector
node_addressdao -->|"opens connection"| node_dbconnector
node_favouritedao -->|"opens connection"| node_dbconnector
node_dbconnector -->|"connects"| node_mysql

click node_register "https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/Servlet/RegisterServlet.java"
click node_login "https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/Servlet/LoginServlet.java"
click node_logout "https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/Servlet/LogoutServlet.java"
click node_restaurants "https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/Servlet/RestaurantServlet.java"
click node_categories "https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/Servlet/CategoryServlet.java"
click node_menus "https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/Servlet/MenuServlet.java"
click node_cart "https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/Servlet/CartServlet.java"
click node_checkout "https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/Servlet/CheckoutServlet.java"
click node_placeorder "https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/Servlet/PlaceOrderServlet.java"
click node_history "https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/dao/OrderHistoryDAO.java"
click node_profile "https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/Servlet/ProfileServlet.java"
click node_userdao "https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/daoimp/UserDAOImpl.java"
click node_restaurantdao "https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/daoimp/RestaurantDAOImpl.java"
click node_categorydao "https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/daoimp/CategoryDAOImpl.java"
click node_menudao "https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/daoimp/MenuDAOImpl.java"
click node_cartdao "https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/daoimp/CartDAOImpl.java"
click node_orderdao "https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/daoimp/OrderDAOImpl.java"
click node_addressdao "https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/daoimp/AddressDAOImpl.java"
click node_favouritedao "https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/daoimp/FavouriteDAOImpl.java"
click node_dbconnector "https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/util/DBConnector.java"

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_register,node_login,node_logout toneBlue
class node_restaurants,node_categories,node_menus,node_mysql toneAmber
class node_cart,node_checkout,node_placeorder,node_history toneMint
class node_profile toneRose
class node_userdao,node_restaurantdao,node_categorydao,node_menudao,node_cartdao,node_orderdao,node_addressdao,node_favouritedao,node_dbconnector,node_customer toneIndigo
```

## Components

### Accounts

- [Registration](https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/Servlet/RegisterServlet.java): `src/main/java/com/OnlyFoods/Servlet/RegisterServlet.java`
- [Login](https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/Servlet/LoginServlet.java): `src/main/java/com/OnlyFoods/Servlet/LoginServlet.java`
- [Logout](https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/Servlet/LogoutServlet.java): `src/main/java/com/OnlyFoods/Servlet/LogoutServlet.java`

### Food Discovery

- [Restaurant Browse](https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/Servlet/RestaurantServlet.java): `src/main/java/com/OnlyFoods/Servlet/RestaurantServlet.java`
- [Category Browse](https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/Servlet/CategoryServlet.java): `src/main/java/com/OnlyFoods/Servlet/CategoryServlet.java`
- [Menu Browse](https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/Servlet/MenuServlet.java): `src/main/java/com/OnlyFoods/Servlet/MenuServlet.java`

### Cart and Orders

- [Cart Management](https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/Servlet/CartServlet.java): `src/main/java/com/OnlyFoods/Servlet/CartServlet.java`
- [Checkout](https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/Servlet/CheckoutServlet.java): `src/main/java/com/OnlyFoods/Servlet/CheckoutServlet.java`
- [Place Order](https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/Servlet/PlaceOrderServlet.java): `src/main/java/com/OnlyFoods/Servlet/PlaceOrderServlet.java`
- [Order History](https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/dao/OrderHistoryDAO.java): `src/main/java/com/OnlyFoods/dao/OrderHistoryDAO.java`

### Profile

- [Profile and Favourites](https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/Servlet/ProfileServlet.java): `src/main/java/com/OnlyFoods/Servlet/ProfileServlet.java`

### Persistence

- [User Persistence](https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/daoimp/UserDAOImpl.java): `src/main/java/com/OnlyFoods/daoimp/UserDAOImpl.java`
- [Restaurant Persistence](https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/daoimp/RestaurantDAOImpl.java): `src/main/java/com/OnlyFoods/daoimp/RestaurantDAOImpl.java`
- [Category Persistence](https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/daoimp/CategoryDAOImpl.java): `src/main/java/com/OnlyFoods/daoimp/CategoryDAOImpl.java`
- [Menu Persistence](https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/daoimp/MenuDAOImpl.java): `src/main/java/com/OnlyFoods/daoimp/MenuDAOImpl.java`
- [Cart Persistence](https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/daoimp/CartDAOImpl.java): `src/main/java/com/OnlyFoods/daoimp/CartDAOImpl.java`
- [Order Persistence](https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/daoimp/OrderDAOImpl.java): `src/main/java/com/OnlyFoods/daoimp/OrderDAOImpl.java`
- [Address Persistence](https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/daoimp/AddressDAOImpl.java): `src/main/java/com/OnlyFoods/daoimp/AddressDAOImpl.java`
- [Favourite Persistence](https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/daoimp/FavouriteDAOImpl.java): `src/main/java/com/OnlyFoods/daoimp/FavouriteDAOImpl.java`
- [JDBC Connections](https://github.com/shreenidhims/onlyfoods/blob/main/src/main/java/com/OnlyFoods/util/DBConnector.java): `src/main/java/com/OnlyFoods/util/DBConnector.java`

### Other components

- **Customer**
- **MySQL**

## Connections

- Customer → Registration: registers
- Customer → Login: signs in
- Customer → Logout: signs out
- Customer → Restaurant Browse: browses
- Customer → Category Browse: filters
- Customer → Menu Browse: explores
- Customer → Cart Management: manages cart
- Customer → Checkout: checks out
- Customer → Order History: reviews orders
- Customer → Profile and Favourites: manages account
- Registration → User Persistence: creates user
- Login → User Persistence: authenticates
- Restaurant Browse → Restaurant Persistence: loads restaurants
- Category Browse → Category Persistence: loads categories
- Menu Browse → Menu Persistence: loads menus
- Cart Management → Cart Persistence: reads and updates
- Checkout → Address Persistence: loads addresses
- Place Order → Cart Persistence: reads cart
- Place Order → Menu Persistence: resolves menu
- Place Order → Order Persistence: persists order
- Order History → Order Persistence: loads orders
- Profile and Favourites → User Persistence: updates user
- Profile and Favourites → Address Persistence: manages addresses
- Profile and Favourites → Favourite Persistence: manages favourites
- User Persistence → JDBC Connections: opens connection
- Restaurant Persistence → JDBC Connections: opens connection
- Category Persistence → JDBC Connections: opens connection
- Menu Persistence → JDBC Connections: opens connection
- Cart Persistence → JDBC Connections: opens connection
- Order Persistence → JDBC Connections: opens connection
- Address Persistence → JDBC Connections: opens connection
- Favourite Persistence → JDBC Connections: opens connection
- JDBC Connections → MySQL: connects
