# neniteja/nutribite architecture

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

- Interactive diagram: https://gitdiagram.com/neniteja/nutribite
- Repository: https://github.com/neniteja/nutribite

## Overview

NutriBite is a role-based food ordering and restaurant-management web app. Customers register or log in, browse restaurants and menus, build a cart, check out through Razorpay, and view orders. Restaurants manage menu items and update order statuses; admins manage users and restaurants. Controllers coordinate services, which use Spring Data repositories for persistence. The README documents payment verification and welcome email; the sampled source confirms those integrations, though the Razorpay API call was not tested end to end.

Main entry points: [`src/main/webapp`](https://github.com/neniteja/nutribite/tree/main/src/main/webapp) (JSP Web Pages), [`src/main/java/com/nutribite/controller/CustomerController.java`](https://github.com/neniteja/nutribite/blob/main/src/main/java/com/nutribite/controller/CustomerController.java) (Customer Ordering), [`src/main/java/com/nutribite/controller/AdminController.java`](https://github.com/neniteja/nutribite/blob/main/src/main/java/com/nutribite/controller/AdminController.java) (Admin Management), [`src/main/java/com/nutribite/controller/AuthController.java`](https://github.com/neniteja/nutribite/blob/main/src/main/java/com/nutribite/controller/AuthController.java) (Authentication)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Identity"]
  node_auth_controller["Authentication"]
  node_user_service["User Service<br/>[UserService.java]"]
  node_email_service["Welcome Email<br/>[EmailService.java]"]
end

subgraph group_ordering["Customer Ordering"]
  node_web["JSP Web Pages"]
  node_customer_controller["Customer Ordering"]
  node_food_service["Food Service<br/>[FoodService.java]"]
  node_order_service["Order Service<br/>[OrderService.java]"]
  node_razorpay_service["Payment Service"]
end

subgraph group_management["Restaurant Admin"]
  node_restaurant_controller["Restaurant Management"]
  node_admin_controller["Admin Management"]
end

subgraph group_data["Services And Data"]
  node_restaurant_service["Restaurant Service"]
  node_food_repository["Food Repository"]
  node_order_repository["Order Repository"]
  node_restaurant_repository["Restaurant Repository"]
  node_user_repository["User Repository"]
end

node_customer(("Customer"))
node_restaurant_user(("Restaurant User"))
node_admin_user(("Admin"))
node_mail["Mail Provider"]
node_razorpay["Razorpay"]
node_mysql[("MySQL")]

node_customer -->|"uses"| node_web
node_restaurant_user -->|"uses"| node_web
node_admin_user -->|"uses"| node_web
node_web -->|"submits auth"| node_auth_controller
node_auth_controller -->|"registers or validates"| node_user_service
node_auth_controller -->|"validates restaurant"| node_restaurant_service
node_auth_controller -->|"sends welcome"| node_email_service
node_email_service -->|"sends message"| node_mail
node_web -->|"requests ordering"| node_customer_controller
node_customer_controller -->|"lists restaurants"| node_restaurant_service
node_customer_controller -->|"loads menu"| node_food_service
node_customer_controller -->|"places and lists orders"| node_order_service
node_customer_controller -->|"creates and verifies payment"| node_razorpay_service
node_razorpay_service -->|"creates payment order"| node_razorpay
node_web -->|"requests management"| node_restaurant_controller
node_restaurant_controller -->|"manages menu"| node_food_service
node_restaurant_controller -->|"reads and updates orders"| node_order_service
node_web -->|"requests administration"| node_admin_controller
node_admin_controller -->|"manages users"| node_user_service
node_admin_controller -->|"manages restaurants"| node_restaurant_service
node_admin_controller -->|"removes restaurant menu"| node_food_service
node_admin_controller -->|"reads and deletes orders"| node_order_service
node_food_service -->|"reads and writes"| node_food_repository
node_order_service -->|"reads and writes"| node_order_repository
node_restaurant_service -->|"reads and writes"| node_restaurant_repository
node_user_service -->|"reads and writes"| node_user_repository
node_food_repository -->|"persists food"| node_mysql
node_order_repository -->|"persists orders"| node_mysql
node_restaurant_repository -->|"persists restaurants"| node_mysql
node_user_repository -->|"persists users"| node_mysql

click node_web "https://github.com/neniteja/nutribite/tree/main/src/main/webapp"
click node_auth_controller "https://github.com/neniteja/nutribite/blob/main/src/main/java/com/nutribite/controller/AuthController.java"
click node_user_service "https://github.com/neniteja/nutribite/blob/main/src/main/java/com/nutribite/service/UserService.java"
click node_restaurant_service "https://github.com/neniteja/nutribite/blob/main/src/main/java/com/nutribite/service/RestaurantService.java"
click node_email_service "https://github.com/neniteja/nutribite/blob/main/src/main/java/com/nutribite/service/EmailService.java"
click node_customer_controller "https://github.com/neniteja/nutribite/blob/main/src/main/java/com/nutribite/controller/CustomerController.java"
click node_food_service "https://github.com/neniteja/nutribite/blob/main/src/main/java/com/nutribite/service/FoodService.java"
click node_order_service "https://github.com/neniteja/nutribite/blob/main/src/main/java/com/nutribite/service/OrderService.java"
click node_razorpay_service "https://github.com/neniteja/nutribite/blob/main/src/main/java/com/nutribite/service/RazorpayService.java"
click node_restaurant_controller "https://github.com/neniteja/nutribite/blob/main/src/main/java/com/nutribite/controller/RestaurantController.java"
click node_admin_controller "https://github.com/neniteja/nutribite/blob/main/src/main/java/com/nutribite/controller/AdminController.java"
click node_food_repository "https://github.com/neniteja/nutribite/blob/main/src/main/java/com/nutribite/repository/FoodRepository.java"
click node_order_repository "https://github.com/neniteja/nutribite/blob/main/src/main/java/com/nutribite/repository/OrderRepository.java"
click node_restaurant_repository "https://github.com/neniteja/nutribite/blob/main/src/main/java/com/nutribite/repository/RestaurantRepository.java"
click node_user_repository "https://github.com/neniteja/nutribite/blob/main/src/main/java/com/nutribite/repository/UserRepository.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_auth_controller,node_user_service,node_email_service,node_restaurant_user toneBlue
class node_web,node_customer_controller,node_food_service,node_order_service,node_razorpay_service,node_mysql toneAmber
class node_restaurant_controller,node_admin_controller toneMint
class node_restaurant_service,node_food_repository,node_order_repository,node_restaurant_repository,node_user_repository toneRose
class node_customer,node_admin_user,node_mail,node_razorpay toneIndigo
```

## Components

### Identity

- [Authentication](https://github.com/neniteja/nutribite/blob/main/src/main/java/com/nutribite/controller/AuthController.java): `src/main/java/com/nutribite/controller/AuthController.java`
- [User Service](https://github.com/neniteja/nutribite/blob/main/src/main/java/com/nutribite/service/UserService.java): `src/main/java/com/nutribite/service/UserService.java`
- [Welcome Email](https://github.com/neniteja/nutribite/blob/main/src/main/java/com/nutribite/service/EmailService.java): `src/main/java/com/nutribite/service/EmailService.java`

### Customer Ordering

- [JSP Web Pages](https://github.com/neniteja/nutribite/tree/main/src/main/webapp): `src/main/webapp`
- [Customer Ordering](https://github.com/neniteja/nutribite/blob/main/src/main/java/com/nutribite/controller/CustomerController.java): `src/main/java/com/nutribite/controller/CustomerController.java`
- [Food Service](https://github.com/neniteja/nutribite/blob/main/src/main/java/com/nutribite/service/FoodService.java): `src/main/java/com/nutribite/service/FoodService.java`
- [Order Service](https://github.com/neniteja/nutribite/blob/main/src/main/java/com/nutribite/service/OrderService.java): `src/main/java/com/nutribite/service/OrderService.java`
- [Payment Service](https://github.com/neniteja/nutribite/blob/main/src/main/java/com/nutribite/service/RazorpayService.java): `src/main/java/com/nutribite/service/RazorpayService.java`

### Restaurant Admin

- [Restaurant Management](https://github.com/neniteja/nutribite/blob/main/src/main/java/com/nutribite/controller/RestaurantController.java): `src/main/java/com/nutribite/controller/RestaurantController.java`
- [Admin Management](https://github.com/neniteja/nutribite/blob/main/src/main/java/com/nutribite/controller/AdminController.java): `src/main/java/com/nutribite/controller/AdminController.java`

### Services And Data

- [Restaurant Service](https://github.com/neniteja/nutribite/blob/main/src/main/java/com/nutribite/service/RestaurantService.java): `src/main/java/com/nutribite/service/RestaurantService.java`
- [Food Repository](https://github.com/neniteja/nutribite/blob/main/src/main/java/com/nutribite/repository/FoodRepository.java): `src/main/java/com/nutribite/repository/FoodRepository.java`
- [Order Repository](https://github.com/neniteja/nutribite/blob/main/src/main/java/com/nutribite/repository/OrderRepository.java): `src/main/java/com/nutribite/repository/OrderRepository.java`
- [Restaurant Repository](https://github.com/neniteja/nutribite/blob/main/src/main/java/com/nutribite/repository/RestaurantRepository.java): `src/main/java/com/nutribite/repository/RestaurantRepository.java`
- [User Repository](https://github.com/neniteja/nutribite/blob/main/src/main/java/com/nutribite/repository/UserRepository.java): `src/main/java/com/nutribite/repository/UserRepository.java`

### Other components

- **Customer**
- **Restaurant User**
- **Admin**
- **Mail Provider**
- **Razorpay**
- **MySQL**

## Connections

- Customer → JSP Web Pages: uses
- Restaurant User → JSP Web Pages: uses
- Admin → JSP Web Pages: uses
- JSP Web Pages → Authentication: submits auth
- Authentication → User Service: registers or validates
- Authentication → Restaurant Service: validates restaurant
- Authentication → Welcome Email: sends welcome
- Welcome Email → Mail Provider: sends message
- JSP Web Pages → Customer Ordering: requests ordering
- Customer Ordering → Restaurant Service: lists restaurants
- Customer Ordering → Food Service: loads menu
- Customer Ordering → Order Service: places and lists orders
- Customer Ordering → Payment Service: creates and verifies payment
- Payment Service → Razorpay: creates payment order
- JSP Web Pages → Restaurant Management: requests management
- Restaurant Management → Food Service: manages menu
- Restaurant Management → Order Service: reads and updates orders
- JSP Web Pages → Admin Management: requests administration
- Admin Management → User Service: manages users
- Admin Management → Restaurant Service: manages restaurants
- Admin Management → Food Service: removes restaurant menu
- Admin Management → Order Service: reads and deletes orders
- Food Service → Food Repository: reads and writes
- Order Service → Order Repository: reads and writes
- Restaurant Service → Restaurant Repository: reads and writes
- User Service → User Repository: reads and writes
- Food Repository → MySQL: persists food
- Order Repository → MySQL: persists orders
- Restaurant Repository → MySQL: persists restaurants
- User Repository → MySQL: persists users
