# baelagare/nemsu-feas architecture

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

- Interactive diagram: https://gitdiagram.com/baelagare/nemsu-feas
- Repository: https://github.com/baelagare/nemsu-feas

## Overview

NEMSU-FEAS is a university faculty evaluation system: students verify a session, choose an academic period, department, faculty member and rubric, then submit ratings and feedback; HR administrators and deans manage evaluation configuration and review analytics and reports. The React SPA calls a Laravel API, whose services and Eloquent models implement evaluation and analytics behavior. The sampled files show authentication and rubric administration in detail; other documented API capabilities are represented at their controller or subsystem level. Some backend and report-export internals were not sampled, so those links are omitted or marked unverified.

Main entry points: [`backend/routes/api.php`](https://github.com/baelagare/nemsu-feas/blob/main/backend/routes/api.php) (API routes), [`src/services/api.js`](https://github.com/baelagare/nemsu-feas/blob/main/src/services/api.js) (API client), [`backend/app/Models/Evaluation.php`](https://github.com/baelagare/nemsu-feas/blob/main/backend/app/Models/Evaluation.php) (Evaluation records), [`src/App.jsx`](https://github.com/baelagare/nemsu-feas/blob/main/src/App.jsx) (Page routing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Web application"]
  node_spa["Page routing<br/>[App.jsx]"]
  node_student_flow["Evaluation form"]
  node_dashboard["HR dashboard"]
  node_auth_ui["Session context<br/>[AuthContext.jsx]"]
  node_api_client["API client<br/>[api.js]"]
end

subgraph group_api["API and identity"]
  node_routes["API routes<br/>[api.php]"]
  node_auth_controller["Authentication<br/>[AuthController.php]"]
  node_google_auth["Google identity"]
end

subgraph group_evaluation["Evaluation operations"]
  node_periods["Academic periods"]
  node_catalog["Department and faculty"]
  node_rubric["Evaluation rubric"]
  node_submission["Evaluation submission"]
  node_eval_service["Evaluation processing"]
  node_evaluation_model[("Evaluation records<br/>[Evaluation.php]")]
end

subgraph group_insights["Administration and insights"]
  node_admin["Admin configuration"]
  node_admin_faculty["Faculty management"]
  node_analytics["Analytics service"]
  node_reports["Report export"]
end

node_student(("Student evaluator"))
node_hr(("HR / dean"))
node_google{{"Google token service"}}

node_spa -->|"routes to"| node_student_flow
node_spa -->|"routes to"| node_dashboard
node_spa -->|"provides session"| node_auth_ui
node_student -->|"submits evaluation"| node_student_flow
node_hr -->|"reviews data"| node_dashboard
node_auth_ui -->|"calls"| node_api_client
node_student_flow -->|"requests data"| node_api_client
node_dashboard -->|"requests analytics"| node_api_client
node_api_client -->|"sends API requests"| node_routes
node_routes -->|"dispatches auth"| node_auth_controller
node_routes -->|"dispatches periods"| node_periods
node_routes -->|"dispatches catalog"| node_catalog
node_routes -->|"dispatches rubric"| node_rubric
node_routes -->|"dispatches submissions"| node_submission
node_routes -->|"dispatches rubric admin"| node_admin
node_routes -->|"dispatches faculty admin"| node_admin_faculty
node_routes -->|"dispatches analytics"| node_analytics
node_routes -->|"dispatches reports"| node_reports
node_auth_controller -->|"authenticates with"| node_google_auth
node_google_auth -->|"verifies token"| node_google
node_submission -->|"processes submission"| node_eval_service
node_eval_service -->|"creates records"| node_evaluation_model
node_admin -->|"checks ratings"| node_evaluation_model
node_admin_faculty -->|"preserves evaluation links"| node_evaluation_model
node_analytics -.->|"reads evaluation data"| node_evaluation_model

click node_spa "https://github.com/baelagare/nemsu-feas/blob/main/src/App.jsx"
click node_student_flow "https://github.com/baelagare/nemsu-feas/blob/main/src/pages/StudentEvaluationPage.jsx"
click node_dashboard "https://github.com/baelagare/nemsu-feas/blob/main/src/pages/HRDashboardPage.jsx"
click node_auth_ui "https://github.com/baelagare/nemsu-feas/blob/main/src/context/AuthContext.jsx"
click node_api_client "https://github.com/baelagare/nemsu-feas/blob/main/src/services/api.js"
click node_routes "https://github.com/baelagare/nemsu-feas/blob/main/backend/routes/api.php"
click node_auth_controller "https://github.com/baelagare/nemsu-feas/blob/main/backend/app/Http/Controllers/Api/V1/AuthController.php"
click node_google_auth "https://github.com/baelagare/nemsu-feas/blob/main/backend/app/Services/GoogleAuthService.php"
click node_periods "https://github.com/baelagare/nemsu-feas/blob/main/backend/app/Http/Controllers/Api/V1/AcademicPeriodController.php"
click node_catalog "https://github.com/baelagare/nemsu-feas/blob/main/backend/app/Http/Controllers/Api/V1/FacultyController.php"
click node_rubric "https://github.com/baelagare/nemsu-feas/blob/main/backend/app/Http/Controllers/Api/V1/EvaluationRubricController.php"
click node_submission "https://github.com/baelagare/nemsu-feas/blob/main/backend/app/Http/Controllers/Api/V1/EvaluationSubmissionController.php"
click node_eval_service "https://github.com/baelagare/nemsu-feas/blob/main/backend/app/Services/EvaluationService.php"
click node_evaluation_model "https://github.com/baelagare/nemsu-feas/blob/main/backend/app/Models/Evaluation.php"
click node_admin "https://github.com/baelagare/nemsu-feas/blob/main/backend/app/Http/Controllers/Api/V1/Admin/AdminRubricController.php"
click node_admin_faculty "https://github.com/baelagare/nemsu-feas/blob/main/backend/app/Http/Controllers/Api/V1/Admin/AdminFacultyController.php"
click node_analytics "https://github.com/baelagare/nemsu-feas/blob/main/backend/app/Services/AnalyticsService.php"
click node_reports "https://github.com/baelagare/nemsu-feas/blob/main/backend/app/Http/Controllers/Api/V1/ReportExportController.php"

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_spa,node_student_flow,node_dashboard,node_auth_ui,node_api_client toneBlue
class node_routes,node_auth_controller,node_google_auth toneAmber
class node_periods,node_catalog,node_rubric,node_submission,node_eval_service,node_evaluation_model toneMint
class node_admin,node_admin_faculty,node_analytics,node_reports toneRose
class node_student,node_hr,node_google toneIndigo
```

## Components

### Web application

- [Page routing](https://github.com/baelagare/nemsu-feas/blob/main/src/App.jsx): `src/App.jsx`
- [Evaluation form](https://github.com/baelagare/nemsu-feas/blob/main/src/pages/StudentEvaluationPage.jsx): `src/pages/StudentEvaluationPage.jsx`
- [HR dashboard](https://github.com/baelagare/nemsu-feas/blob/main/src/pages/HRDashboardPage.jsx): `src/pages/HRDashboardPage.jsx`
- [Session context](https://github.com/baelagare/nemsu-feas/blob/main/src/context/AuthContext.jsx): `src/context/AuthContext.jsx`
- [API client](https://github.com/baelagare/nemsu-feas/blob/main/src/services/api.js): `src/services/api.js`

### API and identity

- [API routes](https://github.com/baelagare/nemsu-feas/blob/main/backend/routes/api.php): `backend/routes/api.php`
- [Authentication](https://github.com/baelagare/nemsu-feas/blob/main/backend/app/Http/Controllers/Api/V1/AuthController.php): `backend/app/Http/Controllers/Api/V1/AuthController.php`
- [Google identity](https://github.com/baelagare/nemsu-feas/blob/main/backend/app/Services/GoogleAuthService.php): `backend/app/Services/GoogleAuthService.php`

### Evaluation operations

- [Academic periods](https://github.com/baelagare/nemsu-feas/blob/main/backend/app/Http/Controllers/Api/V1/AcademicPeriodController.php): `backend/app/Http/Controllers/Api/V1/AcademicPeriodController.php`
- [Department and faculty](https://github.com/baelagare/nemsu-feas/blob/main/backend/app/Http/Controllers/Api/V1/FacultyController.php): `backend/app/Http/Controllers/Api/V1/FacultyController.php`
- [Evaluation rubric](https://github.com/baelagare/nemsu-feas/blob/main/backend/app/Http/Controllers/Api/V1/EvaluationRubricController.php): `backend/app/Http/Controllers/Api/V1/EvaluationRubricController.php`
- [Evaluation submission](https://github.com/baelagare/nemsu-feas/blob/main/backend/app/Http/Controllers/Api/V1/EvaluationSubmissionController.php): `backend/app/Http/Controllers/Api/V1/EvaluationSubmissionController.php`
- [Evaluation processing](https://github.com/baelagare/nemsu-feas/blob/main/backend/app/Services/EvaluationService.php): `backend/app/Services/EvaluationService.php`
- [Evaluation records](https://github.com/baelagare/nemsu-feas/blob/main/backend/app/Models/Evaluation.php): `backend/app/Models/Evaluation.php`

### Administration and insights

- [Admin configuration](https://github.com/baelagare/nemsu-feas/blob/main/backend/app/Http/Controllers/Api/V1/Admin/AdminRubricController.php): `backend/app/Http/Controllers/Api/V1/Admin/AdminRubricController.php`
- [Faculty management](https://github.com/baelagare/nemsu-feas/blob/main/backend/app/Http/Controllers/Api/V1/Admin/AdminFacultyController.php): `backend/app/Http/Controllers/Api/V1/Admin/AdminFacultyController.php`
- [Analytics service](https://github.com/baelagare/nemsu-feas/blob/main/backend/app/Services/AnalyticsService.php): `backend/app/Services/AnalyticsService.php`
- [Report export](https://github.com/baelagare/nemsu-feas/blob/main/backend/app/Http/Controllers/Api/V1/ReportExportController.php): `backend/app/Http/Controllers/Api/V1/ReportExportController.php`

### Other components

- **Student evaluator**
- **HR / dean**
- **Google token service**

## Connections

- Page routing → Evaluation form: routes to (evidence: `src/App.jsx`)
- Page routing → HR dashboard: routes to (evidence: `src/App.jsx`)
- Page routing → Session context: provides session (evidence: `src/App.jsx`)
- Student evaluator → Evaluation form: submits evaluation
- HR / dean → HR dashboard: reviews data
- Session context → API client: calls (evidence: `src/context/AuthContext.jsx`)
- Evaluation form → API client: requests data (evidence: `src/pages/StudentEvaluationPage.jsx`)
- HR dashboard → API client: requests analytics (evidence: `src/pages/HRDashboardPage.jsx`)
- API client → API routes: sends API requests (evidence: `src/services/api.js`)
- API routes → Authentication: dispatches auth (evidence: `backend/routes/api.php`)
- API routes → Academic periods: dispatches periods (evidence: `backend/routes/api.php`)
- API routes → Department and faculty: dispatches catalog (evidence: `backend/routes/api.php`)
- API routes → Evaluation rubric: dispatches rubric (evidence: `backend/routes/api.php`)
- API routes → Evaluation submission: dispatches submissions (evidence: `backend/routes/api.php`)
- API routes → Admin configuration: dispatches rubric admin (evidence: `backend/routes/api.php`)
- API routes → Faculty management: dispatches faculty admin (evidence: `backend/routes/api.php`)
- API routes → Analytics service: dispatches analytics (evidence: `backend/routes/api.php`)
- API routes → Report export: dispatches reports (evidence: `backend/routes/api.php`)
- Authentication → Google identity: authenticates with (evidence: `backend/app/Http/Controllers/Api/V1/AuthController.php`)
- Google identity → Google token service: verifies token (evidence: `backend/app/Services/GoogleAuthService.php`)
- Evaluation submission → Evaluation processing: processes submission (evidence: `backend/app/Http/Controllers/Api/V1/EvaluationSubmissionController.php`)
- Evaluation processing → Evaluation records: creates records (evidence: `backend/app/Services/EvaluationService.php`)
- Admin configuration → Evaluation records: checks ratings (evidence: `backend/app/Http/Controllers/Api/V1/Admin/AdminRubricController.php`)
- Faculty management → Evaluation records: preserves evaluation links (evidence: `backend/app/Http/Controllers/Api/V1/Admin/AdminFacultyController.php`)
- Analytics service → Evaluation records: reads evaluation data
