# Global Rules

## Infrastructure

* Generate SSH private key jika belum tersedia dan simpan di folder `/ssh`.
* Pastikan koneksi SSH menggunakan private key berhasil.
* Simpan hasil audit server ke file `/server/<sshHOST>_audit.txt`.

## Progressive Web App (PWA)

* Aplikasi wajib menggunakan PWA.
* Mendukung:

  * Offline Mode
  * Caching
  * Push Notification
  * Background Sync
  * Auto Update setelah deploy versi baru.

## Device Integration

Aplikasi harus memanfaatkan fitur perangkat yang tersedia sesuai dukungan browser dan OS:

* Kamera
* GPS / Geolocation
* Push Notification
* Upload File
* QR Code Scanner
* Barcode Scanner
* Mikrofon
* Video Recording
* Share File
* Clipboard
* Offline Storage
* Install to Home Screen
* Biometric Authentication (FaceID / Fingerprint / WebAuthn)
* Bluetooth (BLE)
* NFC
* USB Device
* Serial Port (COM)
* Thermal Printer via Bluetooth

## User Experience (UX)

* Setiap proses async wajib menampilkan loading indicator.
* Setelah proses selesai tampilkan notifikasi sukses/gagal dalam modal atau popup.
* User harus selalu mengetahui status proses yang sedang berjalan.
* Tidak boleh ada proses yang berjalan tanpa feedback visual.

## User Interface (UI)

* UI minimalis, modern, responsif, dan mobile-first.
* Tampilan harus optimal pada:

  * Desktop
  * Tablet
  * Android
  * iPhone
* Gunakan icon yang sesuai dengan konteks menu.
* Tambahkan catatan, hint, atau helper text pada setiap form atau fitur.
* Sediakan Theme Switcher:

  * Light
  * Dark
  * System
* Pastikan kontras warna dan keterbacaan tetap baik pada semua tema.

## Navigation

* Gunakan konsep SPA (Single Page Application).
* Header, sidebar, dan menu harus persistent.
* Saat berpindah menu hanya area content/body yang berubah.
* Jangan me-render ulang seluruh layout.
* Hilangkan layout shift saat navigasi.
* Pertahankan posisi scroll sidebar/menu.
* Tambahkan indikator menu aktif yang jelas:

  * Highlight
  * Active Background
  * Border
  * Active Icon
* Transisi halaman harus cepat dan responsif.

## Data Table & List

* Header dan footer harus tetap terlihat (sticky).
* Area data menggunakan scroll internal.
* Semua list wajib mendukung:

  * Search
  * Filter
  * Sort
* Optimalkan tampilan mobile.
* Untuk tabel dengan banyak kolom:

  * Saat row dipilih tampilkan popup/action sheet.
  * Jangan tampilkan semua tombol aksi langsung di tabel mobile.
* Gunakan pagination atau virtual scrolling jika data besar.

## Performance

* Optimalkan loading dan rendering.
* Minimalkan request berulang.
* Gunakan cache jika memungkinkan.
* Pastikan aplikasi tetap nyaman digunakan pada koneksi internet lambat.

## Accessibility

* Semua tombol memiliki tooltip atau label yang jelas.
* Mendukung keyboard navigation.
* Mendukung screen reader dasar.
* Hindari teks dengan kontras rendah.

## Development Standard

* Kode modular, reusable, dan mudah di-maintain.
* Hindari duplikasi kode.
* Gunakan naming convention yang konsisten.
* Setiap fitur baru harus responsive dan mendukung PWA.
