# Standar Coding

- Ikuti konvensi Laravel/PHP yang disepakati, PSR yang relevan, formatter/linter proyek, dan gunakan nama domain yang jelas.
- Controller tipis; validasi melalui request/form object, otorisasi melalui policy, aturan inti di domain/service yang teruji.
- Gunakan transaksi untuk operasi multi-entitas; jangan melakukan side effect eksternal sebelum commit tanpa pola outbox/kompensasi.
- Migrasi harus dapat ditinjau, konsisten dengan MySQL hosting, dan memiliki strategi data lama. Hindari perubahan manual di produksi.
- Semua waktu, bahasa, wilayah, dan format uang mengikuti konfigurasi aplikasi (`APP_TIMEZONE`, `APP_LOCALE`, `APP_REGION`, `SIAKAD_CURRENCY`, `SIAKAD_CURRENCY_SYMBOL`, `SIAKAD_CURRENCY_DECIMALS`, serta separator angka). Format nilai uang di UI menggunakan komponen `x-ui.currency`; periode akademik berasal dari database.
- Dependensi ditambahkan hanya dengan alasan, lisensi yang ditinjau, versi terkunci, dan pemeriksaan kompatibilitas PHP 8.3/Laravel 13.
- Secret/data nyata tidak boleh masuk source, log, fixture, atau screenshot.
- UI wajib memakai design token, layout, dan komponen global dari [spesifikasi UI/UX](16-ui-ux-design-system.md); hindari styling duplikat, CSS inline, CSS dalam PHP/Blade, dan `!important`.
- Gunakan komponen Blade `x-ui.*` untuk tombol, field, badge, alert, tabel, dan empty state; gunakan view pagination global `vendor.pagination.siakad`.
- Jangan gunakan blur/backdrop blur atau efek visual berat; scrollbar mengikuti gaya kustom global yang ringan dengan fallback aksesibel.
- Tambahkan tes untuk aturan dan izin yang berubah; dokumentasikan keputusan arsitektur di [log keputusan](15-catatan-keputusan.md).

## Clean-room dan IP
Buat kode baru berdasarkan kebutuhan pengguna dan dokumentasi resmi yang berhak digunakan. Jangan menyalin kode, skema privat, kredensial, atau materi berlisensi dari repositori lain tanpa izin dan pemeriksaan lisensi. Catat asal dependency dan lisensinya sebelum distribusi.
