# Skill Layer — Internal Tool

File ini berisi konteks dan asumsi default untuk project bertipe **internal tool** — aplikasi yang dipakai di dalam satu organisasi oleh tim internal, bukan publik.

---

## Kapan Pakai Skill Ini

Gunakan jika project Anda adalah:
- Sistem yang hanya dipakai oleh karyawan internal
- Admin panel, dashboard operasional, atau management system
- Sistem HR, attendance, inventory, finance, CRM internal
- Tool yang tidak perlu onboarding publik

---

## Asumsi Default yang Langsung Diterapkan

### Arsitektur
- Single-tenant (satu deployment untuk satu organisasi)
- Backend monolith modular (lebih mudah maintain oleh tim kecil)
- REST API dengan internal auth
- Server-rendered atau SPA — pilih sesuai kompleksitas UI

### Auth & User Management
- Email + password (tanpa OAuth kecuali diminta)
- RBAC (Role-Based Access Control) ketat per modul
- Session-based auth (lebih mudah revoke dibanding JWT untuk internal tool)
- Admin bisa create/manage user — tidak ada self-registration
- Password reset via email admin atau OTP

### Role Default (bisa dikustomisasi)
- superadmin: akses penuh ke semua modul dan konfigurasi sistem
- admin: akses penuh ke modul bisnis, tidak bisa ubah konfigurasi sistem
- manager: bisa approve, lihat semua data di divisinya, tidak bisa delete
- user/staff: input data sesuai tugasnya, lihat data milik sendiri atau divisi

### Database
- PostgreSQL
- Soft delete untuk entity bisnis penting
- UUID untuk entity bisnis utama
- Audit log wajib untuk setiap aksi create/update/delete di data penting
- Tidak perlu multi-tenant isolation

### Data Sensitivity
- Data karyawan/HR: enkripsi sensitif (NIK, gaji, dsb)
- Audit trail untuk compliance internal
- Export data harus ada access control

### UI/UX
- Dense information display — user adalah internal staff, tidak perlu terlalu "marketing"
- Data table dengan sort, filter, pagination wajib untuk semua list
- Bulk action untuk efisiensi operasional
- Keyboard shortcut untuk power user
- Print/export (PDF, Excel) untuk semua report

### Deployment
- On-premise atau private cloud (VPS/VM)
- Tidak perlu CDN global
- Backup database regular (cron)
- Single region cukup

---

## Pertanyaan Tambahan untuk Brief Internal Tool

- Berapa user aktif yang akan menggunakan sistem ini?
- Apakah ada cabang/departemen yang datanya perlu diisolasi?
- Apakah perlu integrasi dengan sistem yang sudah ada? (HRIS, ERP, dsb)
- Apakah perlu akses mobile (hanya baca atau full access)?
- Siapa yang akan jadi admin sistem?

---

## Engineering Defaults Tambahan

- Form validation yang ketat (data operasional tidak boleh corrupt)
- Confirmation dialog untuk aksi destructive (delete, cancel, reject)
- Loading indicator untuk semua action (user sering pakai network lambat)
- Error message yang jelas dan actionable
- Semua list/table harus punya search dan filter

---

## Guardrails Tambahan untuk Internal Tool

- Jangan buat fitur self-registration tanpa approval eksplisit
- Semua aksi penting harus masuk audit log dengan user yang melakukannya
- Export/download data sensitif harus ada logging
- Jangan expose data dari department/role lain tanpa explicit permission
- Jangan buat endpoint publik yang tidak dilindungi auth
