# nur-al-mumit/quran-learning-progress architecture

> Architecture diagram of the GitHub repository nur-al-mumit/quran-learning-progress, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/nur-al-mumit/quran-learning-progress
- Repository: https://github.com/nur-al-mumit/quran-learning-progress

## Overview

This is a Quran study-circle learning and administration application, with a Nuxt frontend and Express/MongoDB backend. Its principal operational workflow is staff managing students and class dates, recording attendance, and reviewing attendance/dashboard summaries; students also have sign-in, profile, attendance, and dashboard areas. The sampled backend confirms the API ownership and data access shown below. Frontend page wiring was not sampled, so its feature pages are represented without speculative calls to the API.

Main entry points: [`backend/server.js`](https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/server.js) (Express API), [`backend/middleware/authMiddleware.js`](https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/middleware/authMiddleware.js) (Access control), [`backend/controllers/dashboardController.js`](https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/controllers/dashboardController.js) (Dashboard statistics), [`backend/models/User.js`](https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/models/User.js) (User records)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Frontend"]
  node_public_pages["Public study pages<br/>[index.vue]"]
  node_auth_pages["Sign-in and sign-up<br/>[sign-in.vue]"]
  node_student_pages["Student pages<br/>[attendance.vue]"]
  node_admin_pages["Admin pages<br/>[attendance.vue]"]
  node_plans_pages["Plans and competitions<br/>[arrangement.vue]"]
  node_axios["API request helper<br/>[useAxios.js]"]
end

subgraph group_api["API"]
  node_api_service["Express API<br/>[server.js]"]
end

subgraph group_identity["Identity"]
  node_auth_routes["Auth routes<br/>[authRoutes.js]"]
  node_auth_controller["Auth operations<br/>[authController.js]"]
  node_auth_middleware["Access control<br/>[authMiddleware.js]"]
  node_user_routes["Student routes<br/>[userRoutes.js]"]
  node_user_controller["Student and profile operations<br/>[userController.js]"]
  node_user_model[("User records<br/>[User.js]")]
end

subgraph group_learning["Learning records"]
  node_attendance_routes["Attendance routes"]
  node_attendance_controller["Attendance operations"]
  node_attendance_model[("Attendance records<br/>[Attendance.js]")]
  node_date_routes["Class-date routes<br/>[classDateRoutes.js]"]
  node_date_controller["Class-date operations"]
  node_date_model[("Class dates<br/>[ClassDate.js]")]
end

subgraph group_overview["Reporting"]
  node_dashboard_routes["Dashboard routes<br/>[dashboardRoutes.js]"]
  node_dashboard_controller["Dashboard statistics"]
end

node_visitor(("Visitor / user"))
node_mongo[("MongoDB")]

node_visitor -->|"browses"| node_public_pages
node_visitor -->|"signs in"| node_auth_pages
node_visitor -->|"uses"| node_student_pages
node_visitor -->|"manages"| node_admin_pages
node_visitor -->|"explores"| node_plans_pages
node_api_service -->|"mounts"| node_auth_routes
node_api_service -->|"mounts"| node_attendance_routes
node_api_service -->|"mounts"| node_user_routes
node_api_service -->|"mounts"| node_date_routes
node_api_service -->|"mounts"| node_dashboard_routes
node_auth_routes -->|"dispatches"| node_auth_controller
node_auth_routes -->|"checks protected routes"| node_auth_middleware
node_auth_controller -->|"reads and creates"| node_user_model
node_auth_middleware -->|"checks user"| node_user_model
node_user_routes -->|"checks access"| node_auth_middleware
node_user_routes -->|"dispatches"| node_user_controller
node_user_controller -->|"reads and writes"| node_user_model
node_attendance_routes -->|"checks access"| node_auth_middleware
node_attendance_routes -->|"dispatches"| node_attendance_controller
node_attendance_controller -->|"reads and writes"| node_attendance_model
node_date_routes -->|"checks access"| node_auth_middleware
node_date_routes -->|"dispatches"| node_date_controller
node_date_controller -->|"reads and writes"| node_date_model
node_dashboard_routes -->|"checks access"| node_auth_middleware
node_dashboard_routes -->|"dispatches"| node_dashboard_controller
node_dashboard_controller -->|"counts students"| node_user_model
node_dashboard_controller -->|"summarizes records"| node_attendance_model
node_dashboard_controller -->|"reads schedule"| node_date_model
node_api_service -->|"connects via config"| node_mongo
node_axios -.->|"sends HTTP requests"| node_api_service

click node_public_pages "https://github.com/nur-al-mumit/quran-learning-progress/blob/master/frontend/pages/index.vue"
click node_auth_pages "https://github.com/nur-al-mumit/quran-learning-progress/blob/master/frontend/pages/(student)/(Auth)/sign-in.vue"
click node_student_pages "https://github.com/nur-al-mumit/quran-learning-progress/blob/master/frontend/pages/(student)/attendance.vue"
click node_admin_pages "https://github.com/nur-al-mumit/quran-learning-progress/blob/master/frontend/pages/admin/attendance.vue"
click node_plans_pages "https://github.com/nur-al-mumit/quran-learning-progress/blob/master/frontend/pages/arrangement.vue"
click node_axios "https://github.com/nur-al-mumit/quran-learning-progress/blob/master/frontend/composables/useAxios.js"
click node_api_service "https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/server.js"
click node_auth_routes "https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/routes/authRoutes.js"
click node_auth_controller "https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/controllers/authController.js"
click node_auth_middleware "https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/middleware/authMiddleware.js"
click node_user_routes "https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/routes/userRoutes.js"
click node_user_controller "https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/controllers/userController.js"
click node_user_model "https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/models/User.js"
click node_attendance_routes "https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/routes/attendanceRoutes.js"
click node_attendance_controller "https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/controllers/attendanceController.js"
click node_attendance_model "https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/models/Attendance.js"
click node_date_routes "https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/routes/classDateRoutes.js"
click node_date_controller "https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/controllers/classDateController.js"
click node_date_model "https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/models/ClassDate.js"
click node_dashboard_routes "https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/routes/dashboardRoutes.js"
click node_dashboard_controller "https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/controllers/dashboardController.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_public_pages,node_auth_pages,node_student_pages,node_admin_pages,node_plans_pages,node_axios,node_visitor toneBlue
class node_api_service,node_mongo toneAmber
class node_auth_routes,node_auth_controller,node_auth_middleware,node_user_routes,node_user_controller,node_user_model toneMint
class node_attendance_routes,node_attendance_controller,node_attendance_model,node_date_routes,node_date_controller,node_date_model toneRose
class node_dashboard_routes,node_dashboard_controller toneIndigo
```

## Components

### Frontend

- [Public study pages](https://github.com/nur-al-mumit/quran-learning-progress/blob/master/frontend/pages/index.vue): `frontend/pages/index.vue`
- [Sign-in and sign-up](https://github.com/nur-al-mumit/quran-learning-progress/blob/master/frontend/pages/(student)/(Auth)/sign-in.vue): `frontend/pages/(student)/(Auth)/sign-in.vue`
- [Student pages](https://github.com/nur-al-mumit/quran-learning-progress/blob/master/frontend/pages/(student)/attendance.vue): `frontend/pages/(student)/attendance.vue`
- [Admin pages](https://github.com/nur-al-mumit/quran-learning-progress/blob/master/frontend/pages/admin/attendance.vue): `frontend/pages/admin/attendance.vue`
- [Plans and competitions](https://github.com/nur-al-mumit/quran-learning-progress/blob/master/frontend/pages/arrangement.vue): `frontend/pages/arrangement.vue`
- [API request helper](https://github.com/nur-al-mumit/quran-learning-progress/blob/master/frontend/composables/useAxios.js): `frontend/composables/useAxios.js`

### API

- [Express API](https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/server.js): `backend/server.js`

### Identity

- [Auth routes](https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/routes/authRoutes.js): `backend/routes/authRoutes.js`
- [Auth operations](https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/controllers/authController.js): `backend/controllers/authController.js`
- [Access control](https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/middleware/authMiddleware.js): `backend/middleware/authMiddleware.js`
- [Student routes](https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/routes/userRoutes.js): `backend/routes/userRoutes.js`
- [Student and profile operations](https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/controllers/userController.js): `backend/controllers/userController.js`
- [User records](https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/models/User.js): `backend/models/User.js`

### Learning records

- [Attendance routes](https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/routes/attendanceRoutes.js): `backend/routes/attendanceRoutes.js`
- [Attendance operations](https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/controllers/attendanceController.js): `backend/controllers/attendanceController.js`
- [Attendance records](https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/models/Attendance.js): `backend/models/Attendance.js`
- [Class-date routes](https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/routes/classDateRoutes.js): `backend/routes/classDateRoutes.js`
- [Class-date operations](https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/controllers/classDateController.js): `backend/controllers/classDateController.js`
- [Class dates](https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/models/ClassDate.js): `backend/models/ClassDate.js`

### Reporting

- [Dashboard routes](https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/routes/dashboardRoutes.js): `backend/routes/dashboardRoutes.js`
- [Dashboard statistics](https://github.com/nur-al-mumit/quran-learning-progress/blob/master/backend/controllers/dashboardController.js): `backend/controllers/dashboardController.js`

### Other components

- **Visitor / user**
- **MongoDB**

## Connections

- Visitor / user → Public study pages: browses
- Visitor / user → Sign-in and sign-up: signs in
- Visitor / user → Student pages: uses
- Visitor / user → Admin pages: manages
- Visitor / user → Plans and competitions: explores
- Express API → Auth routes: mounts
- Express API → Attendance routes: mounts
- Express API → Student routes: mounts
- Express API → Class-date routes: mounts
- Express API → Dashboard routes: mounts
- Auth routes → Auth operations: dispatches
- Auth routes → Access control: checks protected routes
- Auth operations → User records: reads and creates
- Access control → User records: checks user
- Student routes → Access control: checks access
- Student routes → Student and profile operations: dispatches
- Student and profile operations → User records: reads and writes
- Attendance routes → Access control: checks access
- Attendance routes → Attendance operations: dispatches
- Attendance operations → Attendance records: reads and writes
- Class-date routes → Access control: checks access
- Class-date routes → Class-date operations: dispatches
- Class-date operations → Class dates: reads and writes
- Dashboard routes → Access control: checks access
- Dashboard routes → Dashboard statistics: dispatches
- Dashboard statistics → User records: counts students
- Dashboard statistics → Attendance records: summarizes records
- Dashboard statistics → Class dates: reads schedule
- Express API → MongoDB: connects via config
- API request helper → Express API: sends HTTP requests
