# anomus420/smart-waste-management architecture

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

- Interactive diagram: https://gitdiagram.com/anomus420/smart-waste-management
- Repository: https://github.com/anomus420/smart-waste-management

## Overview

Smart Waste Management is a citizen-facing waste services application with an administrative console. Citizens authenticate, file and track waste complaints, request e-waste pickups, find collection centres, and read awareness content; administrators review service activity and manage complaints, users, pickups, centres, and articles. The React client calls an Express API, whose controllers implement domain operations over MongoDB models. Notifications, AI assistance, and Google sign-in are additional capabilities. Some domain controllers and service implementations were not sampled, so their internal wiring is represented only where supported by the tree, README, or route setup.

Main entry points: [`frontend/src/routes.jsx`](https://github.com/anomus420/smart-waste-management/blob/main/frontend/src/routes.jsx) (Page routes), [`backend/src/app.js`](https://github.com/anomus420/smart-waste-management/blob/main/backend/src/app.js) (Express application), [`frontend/src/services/api.js`](https://github.com/anomus420/smart-waste-management/blob/main/frontend/src/services/api.js) (HTTP client), [`backend/src/models`](https://github.com/anomus420/smart-waste-management/tree/main/backend/src/models) (MongoDB models)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web application"]
  node_web["React application<br/>[App.jsx]"]
  node_routes["Page routes<br/>[routes.jsx]"]
  node_authui["Authentication UI<br/>[LoginForm.jsx]"]
  node_complaintui["Complaint UI<br/>[FileComplaint.jsx]"]
  node_ewasteui["Pickup and map UI<br/>[EWasteRequest.jsx]"]
  node_awarenessui["Awareness UI<br/>[AwarenessHub.jsx]"]
  node_adminui["Admin console<br/>[AdminDashboard.jsx]"]
  node_api_client["HTTP client<br/>[api.js]"]
end

subgraph group_api["API and routing"]
  node_server_app["Express application<br/>[app.js]"]
  node_auth_routes["Auth routes<br/>[auth.routes.js]"]
  node_complaint_routes["Complaint routes"]
  node_ewaste_routes["E-waste routes<br/>[ewaste.routes.js]"]
  node_awareness_routes["Awareness routes"]
  node_admin_routes["Admin routes<br/>[admin.routes.js]"]
end

subgraph group_domain["Waste services"]
  node_auth_controller["Authentication<br/>[authController.js]"]
  node_complaint_controller["Complaint handling"]
  node_ewaste_controller["Pickup handling"]
  node_awareness_controller["Article handling"]
  node_admin_controller["Administration<br/>[adminController.js]"]
  node_chat_controller["Waste assistant<br/>[chatController.js]"]
end

subgraph group_platform["Data and integrations"]
  node_models["MongoDB models"]
  node_mongo[("MongoDB<br/>[db.js]")]
  node_notifications["Notification service"]
  node_email["Email service<br/>[emailService.js]"]
  node_sms["SMS service<br/>[smsService.js]"]
  node_ai["AI service<br/>[aiService.js]"]
end

node_citizens(("Citizens"))
node_admins(("Administrators"))
node_google{{"Google OAuth"}}
node_mail_provider{{"Email provider"}}
node_sms_provider{{"SMS provider"}}
node_openai{{"OpenAI"}}

node_citizens -->|"use"| node_web
node_admins -->|"use"| node_web
node_web -->|"renders"| node_routes
node_routes -->|"routes to"| node_authui
node_routes -->|"routes to"| node_complaintui
node_routes -->|"routes to"| node_ewasteui
node_routes -->|"routes to"| node_awarenessui
node_routes -->|"routes to"| node_adminui
node_authui -->|"requests"| node_api_client
node_complaintui -->|"requests"| node_api_client
node_ewasteui -->|"requests"| node_api_client
node_awarenessui -->|"requests"| node_api_client
node_adminui -->|"requests"| node_api_client
node_api_client -->|"HTTP requests"| node_server_app
node_server_app -->|"mounts"| node_auth_routes
node_server_app -->|"mounts"| node_complaint_routes
node_server_app -->|"mounts"| node_ewaste_routes
node_server_app -->|"mounts"| node_awareness_routes
node_server_app -->|"mounts"| node_admin_routes
node_auth_routes -->|"dispatches"| node_auth_controller
node_complaint_routes -->|"dispatches"| node_complaint_controller
node_ewaste_routes -->|"dispatches"| node_ewaste_controller
node_awareness_routes -->|"dispatches"| node_awareness_controller
node_admin_routes -->|"dispatches"| node_admin_controller
node_auth_controller -->|"reads and writes"| node_models
node_complaint_controller -->|"reads and writes"| node_models
node_ewaste_controller -->|"reads and writes"| node_models
node_awareness_controller -->|"reads and writes"| node_models
node_admin_controller -->|"reads and writes"| node_models
node_models -->|"persists"| node_mongo
node_admin_controller -->|"requests alerts"| node_notifications
node_auth_controller -->|"sends messages"| node_email
node_admin_controller -->|"sends alerts"| node_email
node_admin_controller -->|"sends alerts"| node_sms
node_email -.->|"delivers"| node_mail_provider
node_sms -.->|"delivers"| node_sms_provider
node_google -.->|"OAuth sign-in"| node_auth_routes
node_chat_controller -.->|"requests suggestions"| node_ai
node_ai -.->|"queries"| node_openai

click node_web "https://github.com/anomus420/smart-waste-management/blob/main/frontend/src/App.jsx"
click node_routes "https://github.com/anomus420/smart-waste-management/blob/main/frontend/src/routes.jsx"
click node_authui "https://github.com/anomus420/smart-waste-management/blob/main/frontend/src/components/auth/LoginForm.jsx"
click node_complaintui "https://github.com/anomus420/smart-waste-management/blob/main/frontend/src/pages/FileComplaint.jsx"
click node_ewasteui "https://github.com/anomus420/smart-waste-management/blob/main/frontend/src/pages/EWasteRequest.jsx"
click node_awarenessui "https://github.com/anomus420/smart-waste-management/blob/main/frontend/src/pages/AwarenessHub.jsx"
click node_adminui "https://github.com/anomus420/smart-waste-management/blob/main/frontend/src/pages/AdminDashboard.jsx"
click node_api_client "https://github.com/anomus420/smart-waste-management/blob/main/frontend/src/services/api.js"
click node_server_app "https://github.com/anomus420/smart-waste-management/blob/main/backend/src/app.js"
click node_auth_routes "https://github.com/anomus420/smart-waste-management/blob/main/backend/src/routes/auth.routes.js"
click node_complaint_routes "https://github.com/anomus420/smart-waste-management/blob/main/backend/src/routes/complaint.routes.js"
click node_ewaste_routes "https://github.com/anomus420/smart-waste-management/blob/main/backend/src/routes/ewaste.routes.js"
click node_awareness_routes "https://github.com/anomus420/smart-waste-management/blob/main/backend/src/routes/awareness.routes.js"
click node_admin_routes "https://github.com/anomus420/smart-waste-management/blob/main/backend/src/routes/admin.routes.js"
click node_auth_controller "https://github.com/anomus420/smart-waste-management/blob/main/backend/src/controllers/authController.js"
click node_complaint_controller "https://github.com/anomus420/smart-waste-management/blob/main/backend/src/controllers/complaintController.js"
click node_ewaste_controller "https://github.com/anomus420/smart-waste-management/blob/main/backend/src/controllers/ewasteController.js"
click node_awareness_controller "https://github.com/anomus420/smart-waste-management/blob/main/backend/src/controllers/awarenessController.js"
click node_admin_controller "https://github.com/anomus420/smart-waste-management/blob/main/backend/src/controllers/adminController.js"
click node_chat_controller "https://github.com/anomus420/smart-waste-management/blob/main/backend/src/controllers/chatController.js"
click node_models "https://github.com/anomus420/smart-waste-management/tree/main/backend/src/models"
click node_mongo "https://github.com/anomus420/smart-waste-management/blob/main/backend/src/config/db.js"
click node_notifications "https://github.com/anomus420/smart-waste-management/blob/main/backend/src/services/notificationService.js"
click node_email "https://github.com/anomus420/smart-waste-management/blob/main/backend/src/services/emailService.js"
click node_sms "https://github.com/anomus420/smart-waste-management/blob/main/backend/src/services/smsService.js"
click node_ai "https://github.com/anomus420/smart-waste-management/blob/main/backend/src/services/aiService.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_web,node_routes,node_authui,node_complaintui,node_ewasteui,node_awarenessui,node_adminui,node_api_client toneBlue
class node_server_app,node_auth_routes,node_complaint_routes,node_ewaste_routes,node_awareness_routes,node_admin_routes toneAmber
class node_auth_controller,node_complaint_controller,node_ewaste_controller,node_awareness_controller,node_admin_controller,node_chat_controller toneMint
class node_models,node_mongo,node_notifications,node_email,node_sms,node_ai toneRose
class node_citizens,node_admins,node_google,node_mail_provider,node_sms_provider,node_openai toneIndigo
```

## Components

### Web application

- [React application](https://github.com/anomus420/smart-waste-management/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Page routes](https://github.com/anomus420/smart-waste-management/blob/main/frontend/src/routes.jsx): `frontend/src/routes.jsx`
- [Authentication UI](https://github.com/anomus420/smart-waste-management/blob/main/frontend/src/components/auth/LoginForm.jsx): `frontend/src/components/auth/LoginForm.jsx`
- [Complaint UI](https://github.com/anomus420/smart-waste-management/blob/main/frontend/src/pages/FileComplaint.jsx): `frontend/src/pages/FileComplaint.jsx`
- [Pickup and map UI](https://github.com/anomus420/smart-waste-management/blob/main/frontend/src/pages/EWasteRequest.jsx): `frontend/src/pages/EWasteRequest.jsx`
- [Awareness UI](https://github.com/anomus420/smart-waste-management/blob/main/frontend/src/pages/AwarenessHub.jsx): `frontend/src/pages/AwarenessHub.jsx`
- [Admin console](https://github.com/anomus420/smart-waste-management/blob/main/frontend/src/pages/AdminDashboard.jsx): `frontend/src/pages/AdminDashboard.jsx`
- [HTTP client](https://github.com/anomus420/smart-waste-management/blob/main/frontend/src/services/api.js): `frontend/src/services/api.js`

### API and routing

- [Express application](https://github.com/anomus420/smart-waste-management/blob/main/backend/src/app.js): `backend/src/app.js`
- [Auth routes](https://github.com/anomus420/smart-waste-management/blob/main/backend/src/routes/auth.routes.js): `backend/src/routes/auth.routes.js`
- [Complaint routes](https://github.com/anomus420/smart-waste-management/blob/main/backend/src/routes/complaint.routes.js): `backend/src/routes/complaint.routes.js`
- [E-waste routes](https://github.com/anomus420/smart-waste-management/blob/main/backend/src/routes/ewaste.routes.js): `backend/src/routes/ewaste.routes.js`
- [Awareness routes](https://github.com/anomus420/smart-waste-management/blob/main/backend/src/routes/awareness.routes.js): `backend/src/routes/awareness.routes.js`
- [Admin routes](https://github.com/anomus420/smart-waste-management/blob/main/backend/src/routes/admin.routes.js): `backend/src/routes/admin.routes.js`

### Waste services

- [Authentication](https://github.com/anomus420/smart-waste-management/blob/main/backend/src/controllers/authController.js): `backend/src/controllers/authController.js`
- [Complaint handling](https://github.com/anomus420/smart-waste-management/blob/main/backend/src/controllers/complaintController.js): `backend/src/controllers/complaintController.js`
- [Pickup handling](https://github.com/anomus420/smart-waste-management/blob/main/backend/src/controllers/ewasteController.js): `backend/src/controllers/ewasteController.js`
- [Article handling](https://github.com/anomus420/smart-waste-management/blob/main/backend/src/controllers/awarenessController.js): `backend/src/controllers/awarenessController.js`
- [Administration](https://github.com/anomus420/smart-waste-management/blob/main/backend/src/controllers/adminController.js): `backend/src/controllers/adminController.js`
- [Waste assistant](https://github.com/anomus420/smart-waste-management/blob/main/backend/src/controllers/chatController.js): `backend/src/controllers/chatController.js`

### Data and integrations

- [MongoDB models](https://github.com/anomus420/smart-waste-management/tree/main/backend/src/models): `backend/src/models`
- [MongoDB](https://github.com/anomus420/smart-waste-management/blob/main/backend/src/config/db.js): `backend/src/config/db.js`
- [Notification service](https://github.com/anomus420/smart-waste-management/blob/main/backend/src/services/notificationService.js): `backend/src/services/notificationService.js`
- [Email service](https://github.com/anomus420/smart-waste-management/blob/main/backend/src/services/emailService.js): `backend/src/services/emailService.js`
- [SMS service](https://github.com/anomus420/smart-waste-management/blob/main/backend/src/services/smsService.js): `backend/src/services/smsService.js`
- [AI service](https://github.com/anomus420/smart-waste-management/blob/main/backend/src/services/aiService.js): `backend/src/services/aiService.js`

### Other components

- **Citizens**
- **Administrators**
- **Google OAuth**
- **Email provider**
- **SMS provider**
- **OpenAI**

## Connections

- Citizens → React application: use
- Administrators → React application: use
- React application → Page routes: renders
- Page routes → Authentication UI: routes to
- Page routes → Complaint UI: routes to
- Page routes → Pickup and map UI: routes to
- Page routes → Awareness UI: routes to
- Page routes → Admin console: routes to
- Authentication UI → HTTP client: requests
- Complaint UI → HTTP client: requests
- Pickup and map UI → HTTP client: requests
- Awareness UI → HTTP client: requests
- Admin console → HTTP client: requests
- HTTP client → Express application: HTTP requests
- Express application → Auth routes: mounts
- Express application → Complaint routes: mounts
- Express application → E-waste routes: mounts
- Express application → Awareness routes: mounts
- Express application → Admin routes: mounts
- Auth routes → Authentication: dispatches
- Complaint routes → Complaint handling: dispatches
- E-waste routes → Pickup handling: dispatches
- Awareness routes → Article handling: dispatches
- Admin routes → Administration: dispatches
- Authentication → MongoDB models: reads and writes
- Complaint handling → MongoDB models: reads and writes
- Pickup handling → MongoDB models: reads and writes
- Article handling → MongoDB models: reads and writes
- Administration → MongoDB models: reads and writes
- MongoDB models → MongoDB: persists
- Administration → Notification service: requests alerts
- Authentication → Email service: sends messages
- Administration → Email service: sends alerts
- Administration → SMS service: sends alerts
- Email service → Email provider: delivers
- SMS service → SMS provider: delivers
- Google OAuth → Auth routes: OAuth sign-in
- Waste assistant → AI service: requests suggestions
- AI service → OpenAI: queries
