Lewati ke konten utama

Architecture

High-Level Architecture

Layering

LayerLokasiTanggung Jawab
Routingroutes/*.php, routes/API/V1/api.phpendpoint map + middleware
Controllerapp/Http/Controllers/*orchestration request/response
Request Validationapp/Http/Requests/*validasi payload
Domain Modelapp/Models/*, app/Modules/*/Models/*aturan domain + relasi
Action (SPK/PO module)app/Modules/*/Actions/*business operation tersegmentasi
Resource APIapp/Http/Resources/*transform response API
Persistencedatabase/migrations/*schema + evolusi data
Asyncapp/Jobs/*export/pdf/push async

Route Grouping

GroupPrefixMiddleware
Admin/admin/*web, auth, access:*
API V1/api/v1/*api, sebagian auth:sanctum + access:*
Membershipcustom route fileregister/login/otp/fcm

Auth & Access Control

  • Session auth untuk web admin.
  • Sanctum token untuk API.
  • Gate policy di AuthServiceProvider.
  • Middleware EnsureUserHasRole memvalidasi role + edge case project yang di-soft-delete.

Modul Kunci

  1. SPB Module: pengajuan bahan/barang proyek.
  2. PO Module: purchase order per supplier, lifecycle approval sampai penerimaan.
  3. Payment Module: payment terms, tax, verifikasi, split payment.
  4. SPK Module: kontrak kerja + revisi + payment + accounting + receipt.

Pattern yang Dipakai

  • Fat-model scopes untuk filtering status (scopeCondition, notComplete, dst).
  • Enum native PHP (SPK/PO receipt/payment split status).
  • Action classes untuk operasi kompleks modul SPK/PO receipt.
  • Soft delete di beberapa entity (users, suppliers, spbs, pre_orders, spks).

Technical Debt yang Terdeteksi

AreaObservasiDampak
Query SPB notComplete/completeraw SQL kompleks + TODO refactormaintainability rendah
Campuran style model/modulesebagian domain masih controller-heavykonsistensi rendah
Route admin sangat besar>100 route dalam satu fileonboarding sulit

Catatan Verifikasi

  • Status: Partial
  • Scope: Performa query raw SPB pada volume data besar belum dibenchmark.
  • Action: Jalankan profiling query + baseline response time di staging/production-like dataset.