Codebase dazoapp berjalan di produksi dan diwariskan turun-temurun tanpa code review. Rencana pembenahan ini diurutkan risiko rendah → tinggi, bukan berdasarkan seberapa mengganggu. Tujuannya: menjaga pembenahan tidak menghentikan pengiriman fitur.
Aturan utama: Jangan gabungkan pembenahan dengan pengembangan fitur dalam satu commit. Pisahkan agar mudah di-revert bila ada regresi.
Tahap 1 — Dokumentasi (nol risiko)
| # | Item | Status | Catatan |
|---|---|---|---|
| 1 | README.md dazoapp | ✅ Selesai | 691 baris, konteks lengkap ekosistem |
| 2 | resources/js/global.example.js + .env.example (87 variabel hilang) | ⬜ Belum | global.js gitignored tanpa contoh, diimpor 105 file. .env.example masih DB_CONNECTION=mysql. Onboarding blocker |
| 3 | CONTRIBUTING.md — konvensi koding tim | ⬜ Belum | Penamaan file/komponen, kapan bikin komponen baru vs pakai yang ada, batas ukuran file, bahasa komentar & commit |
Tahap 2 — Jaring pengaman (risiko rendah)
| # | Item | Status | Prasyarat | Catatan |
|---|---|---|---|---|
| 4 | Test untuk wallet, order, webhook pembayaran | ⬜ Belum | — | Prasyarat semua tahap berikutnya. Tanpa ini, refactor = tebakan. Test coverage saat ini hampir nol (hanya AspireTest.php) |
| 5 | Pasang linter/formatter | ⬜ Belum | — | Pint sudah ada di require-dev tapi belum dipakai. ESLint + Prettier belum ada. Jalankan pada file baru saja dulu, jangan format ulang seluruh repo |
| 6 | Rotasi API token Cloudflare hardcoded + tinjau route login-as-user | ⬜ Belum | — | Token Cloudflare hardcoded di 4 file. Route login-as-user pakai path acak sebagai pengaman (routes/api.php:92-93), security-by-obscurity |
| 7 | Pusatkan URL service ke config/services.php | ⬜ Belum | — | Hilangkan pola if (env == production) di ~20 controller. Host produksi engine WhatsApp belum konsisten (engine.dazo.id vs engine-wa.dazo.id). Lihat External Services |
Tahap 3 — Bersih-bersih (risiko rendah, tidak sentuh fitur)
| # | Item | Status | Catatan |
|---|---|---|---|
| 8 | Hapus skrip debug/mockup/backup dari root | ⬜ Belum | Tambahkan polanya ke .gitignore |
| 9 | Perbaiki state/store.js:4 — bug nyata satu baris | ⬜ Belum | import notification from './modules/layout' harusnya ./modules/notification. Lihat Bug Tracker #1 |
| 10 | Lepas resources-creative/ | ⬜ Belum | Pindahkan 34 file terpakai ke resources/js/, perbaiki 55 import, hapus direktori. Menghilangkan ±143.400 baris (rasio manfaat tertinggi) |
| 11 | Hapus kode mati lain | ⬜ Belum | Pages/Biolink copy/, 4 layout orphan, dependensi vue-router & concurrently |
| 12 | Buang sisa template di resources/ | ⬜ Belum | ±4.200 baris SCSS mati + 15 dataset demo di js/common/data/ |
Tahap 4 — Konsolidasi (risiko sedang)
Prasyarat: Tahap 2 (test) wajib selesai sebelum mulai tahap ini.
| # | Item | Status | Prasyarat | Catatan |
|---|---|---|---|---|
| 13 | Lepas right-bar.vue (theme customizer Velzon) | ⬜ Belum | #4 | Vuex bisa dihapus seluruhnya setelah ini. Pinia sudah jadi state default |
| 14 | Arahkan axios polos (42 file) ke services/axiosInstance.js | ⬜ Belum | #4 | Agar refresh token JWT tertangani seragam. Lihat JWT Lifecycle |
| 15 | Pilih satu library chart dan satu editor | ⬜ Belum | #4 | Migrasikan pemakaian lain secara bertahap |
| 16 | Satukan komponen kembar (modal, loader, input) | ⬜ Belum | #4 | Mulai dari yang paling sedikit dipakai. Lihat Konvensi |
Tahap 5 — Struktural (risiko tinggi)
Prasyarat: Tahap 2 (test) wajib selesai. Kerjakan per modul, bukan big-bang.
| # | Item | Status | Prasyarat | Catatan |
|---|---|---|---|---|
| 17 | Pecah Pages/Order/Main.vue (9.668 baris) & OrderController.php (2.987 baris) | ⬜ Belum | #4 | Lihat Order Lifecycle untuk pemetaan alur |
| 18 | Pindahkan logika bisnis dari komponen Vue ke service backend | ⬜ Belum | #4 | Mayoritas logic ada di controller, bukan service. Lihat Konvensi |
| 19 | Dokumentasikan bentuk dokumen MongoDB per koleksi | 🟡 Berjalan | — | Tidak ada migration sebagai acuan. Lihat Schema MongoDB |
| 20 | Tinjau QUEUE_CONNECTION=sync | ⬜ Belum | — | Pastikan sesuai dengan keberadaan service worker. Saat ini job berjalan sinkron dalam request |
Yang sudah diketahui rusak
Tidak perlu dilaporkan ulang sebagai temuan baru — lihat daftar lengkap di Bug Tracker.
Yang perlu perhatian keamanan
- Route login-as-user (
routes/api.php:92-93) —/afEqVLZBoQyNVCkXpbtiWuNhiZYKaiLqYwFAP/{id}dan/sFfsmkGVzExKomNGFQWpkEidsTeEhkam. Menerbitkan JWT penuh atas nama user mana pun tanpa middleware auth. Security-by-obscurity, dan path-nya ada di repo FORGOT_OTP_DEBUG_BYPASS— pastikan tidak aktif di produksi
Referensi
README.mddazoapp — Rencana pembenahan- External Services — detail URL service yang perlu dipusatkan
- Konvensi Kode — pola dominan untuk acuan konsolidasi
- Bug Tracker — 79 bug tercatat, status per item