Arsitektur sistem
Komponen DCC HRIS, cara keduanya berbagi satu login, dan letak aturan bisnis.
Komponen
| Komponen | Folder | Teknologi | Fungsi |
|---|---|---|---|
| API | api/ |
Go (chi, pgx, sqlc, goose) | Semua aturan bisnis dan pengecekan izin. Kontraknya ada di openapi.yaml. |
| App staff | apps/staff/ |
Next.js 16, Tailwind, shadcn/ui | Aplikasi untuk semua karyawan, termasuk atasan dan Admin HR. |
| App admin | apps/admin/ |
Next.js 16 | Backoffice khusus Admin HR. Pengguna lain melihat halaman yang mengarahkan ke app staff. |
| Database | api/db/ |
PostgreSQL 18 | Data utama, termasuk sesi login dan antrean email (email_outbox). |
api/internal/mailer |
SMTP | Worker di dalam api serve mengirim email dari email_outbox. Di development dan server dev, Mailpit menangkap semua email. |
Kode yang dipakai bersama oleh dua app ada di packages/: @hr/api-client (client API dari openapi.yaml), @hr/core (format tanggal, label, dan helper sesi), serta @hr/ui (komponen dan tema).
Satu login untuk dua app
App staff dan app admin memakai API dan sesi yang sama. Cookie sesi berlaku untuk domain app staff dan subdomainnya, jadi Admin HR yang sudah masuk di app staff langsung masuk juga di app admin lewat Open backoffice.
Beberapa alamat di app staff (/employees, /settings, /reports/employee-exits) dipindahkan ke app admin.
Letak aturan bisnis
Semua aturan, misalnya saldo cuti, batas pengajuan, urutan persetujuan atasan lalu HR, dan siapa boleh melihat data siapa, dicek di API. App web hanya menampilkan hasilnya. Jika ada perbedaan antara tampilan dan API, perilaku API yang berlaku.
Persetujuan cuti selalu berurutan: atasan dulu, lalu Admin HR (status PENDING_HR). Admin HR baru bisa memutuskan lebih dulu jika karyawan tidak punya atasan.
Waktu
Jam absensi memakai jam server dalam zona waktu WIB (Asia/Jakarta), bukan jam perangkat karyawan.
Rujukan teknis
README.mddi root repo: setup lokal, perintahmake, akun contoh, dan variabel email.docs/dev-server.md: susunan server dev dan cara deploy.docs/payroll-regulations.md: aturan payroll, BPJS, dan PPh 21..claude/skills/verify-hr/features/: peta perilaku setiap fitur dari sudut pandang pengguna.