# 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/_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.