# jatinmourya24932/complaint-portal-2 architecture

> Architecture diagram of the GitHub repository jatinmourya24932/complaint-portal-2, 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/jatinmourya24932/complaint-portal-2
- Repository: https://github.com/jatinmourya24932/complaint-portal-2

## Overview

This is a role-based educational-institution complaint portal: users register or sign in, students submit and track complaints, and faculty/HOD roles process assigned complaints while administrators manage users and institutional records. The React app routes users to role-specific pages and calls the Spring API; backend services implement complaint, profile, and administration operations backed by repositories. The README documents attachments, anonymous complaints, and role workflows, but sampled source does not establish every controller-to-service link or the attachment storage mechanism, so those details are represented conservatively.

Main entry points: [`Backend/complaintportal/src/main/java/com/complaintportal/ComplaintportalApplication.java`](https://github.com/jatinmourya24932/complaint-portal-2/blob/main/Backend/complaintportal/src/main/java/com/complaintportal/ComplaintportalApplication.java) (Spring API), [`frontend/complaint-portal-frontend/src/routes/AppRoutes.jsx`](https://github.com/jatinmourya24932/complaint-portal-2/blob/main/frontend/complaint-portal-frontend/src/routes/AppRoutes.jsx) (Role routes), [`Backend/complaintportal/src/main/java/com/complaintportal/complaint/service/impl/ComplaintServiceImpl.java`](https://github.com/jatinmourya24932/complaint-portal-2/blob/main/Backend/complaintportal/src/main/java/com/complaintportal/complaint/service/impl/ComplaintServiceImpl.java) (Complaint workflow), [`frontend/complaint-portal-frontend/src/services/ComplaintService.js`](https://github.com/jatinmourya24932/complaint-portal-2/blob/main/frontend/complaint-portal-frontend/src/services/ComplaintService.js) (API services)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web client"]
  node_frontend["React application<br/>[App.jsx]"]
  node_routes["Role routes<br/>[AppRoutes.jsx]"]
  node_student_ui["Student pages"]
  node_role_ui["Role dashboards<br/>[Dashboard.jsx]"]
  node_tracking_ui["Complaint tracking<br/>[TrackComplaint.jsx]"]
  node_client_services["API services"]
end

subgraph group_identity["Identity and access"]
  node_auth_controller["Auth endpoints"]
  node_user_service["User operations"]
  node_jwt["JWT security<br/>[JwtFilter.java]"]
end

subgraph group_complaint["Complaint lifecycle"]
  node_api["Spring API"]
  node_complaint_controller["Complaint endpoints"]
  node_complaint_service["Complaint workflow"]
  node_tracking_id["Tracking IDs"]
  node_comments["Complaint discussion"]
  node_attachments["Complaint attachments"]
end

subgraph group_people["Profiles and administration"]
  node_profiles["Student and faculty profiles"]
  node_assignments["Faculty assignments"]
  node_master_data["Institution master data"]
end

subgraph group_infra["Persistence and notifications"]
  node_relational_db[("Application database")]
  node_email["Email delivery"]
end

node_user(("Portal user"))

node_user -->|"uses"| node_frontend
node_frontend -->|"renders"| node_routes
node_routes -->|"routes"| node_student_ui
node_routes -->|"routes"| node_role_ui
node_routes -->|"routes"| node_tracking_ui
node_student_ui -->|"requests"| node_client_services
node_tracking_ui -->|"requests"| node_client_services
node_role_ui -->|"requests"| node_client_services
node_client_services -->|"HTTP requests"| node_api
node_api -->|"dispatches"| node_auth_controller
node_auth_controller -->|"invokes"| node_user_service
node_user_service -->|"reads/writes"| node_relational_db
node_api -->|"filters requests"| node_jwt
node_api -->|"dispatches"| node_complaint_controller
node_complaint_controller -->|"invokes"| node_complaint_service
node_complaint_service -->|"reads/writes"| node_relational_db
node_complaint_service -->|"generates IDs"| node_tracking_id
node_api -->|"dispatches"| node_comments
node_comments -->|"reads/writes"| node_relational_db
node_api -->|"dispatches"| node_attachments
node_attachments -->|"persists metadata"| node_relational_db
node_profiles -->|"reads/writes"| node_relational_db
node_profiles -->|"looks up records"| node_master_data
node_assignments -->|"reads/writes"| node_relational_db
node_assignments -->|"looks up records"| node_master_data
node_complaint_service -.->|"notifies"| node_email

click node_frontend "https://github.com/jatinmourya24932/complaint-portal-2/blob/main/frontend/complaint-portal-frontend/src/App.jsx"
click node_routes "https://github.com/jatinmourya24932/complaint-portal-2/blob/main/frontend/complaint-portal-frontend/src/routes/AppRoutes.jsx"
click node_student_ui "https://github.com/jatinmourya24932/complaint-portal-2/blob/main/frontend/complaint-portal-frontend/src/pages/student/CreateComplaint.jsx"
click node_role_ui "https://github.com/jatinmourya24932/complaint-portal-2/blob/main/frontend/complaint-portal-frontend/src/pages/Dashboard.jsx"
click node_tracking_ui "https://github.com/jatinmourya24932/complaint-portal-2/blob/main/frontend/complaint-portal-frontend/src/pages/TrackComplaint.jsx"
click node_client_services "https://github.com/jatinmourya24932/complaint-portal-2/blob/main/frontend/complaint-portal-frontend/src/services/ComplaintService.js"
click node_api "https://github.com/jatinmourya24932/complaint-portal-2/blob/main/Backend/complaintportal/src/main/java/com/complaintportal/ComplaintportalApplication.java"
click node_auth_controller "https://github.com/jatinmourya24932/complaint-portal-2/blob/main/Backend/complaintportal/src/main/java/com/complaintportal/user/controller/AuthController.java"
click node_user_service "https://github.com/jatinmourya24932/complaint-portal-2/blob/main/Backend/complaintportal/src/main/java/com/complaintportal/user/service/impl/UserServiceImpl.java"
click node_jwt "https://github.com/jatinmourya24932/complaint-portal-2/blob/main/Backend/complaintportal/src/main/java/com/complaintportal/security/JwtFilter.java"
click node_complaint_controller "https://github.com/jatinmourya24932/complaint-portal-2/blob/main/Backend/complaintportal/src/main/java/com/complaintportal/complaint/controller/ComplaintController.java"
click node_complaint_service "https://github.com/jatinmourya24932/complaint-portal-2/blob/main/Backend/complaintportal/src/main/java/com/complaintportal/complaint/service/impl/ComplaintServiceImpl.java"
click node_tracking_id "https://github.com/jatinmourya24932/complaint-portal-2/blob/main/Backend/complaintportal/src/main/java/com/complaintportal/complaint/util/TrackingIdGenerator.java"
click node_comments "https://github.com/jatinmourya24932/complaint-portal-2/blob/main/Backend/complaintportal/src/main/java/com/complaintportal/comment/controller/CommentController.java"
click node_attachments "https://github.com/jatinmourya24932/complaint-portal-2/blob/main/Backend/complaintportal/src/main/java/com/complaintportal/attachment/controller/AttachmentController.java"
click node_profiles "https://github.com/jatinmourya24932/complaint-portal-2/blob/main/Backend/complaintportal/src/main/java/com/complaintportal/studentprofile/service/StudentProfileService.java"
click node_assignments "https://github.com/jatinmourya24932/complaint-portal-2/blob/main/Backend/complaintportal/src/main/java/com/complaintportal/facultysubject/service/FacultySubjectService.java"
click node_master_data "https://github.com/jatinmourya24932/complaint-portal-2/blob/main/Backend/complaintportal/src/main/java/com/complaintportal/master/department/service/DepartmentService.java"
click node_email "https://github.com/jatinmourya24932/complaint-portal-2/blob/main/Backend/complaintportal/src/main/java/com/complaintportal/email/service/EmailServiceImpl.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_frontend,node_routes,node_student_ui,node_role_ui,node_tracking_ui,node_client_services,node_user toneBlue
class node_auth_controller,node_user_service,node_jwt toneAmber
class node_api,node_complaint_controller,node_complaint_service,node_tracking_id,node_comments,node_attachments toneMint
class node_profiles,node_assignments,node_master_data toneRose
class node_relational_db,node_email toneIndigo
```

## Components

### Web client

- [React application](https://github.com/jatinmourya24932/complaint-portal-2/blob/main/frontend/complaint-portal-frontend/src/App.jsx): `frontend/complaint-portal-frontend/src/App.jsx`
- [Role routes](https://github.com/jatinmourya24932/complaint-portal-2/blob/main/frontend/complaint-portal-frontend/src/routes/AppRoutes.jsx): `frontend/complaint-portal-frontend/src/routes/AppRoutes.jsx`
- [Student pages](https://github.com/jatinmourya24932/complaint-portal-2/blob/main/frontend/complaint-portal-frontend/src/pages/student/CreateComplaint.jsx): `frontend/complaint-portal-frontend/src/pages/student/CreateComplaint.jsx`
- [Role dashboards](https://github.com/jatinmourya24932/complaint-portal-2/blob/main/frontend/complaint-portal-frontend/src/pages/Dashboard.jsx): `frontend/complaint-portal-frontend/src/pages/Dashboard.jsx`
- [Complaint tracking](https://github.com/jatinmourya24932/complaint-portal-2/blob/main/frontend/complaint-portal-frontend/src/pages/TrackComplaint.jsx): `frontend/complaint-portal-frontend/src/pages/TrackComplaint.jsx`
- [API services](https://github.com/jatinmourya24932/complaint-portal-2/blob/main/frontend/complaint-portal-frontend/src/services/ComplaintService.js): `frontend/complaint-portal-frontend/src/services/ComplaintService.js`

### Identity and access

- [Auth endpoints](https://github.com/jatinmourya24932/complaint-portal-2/blob/main/Backend/complaintportal/src/main/java/com/complaintportal/user/controller/AuthController.java): `Backend/complaintportal/src/main/java/com/complaintportal/user/controller/AuthController.java`
- [User operations](https://github.com/jatinmourya24932/complaint-portal-2/blob/main/Backend/complaintportal/src/main/java/com/complaintportal/user/service/impl/UserServiceImpl.java): `Backend/complaintportal/src/main/java/com/complaintportal/user/service/impl/UserServiceImpl.java`
- [JWT security](https://github.com/jatinmourya24932/complaint-portal-2/blob/main/Backend/complaintportal/src/main/java/com/complaintportal/security/JwtFilter.java): `Backend/complaintportal/src/main/java/com/complaintportal/security/JwtFilter.java`

### Complaint lifecycle

- [Spring API](https://github.com/jatinmourya24932/complaint-portal-2/blob/main/Backend/complaintportal/src/main/java/com/complaintportal/ComplaintportalApplication.java): `Backend/complaintportal/src/main/java/com/complaintportal/ComplaintportalApplication.java`
- [Complaint endpoints](https://github.com/jatinmourya24932/complaint-portal-2/blob/main/Backend/complaintportal/src/main/java/com/complaintportal/complaint/controller/ComplaintController.java): `Backend/complaintportal/src/main/java/com/complaintportal/complaint/controller/ComplaintController.java`
- [Complaint workflow](https://github.com/jatinmourya24932/complaint-portal-2/blob/main/Backend/complaintportal/src/main/java/com/complaintportal/complaint/service/impl/ComplaintServiceImpl.java): `Backend/complaintportal/src/main/java/com/complaintportal/complaint/service/impl/ComplaintServiceImpl.java`
- [Tracking IDs](https://github.com/jatinmourya24932/complaint-portal-2/blob/main/Backend/complaintportal/src/main/java/com/complaintportal/complaint/util/TrackingIdGenerator.java): `Backend/complaintportal/src/main/java/com/complaintportal/complaint/util/TrackingIdGenerator.java`
- [Complaint discussion](https://github.com/jatinmourya24932/complaint-portal-2/blob/main/Backend/complaintportal/src/main/java/com/complaintportal/comment/controller/CommentController.java): `Backend/complaintportal/src/main/java/com/complaintportal/comment/controller/CommentController.java`
- [Complaint attachments](https://github.com/jatinmourya24932/complaint-portal-2/blob/main/Backend/complaintportal/src/main/java/com/complaintportal/attachment/controller/AttachmentController.java): `Backend/complaintportal/src/main/java/com/complaintportal/attachment/controller/AttachmentController.java`

### Profiles and administration

- [Student and faculty profiles](https://github.com/jatinmourya24932/complaint-portal-2/blob/main/Backend/complaintportal/src/main/java/com/complaintportal/studentprofile/service/StudentProfileService.java): `Backend/complaintportal/src/main/java/com/complaintportal/studentprofile/service/StudentProfileService.java`
- [Faculty assignments](https://github.com/jatinmourya24932/complaint-portal-2/blob/main/Backend/complaintportal/src/main/java/com/complaintportal/facultysubject/service/FacultySubjectService.java): `Backend/complaintportal/src/main/java/com/complaintportal/facultysubject/service/FacultySubjectService.java`
- [Institution master data](https://github.com/jatinmourya24932/complaint-portal-2/blob/main/Backend/complaintportal/src/main/java/com/complaintportal/master/department/service/DepartmentService.java): `Backend/complaintportal/src/main/java/com/complaintportal/master/department/service/DepartmentService.java`

### Persistence and notifications

- **Application database**
- [Email delivery](https://github.com/jatinmourya24932/complaint-portal-2/blob/main/Backend/complaintportal/src/main/java/com/complaintportal/email/service/EmailServiceImpl.java): `Backend/complaintportal/src/main/java/com/complaintportal/email/service/EmailServiceImpl.java`

### Other components

- **Portal user**

## Connections

- Portal user → React application: uses
- React application → Role routes: renders
- Role routes → Student pages: routes
- Role routes → Role dashboards: routes
- Role routes → Complaint tracking: routes
- Student pages → API services: requests
- Complaint tracking → API services: requests
- Role dashboards → API services: requests
- API services → Spring API: HTTP requests
- Spring API → Auth endpoints: dispatches
- Auth endpoints → User operations: invokes
- User operations → Application database: reads/writes
- Spring API → JWT security: filters requests
- Spring API → Complaint endpoints: dispatches
- Complaint endpoints → Complaint workflow: invokes
- Complaint workflow → Application database: reads/writes
- Complaint workflow → Tracking IDs: generates IDs
- Spring API → Complaint discussion: dispatches
- Complaint discussion → Application database: reads/writes
- Spring API → Complaint attachments: dispatches
- Complaint attachments → Application database: persists metadata
- Student and faculty profiles → Application database: reads/writes
- Student and faculty profiles → Institution master data: looks up records
- Faculty assignments → Application database: reads/writes
- Faculty assignments → Institution master data: looks up records
- Complaint workflow → Email delivery: notifies
