# sakin08/smart-attendance-system architecture

> Architecture diagram of the GitHub repository sakin08/smart-attendance-system, 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/sakin08/smart-attendance-system
- Repository: https://github.com/sakin08/smart-attendance-system

## Overview

Smart Attendance System supports university user registration and role-based access, teacher course/session management, QR-based student attendance, and attendance reporting/export. The principal flow runs from teacher-created, time-bounded sessions through student QR submission to recorded attendance and reports. The README describes GPS verification; the sampled student route says location is disabled, so the graph shows location capture/submission without asserting server-side GPS validation. Some frontend and route wiring is based on documented capabilities; unsampled implementation details are not inferred.

Main entry points: [`client/src/App.jsx`](https://github.com/sakin08/smart-attendance-system/blob/main/client/src/App.jsx) (App routes), [`client/src/pages/StudentDashboard.jsx`](https://github.com/sakin08/smart-attendance-system/blob/main/client/src/pages/StudentDashboard.jsx) (Student dashboard), [`server/index.js`](https://github.com/sakin08/smart-attendance-system/blob/main/server/index.js) (API server), [`server/routes/adminRoutes.js`](https://github.com/sakin08/smart-attendance-system/blob/main/server/routes/adminRoutes.js) (Admin routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web application"]
  node_webapp["App routes<br/>[App.jsx]"]
  node_authui["Auth state<br/>[AuthContext.jsx]"]
  node_login["Login and registration<br/>[Login.jsx]"]
  node_register["Student registration<br/>[Register.jsx]"]
  node_studentui["Student dashboard"]
  node_teacherui["Teacher dashboard"]
  node_adminui["Admin dashboard<br/>[AdminDashboard.jsx]"]
  node_qrscanner["QR scanner<br/>[QRScanner.jsx]"]
  node_location["Location capture"]
  node_exportui["Report export UI<br/>[ExportButton.jsx]"]
  node_api["API client<br/>[api.js]"]
end

subgraph group_identity["Identity and access"]
  node_server["API server<br/>[index.js]"]
  node_authroutes["Authentication routes<br/>[authRoutes.js]"]
  node_parser["Registration parser"]
  node_authmw["JWT and role checks<br/>[auth.js]"]
end

subgraph group_attendance["Courses and attendance"]
  node_teacherroutes["Teacher routes<br/>[teacherRoutes.js]"]
  node_studentroutes["Student routes<br/>[studentRoutes.js]"]
  node_coursemodel["Course model<br/>[Course.js]"]
  node_sessionmodel["Attendance session model"]
end

subgraph group_reporting["Administration and reports"]
  node_adminroutes["Admin routes<br/>[adminRoutes.js]"]
  node_usermodel["User model<br/>[User.js]"]
  node_mongo[("MongoDB")]
end

node_teacher(("Teacher"))
node_student(("Student"))
node_admin(("Administrator"))

node_teacher -->|"uses"| node_webapp
node_student -->|"uses"| node_webapp
node_admin -->|"uses"| node_webapp
node_webapp -->|"provides auth"| node_authui
node_webapp -->|"routes to"| node_login
node_webapp -->|"routes to"| node_register
node_webapp -->|"routes to"| node_studentui
node_webapp -->|"routes to"| node_teacherui
node_webapp -->|"routes to"| node_adminui
node_login -->|"signs in"| node_authui
node_register -->|"registers"| node_authui
node_studentui -->|"scans QR"| node_qrscanner
node_studentui -->|"captures location"| node_location
node_teacherui -->|"exports reports"| node_exportui
node_authui -->|"sends requests"| node_api
node_studentui -->|"sends requests"| node_api
node_teacherui -->|"sends requests"| node_api
node_adminui -->|"sends requests"| node_api
node_qrscanner -->|"provides QR token"| node_studentui
node_location -->|"provides coordinates"| node_studentui
node_api -->|"calls API"| node_server
node_server -->|"mounts routes"| node_authroutes
node_server -->|"mounts routes"| node_studentroutes
node_server -->|"mounts routes"| node_teacherroutes
node_server -->|"mounts routes"| node_adminroutes
node_authroutes -->|"checks identity"| node_authmw
node_studentroutes -->|"checks access"| node_authmw
node_teacherroutes -->|"checks access"| node_authmw
node_adminroutes -->|"checks access"| node_authmw
node_authroutes -->|"parses student email"| node_parser
node_authroutes -->|"reads and creates users"| node_usermodel
node_studentroutes -->|"checks enrollment"| node_coursemodel
node_studentroutes -->|"reads and records attendance"| node_sessionmodel
node_teacherroutes -->|"manages courses"| node_coursemodel
node_teacherroutes -->|"manages sessions"| node_sessionmodel
node_adminroutes -->|"manages users"| node_usermodel
node_adminroutes -->|"reads and deletes courses"| node_coursemodel
node_adminroutes -->|"reads and deletes sessions"| node_sessionmodel
node_usermodel -->|"persists users"| node_mongo
node_coursemodel -->|"persists courses"| node_mongo
node_sessionmodel -->|"persists attendance"| node_mongo

click node_webapp "https://github.com/sakin08/smart-attendance-system/blob/main/client/src/App.jsx"
click node_authui "https://github.com/sakin08/smart-attendance-system/blob/main/client/src/context/AuthContext.jsx"
click node_login "https://github.com/sakin08/smart-attendance-system/blob/main/client/src/pages/Login.jsx"
click node_register "https://github.com/sakin08/smart-attendance-system/blob/main/client/src/pages/Register.jsx"
click node_studentui "https://github.com/sakin08/smart-attendance-system/blob/main/client/src/pages/StudentDashboard.jsx"
click node_teacherui "https://github.com/sakin08/smart-attendance-system/blob/main/client/src/pages/TeacherDashboard.jsx"
click node_adminui "https://github.com/sakin08/smart-attendance-system/blob/main/client/src/pages/AdminDashboard.jsx"
click node_qrscanner "https://github.com/sakin08/smart-attendance-system/blob/main/client/src/components/QRScanner.jsx"
click node_location "https://github.com/sakin08/smart-attendance-system/blob/main/client/src/components/LocationCapture.jsx"
click node_exportui "https://github.com/sakin08/smart-attendance-system/blob/main/client/src/components/ExportButton.jsx"
click node_api "https://github.com/sakin08/smart-attendance-system/blob/main/client/src/api.js"
click node_server "https://github.com/sakin08/smart-attendance-system/blob/main/server/index.js"
click node_authroutes "https://github.com/sakin08/smart-attendance-system/blob/main/server/routes/authRoutes.js"
click node_parser "https://github.com/sakin08/smart-attendance-system/blob/main/server/utils/registrationParser.js"
click node_authmw "https://github.com/sakin08/smart-attendance-system/blob/main/server/middleware/auth.js"
click node_teacherroutes "https://github.com/sakin08/smart-attendance-system/blob/main/server/routes/teacherRoutes.js"
click node_studentroutes "https://github.com/sakin08/smart-attendance-system/blob/main/server/routes/studentRoutes.js"
click node_coursemodel "https://github.com/sakin08/smart-attendance-system/blob/main/server/models/Course.js"
click node_sessionmodel "https://github.com/sakin08/smart-attendance-system/blob/main/server/models/AttendanceSession.js"
click node_adminroutes "https://github.com/sakin08/smart-attendance-system/blob/main/server/routes/adminRoutes.js"
click node_usermodel "https://github.com/sakin08/smart-attendance-system/blob/main/server/models/User.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_webapp,node_authui,node_login,node_register,node_studentui,node_teacherui,node_adminui,node_qrscanner,node_location,node_exportui,node_api toneBlue
class node_server,node_authroutes,node_parser,node_authmw toneAmber
class node_teacherroutes,node_studentroutes,node_coursemodel,node_sessionmodel toneMint
class node_adminroutes,node_usermodel,node_mongo toneRose
class node_teacher,node_student,node_admin toneIndigo
```

## Components

### Web application

- [App routes](https://github.com/sakin08/smart-attendance-system/blob/main/client/src/App.jsx): `client/src/App.jsx`
- [Auth state](https://github.com/sakin08/smart-attendance-system/blob/main/client/src/context/AuthContext.jsx): `client/src/context/AuthContext.jsx`
- [Login and registration](https://github.com/sakin08/smart-attendance-system/blob/main/client/src/pages/Login.jsx): `client/src/pages/Login.jsx`
- [Student registration](https://github.com/sakin08/smart-attendance-system/blob/main/client/src/pages/Register.jsx): `client/src/pages/Register.jsx`
- [Student dashboard](https://github.com/sakin08/smart-attendance-system/blob/main/client/src/pages/StudentDashboard.jsx): `client/src/pages/StudentDashboard.jsx`
- [Teacher dashboard](https://github.com/sakin08/smart-attendance-system/blob/main/client/src/pages/TeacherDashboard.jsx): `client/src/pages/TeacherDashboard.jsx`
- [Admin dashboard](https://github.com/sakin08/smart-attendance-system/blob/main/client/src/pages/AdminDashboard.jsx): `client/src/pages/AdminDashboard.jsx`
- [QR scanner](https://github.com/sakin08/smart-attendance-system/blob/main/client/src/components/QRScanner.jsx): `client/src/components/QRScanner.jsx`
- [Location capture](https://github.com/sakin08/smart-attendance-system/blob/main/client/src/components/LocationCapture.jsx): `client/src/components/LocationCapture.jsx`
- [Report export UI](https://github.com/sakin08/smart-attendance-system/blob/main/client/src/components/ExportButton.jsx): `client/src/components/ExportButton.jsx`
- [API client](https://github.com/sakin08/smart-attendance-system/blob/main/client/src/api.js): `client/src/api.js`

### Identity and access

- [API server](https://github.com/sakin08/smart-attendance-system/blob/main/server/index.js): `server/index.js`
- [Authentication routes](https://github.com/sakin08/smart-attendance-system/blob/main/server/routes/authRoutes.js): `server/routes/authRoutes.js`
- [Registration parser](https://github.com/sakin08/smart-attendance-system/blob/main/server/utils/registrationParser.js): `server/utils/registrationParser.js`
- [JWT and role checks](https://github.com/sakin08/smart-attendance-system/blob/main/server/middleware/auth.js): `server/middleware/auth.js`

### Courses and attendance

- [Teacher routes](https://github.com/sakin08/smart-attendance-system/blob/main/server/routes/teacherRoutes.js): `server/routes/teacherRoutes.js`
- [Student routes](https://github.com/sakin08/smart-attendance-system/blob/main/server/routes/studentRoutes.js): `server/routes/studentRoutes.js`
- [Course model](https://github.com/sakin08/smart-attendance-system/blob/main/server/models/Course.js): `server/models/Course.js`
- [Attendance session model](https://github.com/sakin08/smart-attendance-system/blob/main/server/models/AttendanceSession.js): `server/models/AttendanceSession.js`

### Administration and reports

- [Admin routes](https://github.com/sakin08/smart-attendance-system/blob/main/server/routes/adminRoutes.js): `server/routes/adminRoutes.js`
- [User model](https://github.com/sakin08/smart-attendance-system/blob/main/server/models/User.js): `server/models/User.js`
- **MongoDB**

### Other components

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

## Connections

- Teacher → App routes: uses
- Student → App routes: uses
- Administrator → App routes: uses
- App routes → Auth state: provides auth
- App routes → Login and registration: routes to
- App routes → Student registration: routes to
- App routes → Student dashboard: routes to
- App routes → Teacher dashboard: routes to
- App routes → Admin dashboard: routes to
- Login and registration → Auth state: signs in
- Student registration → Auth state: registers
- Student dashboard → QR scanner: scans QR
- Student dashboard → Location capture: captures location
- Teacher dashboard → Report export UI: exports reports
- Auth state → API client: sends requests
- Student dashboard → API client: sends requests
- Teacher dashboard → API client: sends requests
- Admin dashboard → API client: sends requests
- QR scanner → Student dashboard: provides QR token
- Location capture → Student dashboard: provides coordinates
- API client → API server: calls API
- API server → Authentication routes: mounts routes
- API server → Student routes: mounts routes
- API server → Teacher routes: mounts routes
- API server → Admin routes: mounts routes
- Authentication routes → JWT and role checks: checks identity
- Student routes → JWT and role checks: checks access
- Teacher routes → JWT and role checks: checks access
- Admin routes → JWT and role checks: checks access
- Authentication routes → Registration parser: parses student email
- Authentication routes → User model: reads and creates users
- Student routes → Course model: checks enrollment
- Student routes → Attendance session model: reads and records attendance
- Teacher routes → Course model: manages courses
- Teacher routes → Attendance session model: manages sessions
- Admin routes → User model: manages users
- Admin routes → Course model: reads and deletes courses
- Admin routes → Attendance session model: reads and deletes sessions
- User model → MongoDB: persists users
- Course model → MongoDB: persists courses
- Attendance session model → MongoDB: persists attendance
