# dawam12/penggajian architecture

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

## Overview

Sistem Penggajian Karyawan mengelola akun, data karyawan, absensi, pemrosesan gaji, slip, laporan, dan konfigurasi perusahaan. Pengguna masuk melalui halaman autentikasi lalu bekerja di area dashboard; tahap penggajian mencakup pencatatan periode, perubahan status Draft/Approved/Paid, dan pembuatan slip. Sumber yang tersedia menunjukkan API berbasis Prisma berdampingan dengan autentikasi dan utilitas localStorage; halaman fitur selain absensi belum disampel, jadi hubungan UI ke API tidak diasumsikan.

Main entry points: [`lib/prisma.ts`](https://github.com/dawam12/penggajian/blob/main/lib/prisma.ts) (Klien Prisma), [`app/api/payroll/route.ts`](https://github.com/dawam12/penggajian/blob/main/app/api/payroll/route.ts) (API penggajian), [`app/api/payroll/[id]/route.ts`](https://github.com/dawam12/penggajian/blob/main/app/api/payroll/%5Bid%5D/route.ts) (API penggajian per ID), [`lib/activity.ts`](https://github.com/dawam12/penggajian/blob/main/lib/activity.ts) (Log aktivitas)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Aplikasi web"]
  node_login["Login dan registrasi<br/>[page.tsx]"]
  node_auth["Konteks autentikasi<br/>[auth-context.tsx]"]
  node_dashboard["Dashboard<br/>[page.tsx]"]
end

subgraph group_workforce["Karyawan dan absensi"]
  node_employee_pages["Kelola karyawan<br/>[page.tsx]"]
  node_employee_form["Form karyawan<br/>[employee-form.tsx]"]
  node_attendance_page["Absensi<br/>[page.tsx]"]
end

subgraph group_payroll["Penggajian dan laporan"]
  node_payroll_page["Proses penggajian<br/>[page.tsx]"]
  node_slips["Slip gaji<br/>[page.tsx]"]
  node_slip_detail["Detail slip<br/>[page.tsx]"]
  node_reports["Laporan<br/>[page.tsx]"]
  node_settings_page["Pengaturan<br/>[page.tsx]"]
end

subgraph group_backend["API dan penyimpanan"]
  node_storage["Penyimpanan lokal<br/>[storage.ts]"]
  node_employee_api["API karyawan<br/>[route.ts]"]
  node_employee_item_api["API karyawan per ID<br/>[route.ts]"]
  node_attendance_api["API absensi<br/>[route.ts]"]
  node_payroll_api["API penggajian<br/>[route.ts]"]
  node_payroll_item_api["API penggajian per ID<br/>[route.ts]"]
  node_config_api["API konfigurasi<br/>[route.ts]"]
  node_prisma["Klien Prisma<br/>[prisma.ts]"]
  node_activity["Log aktivitas<br/>[activity.ts]"]
end

node_user(("Pengguna"))
node_database[("Basis data")]

node_user -->|"memulai sesi"| node_login
node_user -->|"mengakses fitur"| node_dashboard
node_auth -->|"baca dan simpan sesi"| node_storage
node_attendance_page -->|"memuat karyawan"| node_employee_api
node_employee_api -->|"baca dan tulis"| node_prisma
node_employee_item_api -->|"baca dan tulis"| node_prisma
node_attendance_api -->|"baca dan tulis"| node_prisma
node_payroll_api -->|"baca dan tulis"| node_prisma
node_payroll_item_api -->|"baca dan tulis"| node_prisma
node_config_api -->|"baca dan tulis"| node_prisma
node_prisma -->|"akses data"| node_database
node_attendance_api -->|"catat aktivitas"| node_activity
node_payroll_api -->|"catat aktivitas"| node_activity
node_payroll_item_api -->|"catat aktivitas"| node_activity
node_payroll_item_api -->|"buat slip saat status berubah"| node_prisma
node_payroll_api -->|"buat slip saat status massal berubah"| node_prisma

click node_login "https://github.com/dawam12/penggajian/blob/main/app/(auth)/login/page.tsx"
click node_auth "https://github.com/dawam12/penggajian/blob/main/context/auth-context.tsx"
click node_dashboard "https://github.com/dawam12/penggajian/blob/main/app/(dashboard)/dashboard/page.tsx"
click node_employee_pages "https://github.com/dawam12/penggajian/blob/main/app/(dashboard)/karyawan/page.tsx"
click node_employee_form "https://github.com/dawam12/penggajian/blob/main/components/karyawan/employee-form.tsx"
click node_attendance_page "https://github.com/dawam12/penggajian/blob/main/app/(dashboard)/absensi/page.tsx"
click node_payroll_page "https://github.com/dawam12/penggajian/blob/main/app/(dashboard)/penggajian/page.tsx"
click node_slips "https://github.com/dawam12/penggajian/blob/main/app/(dashboard)/slip-gaji/page.tsx"
click node_slip_detail "https://github.com/dawam12/penggajian/blob/main/app/(dashboard)/slip-gaji/%5Bid%5D/page.tsx"
click node_reports "https://github.com/dawam12/penggajian/blob/main/app/(dashboard)/laporan/page.tsx"
click node_settings_page "https://github.com/dawam12/penggajian/blob/main/app/(dashboard)/settings/page.tsx"
click node_storage "https://github.com/dawam12/penggajian/blob/main/lib/storage.ts"
click node_employee_api "https://github.com/dawam12/penggajian/blob/main/app/api/karyawan/route.ts"
click node_employee_item_api "https://github.com/dawam12/penggajian/blob/main/app/api/karyawan/%5Bid%5D/route.ts"
click node_attendance_api "https://github.com/dawam12/penggajian/blob/main/app/api/attendance/route.ts"
click node_payroll_api "https://github.com/dawam12/penggajian/blob/main/app/api/payroll/route.ts"
click node_payroll_item_api "https://github.com/dawam12/penggajian/blob/main/app/api/payroll/%5Bid%5D/route.ts"
click node_config_api "https://github.com/dawam12/penggajian/blob/main/app/api/config/route.ts"
click node_prisma "https://github.com/dawam12/penggajian/blob/main/lib/prisma.ts"
click node_activity "https://github.com/dawam12/penggajian/blob/main/lib/activity.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_login,node_auth,node_dashboard toneBlue
class node_employee_pages,node_employee_form,node_attendance_page,node_database toneAmber
class node_payroll_page,node_slips,node_slip_detail,node_reports,node_settings_page toneMint
class node_storage,node_employee_api,node_employee_item_api,node_attendance_api,node_payroll_api,node_payroll_item_api,node_config_api,node_prisma,node_activity toneRose
class node_user toneIndigo
```

## Components

### Aplikasi web

- [Login dan registrasi](https://github.com/dawam12/penggajian/blob/main/app/(auth)/login/page.tsx): `app/(auth)/login/page.tsx`
- [Konteks autentikasi](https://github.com/dawam12/penggajian/blob/main/context/auth-context.tsx): `context/auth-context.tsx`
- [Dashboard](https://github.com/dawam12/penggajian/blob/main/app/(dashboard)/dashboard/page.tsx): `app/(dashboard)/dashboard/page.tsx`

### Karyawan dan absensi

- [Kelola karyawan](https://github.com/dawam12/penggajian/blob/main/app/(dashboard)/karyawan/page.tsx): `app/(dashboard)/karyawan/page.tsx`
- [Form karyawan](https://github.com/dawam12/penggajian/blob/main/components/karyawan/employee-form.tsx): `components/karyawan/employee-form.tsx`
- [Absensi](https://github.com/dawam12/penggajian/blob/main/app/(dashboard)/absensi/page.tsx): `app/(dashboard)/absensi/page.tsx`

### Penggajian dan laporan

- [Proses penggajian](https://github.com/dawam12/penggajian/blob/main/app/(dashboard)/penggajian/page.tsx): `app/(dashboard)/penggajian/page.tsx`
- [Slip gaji](https://github.com/dawam12/penggajian/blob/main/app/(dashboard)/slip-gaji/page.tsx): `app/(dashboard)/slip-gaji/page.tsx`
- [Detail slip](https://github.com/dawam12/penggajian/blob/main/app/(dashboard)/slip-gaji/%5Bid%5D/page.tsx): `app/(dashboard)/slip-gaji/[id]/page.tsx`
- [Laporan](https://github.com/dawam12/penggajian/blob/main/app/(dashboard)/laporan/page.tsx): `app/(dashboard)/laporan/page.tsx`
- [Pengaturan](https://github.com/dawam12/penggajian/blob/main/app/(dashboard)/settings/page.tsx): `app/(dashboard)/settings/page.tsx`

### API dan penyimpanan

- [Penyimpanan lokal](https://github.com/dawam12/penggajian/blob/main/lib/storage.ts): `lib/storage.ts`
- [API karyawan](https://github.com/dawam12/penggajian/blob/main/app/api/karyawan/route.ts): `app/api/karyawan/route.ts`
- [API karyawan per ID](https://github.com/dawam12/penggajian/blob/main/app/api/karyawan/%5Bid%5D/route.ts): `app/api/karyawan/[id]/route.ts`
- [API absensi](https://github.com/dawam12/penggajian/blob/main/app/api/attendance/route.ts): `app/api/attendance/route.ts`
- [API penggajian](https://github.com/dawam12/penggajian/blob/main/app/api/payroll/route.ts): `app/api/payroll/route.ts`
- [API penggajian per ID](https://github.com/dawam12/penggajian/blob/main/app/api/payroll/%5Bid%5D/route.ts): `app/api/payroll/[id]/route.ts`
- [API konfigurasi](https://github.com/dawam12/penggajian/blob/main/app/api/config/route.ts): `app/api/config/route.ts`
- [Klien Prisma](https://github.com/dawam12/penggajian/blob/main/lib/prisma.ts): `lib/prisma.ts`
- [Log aktivitas](https://github.com/dawam12/penggajian/blob/main/lib/activity.ts): `lib/activity.ts`

### Other components

- **Pengguna**
- **Basis data**

## Connections

- Pengguna → Login dan registrasi: memulai sesi
- Pengguna → Dashboard: mengakses fitur
- Konteks autentikasi → Penyimpanan lokal: baca dan simpan sesi
- Absensi → API karyawan: memuat karyawan
- API karyawan → Klien Prisma: baca dan tulis
- API karyawan per ID → Klien Prisma: baca dan tulis
- API absensi → Klien Prisma: baca dan tulis
- API penggajian → Klien Prisma: baca dan tulis
- API penggajian per ID → Klien Prisma: baca dan tulis
- API konfigurasi → Klien Prisma: baca dan tulis
- Klien Prisma → Basis data: akses data
- API absensi → Log aktivitas: catat aktivitas
- API penggajian → Log aktivitas: catat aktivitas
- API penggajian per ID → Log aktivitas: catat aktivitas
- API penggajian per ID → Klien Prisma: buat slip saat status berubah
- API penggajian → Klien Prisma: buat slip saat status massal berubah
