# aldikurniawan19/backend-absensi architecture

> Architecture diagram of the GitHub repository aldikurniawan19/backend-absensi, 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/aldikurniawan19/backend-absensi
- Repository: https://github.com/aldikurniawan19/backend-absensi

## Overview

This is a NestJS backend for a school attendance system, with QR-based student check-in as its central workflow: students submit scans, attendance logic validates them, and teachers or administrators can also record attendance manually. The API additionally supports login and session management, school data and scheduling, leave requests, grades and report cards, attendance analytics, extracurricular records, and audit logs. The excerpts show controller-to-service calls for several features; other modules are represented from the repository tree, so their internal wiring is not inferred.

Main entry points: [`src/main.ts`](https://github.com/aldikurniawan19/backend-absensi/blob/main/src/main.ts) (API runtime), [`src/modules/jadwal/jadwal.controller.ts`](https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/jadwal/jadwal.controller.ts) (Schedules and exams), [`src/modules/auth/auth.controller.ts`](https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/auth/auth.controller.ts) (Authentication), [`src/modules/auth/auth.service.ts`](https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/auth/auth.service.ts) (Auth service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access and API"]
  node_api["API runtime<br/>[main.ts]"]
  node_auth["Authentication<br/>[auth.controller.ts]"]
  node_authsvc["Auth service<br/>[auth.service.ts]"]
end

subgraph group_school["School Operations"]
  node_master["School reference data"]
  node_masterdata["Master data service<br/>[master.service.ts]"]
  node_users["User administration"]
  node_usersvc["User service<br/>[users.service.ts]"]
  node_schedule["Schedules and exams"]
  node_scheduleops["Schedule services<br/>[jadwal.service.ts]"]
  node_attendance["Attendance API"]
  node_attendancesvc["Attendance service<br/>[absensi.service.ts]"]
  node_sessions["Attendance sessions<br/>[sesi.controller.ts]"]
  node_sessionsvc["Session service<br/>[sesi.service.ts]"]
  node_leave["Leave requests<br/>[izin.controller.ts]"]
  node_leavesvc["Leave service<br/>[izin.service.ts]"]
end

subgraph group_learning["Learning Records"]
  node_grades["Grades"]
  node_gradesvc["Grade service<br/>[nilai.service.ts]"]
  node_reportcard["Report cards"]
  node_reportcardsvc["Report-card service<br/>[raport.service.ts]"]
  node_activities["Extracurriculars"]
  node_activitiesvc["Activities service"]
end

subgraph group_insight["Reporting and Audit"]
  node_analytics["Attendance reports"]
  node_analyticssvc["Analytics service<br/>[laporan.service.ts]"]
  node_audit["Audit logs"]
  node_auditsvc["Audit service<br/>[audit.service.ts]"]
end

subgraph group_persistence["Persistence"]
  node_prisma["Prisma database access<br/>[prisma.service.ts]"]
  node_postgres[("Supabase PostgreSQL")]
end

node_clients(("API clients"))

node_clients -->|"send requests"| node_api
node_api -->|"routes requests"| node_auth
node_api -->|"routes requests"| node_master
node_api -->|"routes requests"| node_users
node_api -->|"routes requests"| node_schedule
node_api -->|"routes requests"| node_attendance
node_api -->|"routes requests"| node_sessions
node_api -->|"routes requests"| node_leave
node_api -->|"routes requests"| node_grades
node_api -->|"routes requests"| node_reportcard
node_api -->|"routes requests"| node_activities
node_api -->|"routes requests"| node_analytics
node_api -->|"routes requests"| node_audit
node_auth -->|"calls"| node_authsvc
node_authsvc -->|"records events"| node_auditsvc
node_master -->|"calls"| node_masterdata
node_users -->|"calls"| node_usersvc
node_schedule -->|"calls"| node_scheduleops
node_schedule -->|"calls exam services"| node_sessionsvc
node_sessions -->|"calls"| node_sessionsvc
node_attendance -->|"calls"| node_attendancesvc
node_leave -->|"calls"| node_leavesvc
node_grades -->|"calls"| node_gradesvc
node_reportcard -->|"calls"| node_reportcardsvc
node_activities -->|"calls"| node_activitiesvc
node_analytics -->|"calls"| node_analyticssvc
node_audit -->|"calls"| node_auditsvc
node_api -->|"health-check query"| node_prisma
node_prisma -->|"queries database"| node_postgres

click node_api "https://github.com/aldikurniawan19/backend-absensi/blob/main/src/main.ts"
click node_auth "https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/auth/auth.controller.ts"
click node_authsvc "https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/auth/auth.service.ts"
click node_master "https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/master/master.controller.ts"
click node_masterdata "https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/master/master.service.ts"
click node_users "https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/users/users.controller.ts"
click node_usersvc "https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/users/users.service.ts"
click node_schedule "https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/jadwal/jadwal.controller.ts"
click node_scheduleops "https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/jadwal/jadwal.service.ts"
click node_attendance "https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/absensi/absensi.controller.ts"
click node_attendancesvc "https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/absensi/absensi.service.ts"
click node_sessions "https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/sesi/sesi.controller.ts"
click node_sessionsvc "https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/sesi/sesi.service.ts"
click node_leave "https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/izin/izin.controller.ts"
click node_leavesvc "https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/izin/izin.service.ts"
click node_grades "https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/nilai/nilai.controller.ts"
click node_gradesvc "https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/nilai/nilai.service.ts"
click node_reportcard "https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/raport/raport.controller.ts"
click node_reportcardsvc "https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/raport/raport.service.ts"
click node_activities "https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/ekstrakurikuler/ekstrakurikuler.controller.ts"
click node_activitiesvc "https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/ekstrakurikuler/ekstrakurikuler.service.ts"
click node_analytics "https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/laporan/laporan.controller.ts"
click node_analyticssvc "https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/laporan/laporan.service.ts"
click node_audit "https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/audit/audit.controller.ts"
click node_auditsvc "https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/audit/audit.service.ts"
click node_prisma "https://github.com/aldikurniawan19/backend-absensi/blob/main/src/database/prisma.service.ts"

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_api,node_auth,node_authsvc,node_clients toneBlue
class node_master,node_masterdata,node_users,node_usersvc,node_schedule,node_scheduleops,node_attendance,node_attendancesvc,node_sessions,node_sessionsvc,node_leave,node_leavesvc toneAmber
class node_grades,node_gradesvc,node_reportcard,node_reportcardsvc,node_activities,node_activitiesvc toneMint
class node_analytics,node_analyticssvc,node_audit,node_auditsvc toneRose
class node_prisma,node_postgres toneIndigo
```

## Components

### Access and API

- [API runtime](https://github.com/aldikurniawan19/backend-absensi/blob/main/src/main.ts): `src/main.ts`
- [Authentication](https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/auth/auth.controller.ts): `src/modules/auth/auth.controller.ts`
- [Auth service](https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/auth/auth.service.ts): `src/modules/auth/auth.service.ts`

### School Operations

- [School reference data](https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/master/master.controller.ts): `src/modules/master/master.controller.ts`
- [Master data service](https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/master/master.service.ts): `src/modules/master/master.service.ts`
- [User administration](https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/users/users.controller.ts): `src/modules/users/users.controller.ts`
- [User service](https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/users/users.service.ts): `src/modules/users/users.service.ts`
- [Schedules and exams](https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/jadwal/jadwal.controller.ts): `src/modules/jadwal/jadwal.controller.ts`
- [Schedule services](https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/jadwal/jadwal.service.ts): `src/modules/jadwal/jadwal.service.ts`
- [Attendance API](https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/absensi/absensi.controller.ts): `src/modules/absensi/absensi.controller.ts`
- [Attendance service](https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/absensi/absensi.service.ts): `src/modules/absensi/absensi.service.ts`
- [Attendance sessions](https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/sesi/sesi.controller.ts): `src/modules/sesi/sesi.controller.ts`
- [Session service](https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/sesi/sesi.service.ts): `src/modules/sesi/sesi.service.ts`
- [Leave requests](https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/izin/izin.controller.ts): `src/modules/izin/izin.controller.ts`
- [Leave service](https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/izin/izin.service.ts): `src/modules/izin/izin.service.ts`

### Learning Records

- [Grades](https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/nilai/nilai.controller.ts): `src/modules/nilai/nilai.controller.ts`
- [Grade service](https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/nilai/nilai.service.ts): `src/modules/nilai/nilai.service.ts`
- [Report cards](https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/raport/raport.controller.ts): `src/modules/raport/raport.controller.ts`
- [Report-card service](https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/raport/raport.service.ts): `src/modules/raport/raport.service.ts`
- [Extracurriculars](https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/ekstrakurikuler/ekstrakurikuler.controller.ts): `src/modules/ekstrakurikuler/ekstrakurikuler.controller.ts`
- [Activities service](https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/ekstrakurikuler/ekstrakurikuler.service.ts): `src/modules/ekstrakurikuler/ekstrakurikuler.service.ts`

### Reporting and Audit

- [Attendance reports](https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/laporan/laporan.controller.ts): `src/modules/laporan/laporan.controller.ts`
- [Analytics service](https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/laporan/laporan.service.ts): `src/modules/laporan/laporan.service.ts`
- [Audit logs](https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/audit/audit.controller.ts): `src/modules/audit/audit.controller.ts`
- [Audit service](https://github.com/aldikurniawan19/backend-absensi/blob/main/src/modules/audit/audit.service.ts): `src/modules/audit/audit.service.ts`

### Persistence

- [Prisma database access](https://github.com/aldikurniawan19/backend-absensi/blob/main/src/database/prisma.service.ts): `src/database/prisma.service.ts`
- **Supabase PostgreSQL**

### Other components

- **API clients**

## Connections

- API clients → API runtime: send requests
- API runtime → Authentication: routes requests
- API runtime → School reference data: routes requests
- API runtime → User administration: routes requests
- API runtime → Schedules and exams: routes requests
- API runtime → Attendance API: routes requests
- API runtime → Attendance sessions: routes requests
- API runtime → Leave requests: routes requests
- API runtime → Grades: routes requests
- API runtime → Report cards: routes requests
- API runtime → Extracurriculars: routes requests
- API runtime → Attendance reports: routes requests
- API runtime → Audit logs: routes requests
- Authentication → Auth service: calls
- Auth service → Audit service: records events
- School reference data → Master data service: calls
- User administration → User service: calls
- Schedules and exams → Schedule services: calls
- Schedules and exams → Session service: calls exam services
- Attendance sessions → Session service: calls
- Attendance API → Attendance service: calls
- Leave requests → Leave service: calls
- Grades → Grade service: calls
- Report cards → Report-card service: calls
- Extracurriculars → Activities service: calls
- Attendance reports → Analytics service: calls
- Audit logs → Audit service: calls
- API runtime → Prisma database access: health-check query
- Prisma database access → Supabase PostgreSQL: queries database
