# shakthinami/complainhub architecture

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

## Overview

ComplainHub lets students authenticate and submit campus complaints, then supports administrative triage, priority prediction, status updates and resolution. The React application routes student and administrator workflows; Spring controllers delegate to services that persist complaint and user data in Firebase, while the documented Python service predicts priority. The graph preserves authentication, user administration, complaint lifecycle and dashboard capabilities. Some frontend-to-API and backend-to-ML wiring comes from the README rather than sampled call sites; those links are shown at the documented subsystem level.

Main entry points: [`ComplainHubBackend/src/main/java/com/complainhub/service/ComplaintService.java`](https://github.com/shakthinami/complainhub/blob/main/ComplainHubBackend/src/main/java/com/complainhub/service/ComplaintService.java) (Complaint service), [`ComplainHubFr/src/pages`](https://github.com/shakthinami/complainhub/tree/main/ComplainHubFr/src/pages) (Student pages), [`ComplainHubFr/src/pages/admin`](https://github.com/shakthinami/complainhub/tree/main/ComplainHubFr/src/pages/admin) (Admin pages), [`ComplainHubFr/src/App.tsx`](https://github.com/shakthinami/complainhub/blob/main/ComplainHubFr/src/App.tsx) (Application routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Web application"]
  node_app["Application routes<br/>[App.tsx]"]
  node_student_pages["Student pages"]
  node_admin_pages["Admin pages"]
end

subgraph group_identity["Identity and users"]
  node_auth_context["Auth context<br/>[AuthContext.tsx]"]
  node_firebase_front["Firebase client<br/>[firebaseConfig.ts]"]
  node_firebase_auth{{"Firebase Auth"}}
  node_user_controller["User API"]
  node_auth_controller["Token verification"]
  node_user_service["User service<br/>[UserService.java]"]
end

subgraph group_complaints["Complaint management"]
  node_complaint_controller["Complaint API"]
  node_complaint_service["Complaint service"]
  node_resolution["Complaint outcome"]
end

subgraph group_backend["Backend services"]
  node_firestore[("Firestore")]
  node_firebase_config["Firebase setup"]
  node_security_config["Security setup"]
end

subgraph group_prediction["Priority prediction"]
  node_priority_api["Priority API"]
  node_model_training["Model training"]
end

node_student(("Student"))
node_administrator(("Administrator"))

node_student -->|"uses"| node_app
node_administrator -->|"uses"| node_app
node_app -->|"routes to"| node_student_pages
node_app -->|"routes to"| node_admin_pages
node_student_pages -->|"uses identity"| node_auth_context
node_admin_pages -->|"uses identity"| node_auth_context
node_auth_context -->|"uses"| node_firebase_front
node_firebase_front -->|"authenticates"| node_firebase_auth
node_firebase_front -->|"reads and writes"| node_firestore
node_student_pages -->|"submits and tracks"| node_complaint_controller
node_admin_pages -->|"manages complaints"| node_complaint_controller
node_student_pages -.->|"manages profile"| node_user_controller
node_admin_pages -.->|"manages users"| node_user_controller
node_user_controller -->|"delegates"| node_user_service
node_auth_controller -->|"verifies token"| node_firebase_auth
node_auth_controller -->|"upserts user"| node_user_service
node_user_service -->|"creates and queries"| node_firebase_auth
node_user_service -->|"reads and writes"| node_firestore
node_complaint_controller -->|"delegates"| node_complaint_service
node_complaint_service -->|"reads and writes"| node_firestore
node_complaint_service -.->|"requests prediction"| node_priority_api
node_priority_api -.->|"returns priority"| node_complaint_service
node_model_training -.->|"provides trained model"| node_priority_api
node_complaint_service -->|"records status and updates"| node_resolution
node_firebase_config -->|"configures access"| node_firestore
node_firebase_config -->|"configures access"| node_firebase_auth
node_security_config -.->|"secures API"| node_complaint_controller
node_security_config -.->|"secures API"| node_user_controller

click node_app "https://github.com/shakthinami/complainhub/blob/main/ComplainHubFr/src/App.tsx"
click node_student_pages "https://github.com/shakthinami/complainhub/tree/main/ComplainHubFr/src/pages"
click node_admin_pages "https://github.com/shakthinami/complainhub/tree/main/ComplainHubFr/src/pages/admin"
click node_auth_context "https://github.com/shakthinami/complainhub/blob/main/ComplainHubFr/src/contexts/AuthContext.tsx"
click node_firebase_front "https://github.com/shakthinami/complainhub/blob/main/ComplainHubFr/src/firebaseConfig.ts"
click node_user_controller "https://github.com/shakthinami/complainhub/blob/main/ComplainHubBackend/src/main/java/com/complainhub/controller/UserController.java"
click node_auth_controller "https://github.com/shakthinami/complainhub/blob/main/ComplainHubBackend/src/main/java/com/complainhub/controller/AuthController.java"
click node_user_service "https://github.com/shakthinami/complainhub/blob/main/ComplainHubBackend/src/main/java/com/complainhub/service/UserService.java"
click node_complaint_controller "https://github.com/shakthinami/complainhub/blob/main/ComplainHubBackend/src/main/java/com/complainhub/controller/ComplaintController.java"
click node_complaint_service "https://github.com/shakthinami/complainhub/blob/main/ComplainHubBackend/src/main/java/com/complainhub/service/ComplaintService.java"
click node_firebase_config "https://github.com/shakthinami/complainhub/blob/main/ComplainHubBackend/src/main/java/com/complainhub/config/FirebaseConfig.java"
click node_security_config "https://github.com/shakthinami/complainhub/blob/main/ComplainHubBackend/src/main/java/com/complainhub/config/SecurityConfig.java"
click node_priority_api "https://github.com/shakthinami/complainhub/blob/main/ComplainHubBackend/src/main/resources/complaint_priority_api.py"
click node_model_training "https://github.com/shakthinami/complainhub/blob/main/ComplainHubBackend/src/main/resources/train_complaint_priority_model.py"

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_student_pages,node_admin_pages toneBlue
class node_auth_context,node_firebase_front,node_firebase_auth,node_user_controller,node_auth_controller,node_user_service toneAmber
class node_complaint_controller,node_complaint_service,node_resolution toneMint
class node_firestore,node_firebase_config,node_security_config toneRose
class node_priority_api,node_model_training,node_student,node_administrator toneIndigo
```

## Components

### Web application

- [Application routes](https://github.com/shakthinami/complainhub/blob/main/ComplainHubFr/src/App.tsx): `ComplainHubFr/src/App.tsx`
- [Student pages](https://github.com/shakthinami/complainhub/tree/main/ComplainHubFr/src/pages): `ComplainHubFr/src/pages`
- [Admin pages](https://github.com/shakthinami/complainhub/tree/main/ComplainHubFr/src/pages/admin): `ComplainHubFr/src/pages/admin`

### Identity and users

- [Auth context](https://github.com/shakthinami/complainhub/blob/main/ComplainHubFr/src/contexts/AuthContext.tsx): `ComplainHubFr/src/contexts/AuthContext.tsx`
- [Firebase client](https://github.com/shakthinami/complainhub/blob/main/ComplainHubFr/src/firebaseConfig.ts): `ComplainHubFr/src/firebaseConfig.ts`
- **Firebase Auth**
- [User API](https://github.com/shakthinami/complainhub/blob/main/ComplainHubBackend/src/main/java/com/complainhub/controller/UserController.java): `ComplainHubBackend/src/main/java/com/complainhub/controller/UserController.java`
- [Token verification](https://github.com/shakthinami/complainhub/blob/main/ComplainHubBackend/src/main/java/com/complainhub/controller/AuthController.java): `ComplainHubBackend/src/main/java/com/complainhub/controller/AuthController.java`
- [User service](https://github.com/shakthinami/complainhub/blob/main/ComplainHubBackend/src/main/java/com/complainhub/service/UserService.java): `ComplainHubBackend/src/main/java/com/complainhub/service/UserService.java`

### Complaint management

- [Complaint API](https://github.com/shakthinami/complainhub/blob/main/ComplainHubBackend/src/main/java/com/complainhub/controller/ComplaintController.java): `ComplainHubBackend/src/main/java/com/complainhub/controller/ComplaintController.java`
- [Complaint service](https://github.com/shakthinami/complainhub/blob/main/ComplainHubBackend/src/main/java/com/complainhub/service/ComplaintService.java): `ComplainHubBackend/src/main/java/com/complainhub/service/ComplaintService.java`
- **Complaint outcome**

### Backend services

- **Firestore**
- [Firebase setup](https://github.com/shakthinami/complainhub/blob/main/ComplainHubBackend/src/main/java/com/complainhub/config/FirebaseConfig.java): `ComplainHubBackend/src/main/java/com/complainhub/config/FirebaseConfig.java`
- [Security setup](https://github.com/shakthinami/complainhub/blob/main/ComplainHubBackend/src/main/java/com/complainhub/config/SecurityConfig.java): `ComplainHubBackend/src/main/java/com/complainhub/config/SecurityConfig.java`

### Priority prediction

- [Priority API](https://github.com/shakthinami/complainhub/blob/main/ComplainHubBackend/src/main/resources/complaint_priority_api.py): `ComplainHubBackend/src/main/resources/complaint_priority_api.py`
- [Model training](https://github.com/shakthinami/complainhub/blob/main/ComplainHubBackend/src/main/resources/train_complaint_priority_model.py): `ComplainHubBackend/src/main/resources/train_complaint_priority_model.py`

### Other components

- **Student**
- **Administrator**

## Connections

- Student → Application routes: uses
- Administrator → Application routes: uses
- Application routes → Student pages: routes to
- Application routes → Admin pages: routes to
- Student pages → Auth context: uses identity
- Admin pages → Auth context: uses identity
- Auth context → Firebase client: uses
- Firebase client → Firebase Auth: authenticates
- Firebase client → Firestore: reads and writes
- Student pages → Complaint API: submits and tracks
- Admin pages → Complaint API: manages complaints
- Student pages → User API: manages profile
- Admin pages → User API: manages users
- User API → User service: delegates
- Token verification → Firebase Auth: verifies token
- Token verification → User service: upserts user
- User service → Firebase Auth: creates and queries
- User service → Firestore: reads and writes
- Complaint API → Complaint service: delegates
- Complaint service → Firestore: reads and writes
- Complaint service → Priority API: requests prediction
- Priority API → Complaint service: returns priority
- Model training → Priority API: provides trained model
- Complaint service → Complaint outcome: records status and updates
- Firebase setup → Firestore: configures access
- Firebase setup → Firebase Auth: configures access
- Security setup → Complaint API: secures API
- Security setup → User API: secures API
