# samkwibe/cs-499_project_capstone architecture

> Architecture diagram of the GitHub repository samkwibe/cs-499_project_capstone, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/samkwibe/cs-499_project_capstone
- Repository: https://github.com/samkwibe/cs-499_project_capstone

## Overview

MunchiesSNHU is a campus food-waste tracking application: staff and admins authenticate, record and manage waste, and publish approved entries; students view published campus metrics. The backend also provides reporting, prioritization, staff/user administration, feedback, tips, notifications, and an AI sustainability assistant. The README documents the main workflow and capabilities; several secondary controllers and frontend scripts are present in the tree but were not sampled, so their internal interactions are not asserted here.

Main entry points: [`snhu-foodwaste-backend/app.js`](https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/app.js) (Express app), [`snhu-foodwaste-backend/routes/foodWasteRoutes.js`](https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/routes/foodWasteRoutes.js) (Waste routes), [`public/js/app.js`](https://github.com/samkwibe/cs-499_project_capstone/blob/main/public/js/app.js) (App interactions), [`snhu-foodwaste-backend/models/User.js`](https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/models/User.js) (User accounts)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_frontend["App interactions<br/>[app.js]"]
  node_authui["Auth helpers<br/>[auth.js]"]
  node_chatui["Chat interface<br/>[chatbot.js]"]
  node_dashui["Dashboard enhancements"]
  node_charts["Chart theming<br/>[chartTheme.js]"]
  node_theme["Theme preferences<br/>[theme.js]"]
end

subgraph group_api["API and access"]
  node_app["Express app<br/>[app.js]"]
  node_authroutes["Authentication routes<br/>[authRoutes.js]"]
  node_authmw["Authentication middleware<br/>[authMiddleware.js]"]
  node_authctrl["Account controller<br/>[authController.js]"]
  node_server["Server startup<br/>[server.js]"]
end

subgraph group_waste["Waste operations"]
  node_wasteroutes["Waste routes<br/>[foodWasteRoutes.js]"]
  node_wastectrl["Waste controller"]
  node_priority["Priority scoring<br/>[wastePriority.js]"]
  node_sanitize["Waste input validation"]
end

subgraph group_support["Campus services"]
  node_chatctrl["AI sustainability assistant<br/>[chatController.js]"]
  node_chatroute["Chat routes<br/>[chatRoutes.js]"]
  node_feedback["Feedback service"]
  node_tips["Sustainability tips<br/>[tipsController.js]"]
  node_notifications["Notification settings"]
  node_staffadmin["Staff administration<br/>[staffController.js]"]
  node_useradmin["User administration<br/>[userController.js]"]
end

subgraph group_persistence["Persistence"]
  node_wastemodel[("Waste entries<br/>[FoodWasteEntry.js]")]
  node_users[("User accounts<br/>[User.js]")]
  node_dbconnect["MongoDB connection<br/>[db.js]"]
end

node_staff(("Staff / admin"))
node_student(("Student"))

node_staff -.->|"uses"| node_frontend
node_student -.->|"uses"| node_frontend
node_frontend -.->|"calls API"| node_app
node_authui -.->|"sends auth requests"| node_app
node_chatui -.->|"requests chat"| node_app
node_dashui -.->|"requests metrics"| node_app
node_charts -.->|"styles charts"| node_dashui
node_theme -.->|"sets theme"| node_frontend
node_app -->|"mounts"| node_authroutes
node_app -->|"mounts"| node_wasteroutes
node_app -->|"mounts"| node_chatroute
node_app -.->|"mounts feedback routes"| node_feedback
node_app -.->|"mounts tip routes"| node_tips
node_authroutes -->|"dispatches"| node_authctrl
node_authroutes -->|"protects routes"| node_authmw
node_authctrl -->|"reads and writes"| node_users
node_wasteroutes -->|"protects operations"| node_authmw
node_wasteroutes -->|"dispatches CRUD"| node_wastectrl
node_wasteroutes -->|"queries reports"| node_wastemodel
node_wasteroutes -->|"ranks entries"| node_priority
node_wastectrl -->|"cleans input"| node_sanitize
node_wastectrl -->|"reads and writes"| node_wastemodel
node_chatroute -->|"dispatches"| node_chatctrl
node_chatctrl -->|"reads campus data"| node_wastemodel
node_chatctrl -.->|"answers questions"| node_student
node_staffadmin -->|"manages staff"| node_users
node_notifications -->|"reads preferences"| node_users
node_useradmin -->|"manages accounts"| node_users
node_server -->|"connects database"| node_dbconnect
node_server -->|"starts"| node_app

click node_frontend "https://github.com/samkwibe/cs-499_project_capstone/blob/main/public/js/app.js"
click node_authui "https://github.com/samkwibe/cs-499_project_capstone/blob/main/public/js/auth.js"
click node_chatui "https://github.com/samkwibe/cs-499_project_capstone/blob/main/public/js/chatbot.js"
click node_dashui "https://github.com/samkwibe/cs-499_project_capstone/blob/main/public/js/dashboardEnhancements.js"
click node_charts "https://github.com/samkwibe/cs-499_project_capstone/blob/main/public/js/chartTheme.js"
click node_theme "https://github.com/samkwibe/cs-499_project_capstone/blob/main/public/js/theme.js"
click node_app "https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/app.js"
click node_authroutes "https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/routes/authRoutes.js"
click node_authmw "https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/middleware/authMiddleware.js"
click node_authctrl "https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/controllers/authController.js"
click node_wasteroutes "https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/routes/foodWasteRoutes.js"
click node_wastectrl "https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/controllers/wasteEntryController.js"
click node_priority "https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/utils/wastePriority.js"
click node_sanitize "https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/utils/sanitizeWasteBody.js"
click node_chatctrl "https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/controllers/chatController.js"
click node_chatroute "https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/routes/chatRoutes.js"
click node_feedback "https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/controllers/feedbackController.js"
click node_tips "https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/controllers/tipsController.js"
click node_notifications "https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/controllers/notificationController.js"
click node_staffadmin "https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/controllers/staffController.js"
click node_useradmin "https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/controllers/userController.js"
click node_wastemodel "https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/models/FoodWasteEntry.js"
click node_users "https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/models/User.js"
click node_dbconnect "https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/config/db.js"
click node_server "https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/server.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_frontend,node_authui,node_chatui,node_dashui,node_charts,node_theme toneBlue
class node_app,node_authroutes,node_authmw,node_authctrl,node_server toneAmber
class node_wasteroutes,node_wastectrl,node_priority,node_sanitize toneMint
class node_chatctrl,node_chatroute,node_feedback,node_tips,node_notifications,node_staffadmin,node_useradmin toneRose
class node_wastemodel,node_users,node_dbconnect,node_staff,node_student toneIndigo
```

## Components

### Web experience

- [App interactions](https://github.com/samkwibe/cs-499_project_capstone/blob/main/public/js/app.js): `public/js/app.js`
- [Auth helpers](https://github.com/samkwibe/cs-499_project_capstone/blob/main/public/js/auth.js): `public/js/auth.js`
- [Chat interface](https://github.com/samkwibe/cs-499_project_capstone/blob/main/public/js/chatbot.js): `public/js/chatbot.js`
- [Dashboard enhancements](https://github.com/samkwibe/cs-499_project_capstone/blob/main/public/js/dashboardEnhancements.js): `public/js/dashboardEnhancements.js`
- [Chart theming](https://github.com/samkwibe/cs-499_project_capstone/blob/main/public/js/chartTheme.js): `public/js/chartTheme.js`
- [Theme preferences](https://github.com/samkwibe/cs-499_project_capstone/blob/main/public/js/theme.js): `public/js/theme.js`

### API and access

- [Express app](https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/app.js): `snhu-foodwaste-backend/app.js`
- [Authentication routes](https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/routes/authRoutes.js): `snhu-foodwaste-backend/routes/authRoutes.js`
- [Authentication middleware](https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/middleware/authMiddleware.js): `snhu-foodwaste-backend/middleware/authMiddleware.js`
- [Account controller](https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/controllers/authController.js): `snhu-foodwaste-backend/controllers/authController.js`
- [Server startup](https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/server.js): `snhu-foodwaste-backend/server.js`

### Waste operations

- [Waste routes](https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/routes/foodWasteRoutes.js): `snhu-foodwaste-backend/routes/foodWasteRoutes.js`
- [Waste controller](https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/controllers/wasteEntryController.js): `snhu-foodwaste-backend/controllers/wasteEntryController.js`
- [Priority scoring](https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/utils/wastePriority.js): `snhu-foodwaste-backend/utils/wastePriority.js`
- [Waste input validation](https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/utils/sanitizeWasteBody.js): `snhu-foodwaste-backend/utils/sanitizeWasteBody.js`

### Campus services

- [AI sustainability assistant](https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/controllers/chatController.js): `snhu-foodwaste-backend/controllers/chatController.js`
- [Chat routes](https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/routes/chatRoutes.js): `snhu-foodwaste-backend/routes/chatRoutes.js`
- [Feedback service](https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/controllers/feedbackController.js): `snhu-foodwaste-backend/controllers/feedbackController.js`
- [Sustainability tips](https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/controllers/tipsController.js): `snhu-foodwaste-backend/controllers/tipsController.js`
- [Notification settings](https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/controllers/notificationController.js): `snhu-foodwaste-backend/controllers/notificationController.js`
- [Staff administration](https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/controllers/staffController.js): `snhu-foodwaste-backend/controllers/staffController.js`
- [User administration](https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/controllers/userController.js): `snhu-foodwaste-backend/controllers/userController.js`

### Persistence

- [Waste entries](https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/models/FoodWasteEntry.js): `snhu-foodwaste-backend/models/FoodWasteEntry.js`
- [User accounts](https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/models/User.js): `snhu-foodwaste-backend/models/User.js`
- [MongoDB connection](https://github.com/samkwibe/cs-499_project_capstone/blob/main/snhu-foodwaste-backend/config/db.js): `snhu-foodwaste-backend/config/db.js`

### Other components

- **Staff / admin**
- **Student**

## Connections

- Staff / admin → App interactions: uses
- Student → App interactions: uses
- App interactions → Express app: calls API (evidence: `README.md`)
- Auth helpers → Express app: sends auth requests (evidence: `README.md`)
- Chat interface → Express app: requests chat
- Dashboard enhancements → Express app: requests metrics
- Chart theming → Dashboard enhancements: styles charts
- Theme preferences → App interactions: sets theme
- Express app → Authentication routes: mounts (evidence: `snhu-foodwaste-backend/app.js`)
- Express app → Waste routes: mounts (evidence: `snhu-foodwaste-backend/app.js`)
- Express app → Chat routes: mounts (evidence: `snhu-foodwaste-backend/app.js`)
- Express app → Feedback service: mounts feedback routes (evidence: `snhu-foodwaste-backend/app.js`)
- Express app → Sustainability tips: mounts tip routes (evidence: `snhu-foodwaste-backend/app.js`)
- Authentication routes → Account controller: dispatches (evidence: `snhu-foodwaste-backend/routes/authRoutes.js`)
- Authentication routes → Authentication middleware: protects routes (evidence: `snhu-foodwaste-backend/routes/authRoutes.js`)
- Account controller → User accounts: reads and writes (evidence: `snhu-foodwaste-backend/controllers/authController.js`)
- Waste routes → Authentication middleware: protects operations (evidence: `snhu-foodwaste-backend/routes/foodWasteRoutes.js`)
- Waste routes → Waste controller: dispatches CRUD (evidence: `snhu-foodwaste-backend/routes/foodWasteRoutes.js`)
- Waste routes → Waste entries: queries reports (evidence: `snhu-foodwaste-backend/routes/foodWasteRoutes.js`)
- Waste routes → Priority scoring: ranks entries (evidence: `snhu-foodwaste-backend/routes/foodWasteRoutes.js`)
- Waste controller → Waste input validation: cleans input (evidence: `snhu-foodwaste-backend/controllers/wasteEntryController.js`)
- Waste controller → Waste entries: reads and writes (evidence: `snhu-foodwaste-backend/controllers/wasteEntryController.js`)
- Chat routes → AI sustainability assistant: dispatches (evidence: `snhu-foodwaste-backend/routes/chatRoutes.js`)
- AI sustainability assistant → Waste entries: reads campus data (evidence: `snhu-foodwaste-backend/controllers/chatController.js`)
- AI sustainability assistant → Student: answers questions
- Staff administration → User accounts: manages staff (evidence: `snhu-foodwaste-backend/controllers/staffController.js`)
- Notification settings → User accounts: reads preferences (evidence: `snhu-foodwaste-backend/controllers/notificationController.js`)
- User administration → User accounts: manages accounts (evidence: `snhu-foodwaste-backend/controllers/userController.js`)
- Server startup → MongoDB connection: connects database (evidence: `snhu-foodwaste-backend/server.js`)
- Server startup → Express app: starts (evidence: `snhu-foodwaste-backend/server.js`)
