Skip to content

Arsitektur Backend

Ringkasan

Backend dibangun dengan Laravel 13 di atas FrankenPHP dengan Octane. Aplikasi boot sekali dan handle banyak request dalam proses yang sama.

Octane Considerations

  • Jangan simpan state per-request di singleton atau static property
  • Gunakan scoped binding ($this->app->scoped()) untuk service per-request
  • Deteksi driver: config('octane.server')

Struktur Folder

app/
├── Console/Commands/        # Artisan commands
├── Enums/                   # Enum per domain
├── Filament/                # Panel admin
├── Http/
│   ├── Controllers/Api/     # API controllers
│   ├── Controllers/Landing/ # Inertia page controllers
│   ├── Middleware/Setup/    # SetupMiddleware, MaintenanceMiddleware
│   ├── Requests/            # Form request validation
│   └── Resources/           # API Resources
├── Models/                  # Eloquent models per domain
├── Observers/               # Model observers
├── Providers/               # Service + panel providers
├── Services/                # Logika bisnis
└── Traits/Common/           # Shared traits

Service Layer

Services di app/Services/:

PatternContohDeskripsi
{Domain}/{Action}.phpOtp/Generate.phpSingle-action service dengan handle()
{Domain}/{Name}Service.phpImageKitService.phpMulti-method service class

Aturan: Service berisi logika bisnis saja — tidak ada HTTP concerns.


Trait Layer

TraitFungsi
HasLocalizationResolve kolom JSON terlokalisasi
HasContactAttachment kontak via tabel contacts
HasLogAudit logging otomatis
HasAssetRelasi dinamis ke tabel assets

File Penting

FileTujuan
bootstrap/app.phpMiddleware stack
app/Http/Middleware/Setup/SetupMiddleware.phpGate redirect /setup
app/Services/Common/IdentifierAppService.phpPengecekan state terpusat
app/Providers/Filament/PortalPanelProvider.phpKonfigurasi panel Portal