# mahaanandareddy200611-droid/attendance-system architecture

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

- Interactive diagram: https://gitdiagram.com/mahaanandareddy200611-droid/attendance-system
- Repository: https://github.com/mahaanandareddy200611-droid/attendance-system

## Overview

Attendance-System has lecturer web and student mobile clients backed by an Express API. Its core workflow is lecturer session creation and QR retrieval, followed by student token verification and attendance recording. Authentication supports signup, login, and OTP password reset. The README also advertises device, biometric, GPS, and anti-cheating checks, but the sampled implementation does not establish their wiring; the student app tree appears to be a scaffold. The tree and MongoDB configuration indicate MongoDB despite the README’s PostgreSQL reference.

Main entry points: [`backend/src/modules/Attendance/AttendanceService.js`](https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/modules/Attendance/AttendanceService.js) (Attendance Service), [`backend/src/modules/Attendance/AttendanceRouter.js`](https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/modules/Attendance/AttendanceRouter.js) (Attendance Routes), [`backend/server.js`](https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/server.js) (Express Server), [`backend/src/modules/Auth/AuthRouter.js`](https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/modules/Auth/AuthRouter.js) (Auth Routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_clients["Client Apps"]
  node_lecturer_ui["Lecturer Web UI<br/>[App.jsx]"]
  node_student_ui["Student App<br/>[index.tsx]"]
end

subgraph group_api["API and Security"]
  node_server["Express Server<br/>[server.js]"]
  node_auth_middleware["JWT Authentication<br/>[Auth.js]"]
  node_role_middleware["Role Authorization<br/>[authorize.js]"]
  node_db_config["Database Connection<br/>[mongoDb.js]"]
end

subgraph group_attendance["Attendance"]
  node_attendance_routes["Attendance Routes"]
  node_attendance_controller["Attendance Controller"]
  node_attendance_service["Attendance Service"]
  node_session_model[("Session Store")]
  node_record_model[("Attendance Records")]
  node_attempt_model[("Attempt Log")]
  node_audit_model[("Audit Events")]
  node_idempotency_model[("Idempotency Store")]
end

subgraph group_identity["Identity"]
  node_auth_routes["Auth Routes<br/>[AuthRouter.js]"]
  node_auth_controller["Auth Controller<br/>[AuthController.js]"]
  node_auth_service["Auth Service<br/>[AuthService.js]"]
  node_auth_validator["Auth Validation<br/>[AuthValidator.js]"]
  node_user_model[("User Model<br/>[Auth.model.js]")]
end

node_lecturer(("Lecturer"))
node_student(("Student"))
node_email["Email Service"]
node_mongo[("MongoDB")]

node_lecturer -->|"uses"| node_lecturer_ui
node_student -->|"uses"| node_student_ui
node_server -->|"mounts"| node_auth_routes
node_server -->|"mounts"| node_attendance_routes
node_server -->|"connects via"| node_db_config
node_db_config -->|"connects"| node_mongo
node_auth_routes -->|"validates"| node_auth_validator
node_auth_routes -->|"dispatches"| node_auth_controller
node_auth_controller -->|"calls"| node_auth_service
node_auth_service -->|"reads/writes"| node_user_model
node_auth_service -->|"sends reset OTP"| node_email
node_attendance_routes -->|"authenticates"| node_auth_middleware
node_attendance_routes -->|"authorizes"| node_role_middleware
node_attendance_routes -->|"dispatches"| node_attendance_controller
node_attendance_controller -->|"calls"| node_attendance_service
node_attendance_service -->|"reads/writes"| node_session_model
node_attendance_service -->|"reads/writes"| node_record_model
node_attendance_service -->|"logs attempts"| node_attempt_model
node_attendance_service -->|"logs events"| node_audit_model
node_attendance_service -->|"tracks requests"| node_idempotency_model
node_user_model -->|"persists in"| node_mongo
node_session_model -->|"persists in"| node_mongo
node_record_model -->|"persists in"| node_mongo
node_attempt_model -->|"persists in"| node_mongo
node_audit_model -->|"persists in"| node_mongo
node_idempotency_model -->|"persists in"| node_mongo

click node_lecturer_ui "https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/lecturer-web/src/App.jsx"
click node_student_ui "https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/student-app/app/(tabs)/index.tsx"
click node_server "https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/server.js"
click node_auth_routes "https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/modules/Auth/AuthRouter.js"
click node_auth_controller "https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/modules/Auth/AuthController.js"
click node_auth_service "https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/modules/Auth/AuthService.js"
click node_auth_validator "https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/modules/Auth/AuthValidator.js"
click node_user_model "https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/models/Auth.model.js"
click node_attendance_routes "https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/modules/Attendance/AttendanceRouter.js"
click node_auth_middleware "https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/middlewares/Auth.js"
click node_role_middleware "https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/middlewares/authorize.js"
click node_attendance_controller "https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/modules/Attendance/AttendanceController.js"
click node_attendance_service "https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/modules/Attendance/AttendanceService.js"
click node_session_model "https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/models/AttendanceSession.model.js"
click node_record_model "https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/models/AttendanceRecord.model.js"
click node_attempt_model "https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/models/AttendanceAttempt.model.js"
click node_audit_model "https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/models/AuditEvent.model.js"
click node_idempotency_model "https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/models/Idempotency.model.js"
click node_db_config "https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/config/mongoDb.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_lecturer_ui,node_student_ui toneBlue
class node_server,node_auth_middleware,node_role_middleware,node_db_config,node_mongo toneAmber
class node_attendance_routes,node_attendance_controller,node_attendance_service,node_session_model,node_record_model,node_attempt_model,node_audit_model,node_idempotency_model toneMint
class node_auth_routes,node_auth_controller,node_auth_service,node_auth_validator,node_user_model toneRose
class node_lecturer,node_student,node_email toneIndigo
```

## Components

### Client Apps

- [Lecturer Web UI](https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/lecturer-web/src/App.jsx): `lecturer-web/src/App.jsx`
- [Student App](https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/student-app/app/(tabs)/index.tsx): `student-app/app/(tabs)/index.tsx`

### API and Security

- [Express Server](https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/server.js): `backend/server.js`
- [JWT Authentication](https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/middlewares/Auth.js): `backend/src/middlewares/Auth.js`
- [Role Authorization](https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/middlewares/authorize.js): `backend/src/middlewares/authorize.js`
- [Database Connection](https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/config/mongoDb.js): `backend/src/config/mongoDb.js`

### Attendance

- [Attendance Routes](https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/modules/Attendance/AttendanceRouter.js): `backend/src/modules/Attendance/AttendanceRouter.js`
- [Attendance Controller](https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/modules/Attendance/AttendanceController.js): `backend/src/modules/Attendance/AttendanceController.js`
- [Attendance Service](https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/modules/Attendance/AttendanceService.js): `backend/src/modules/Attendance/AttendanceService.js`
- [Session Store](https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/models/AttendanceSession.model.js): `backend/src/models/AttendanceSession.model.js`
- [Attendance Records](https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/models/AttendanceRecord.model.js): `backend/src/models/AttendanceRecord.model.js`
- [Attempt Log](https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/models/AttendanceAttempt.model.js): `backend/src/models/AttendanceAttempt.model.js`
- [Audit Events](https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/models/AuditEvent.model.js): `backend/src/models/AuditEvent.model.js`
- [Idempotency Store](https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/models/Idempotency.model.js): `backend/src/models/Idempotency.model.js`

### Identity

- [Auth Routes](https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/modules/Auth/AuthRouter.js): `backend/src/modules/Auth/AuthRouter.js`
- [Auth Controller](https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/modules/Auth/AuthController.js): `backend/src/modules/Auth/AuthController.js`
- [Auth Service](https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/modules/Auth/AuthService.js): `backend/src/modules/Auth/AuthService.js`
- [Auth Validation](https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/modules/Auth/AuthValidator.js): `backend/src/modules/Auth/AuthValidator.js`
- [User Model](https://github.com/mahaanandareddy200611-droid/attendance-system/blob/main/backend/src/models/Auth.model.js): `backend/src/models/Auth.model.js`

### Other components

- **Lecturer**
- **Student**
- **Email Service**
- **MongoDB**

## Connections

- Lecturer → Lecturer Web UI: uses
- Student → Student App: uses
- Express Server → Auth Routes: mounts
- Express Server → Attendance Routes: mounts
- Express Server → Database Connection: connects via
- Database Connection → MongoDB: connects
- Auth Routes → Auth Validation: validates
- Auth Routes → Auth Controller: dispatches
- Auth Controller → Auth Service: calls
- Auth Service → User Model: reads/writes
- Auth Service → Email Service: sends reset OTP
- Attendance Routes → JWT Authentication: authenticates
- Attendance Routes → Role Authorization: authorizes
- Attendance Routes → Attendance Controller: dispatches
- Attendance Controller → Attendance Service: calls
- Attendance Service → Session Store: reads/writes
- Attendance Service → Attendance Records: reads/writes
- Attendance Service → Attempt Log: logs attempts
- Attendance Service → Audit Events: logs events
- Attendance Service → Idempotency Store: tracks requests
- User Model → MongoDB: persists in
- Session Store → MongoDB: persists in
- Attendance Records → MongoDB: persists in
- Attempt Log → MongoDB: persists in
- Audit Events → MongoDB: persists in
- Idempotency Store → MongoDB: persists in
