Ddonisgo
Framework

Architecture & Request Flow

Bootstrap, urutan eksekusi request, dan alur hidup request dari masuk sampai response.

Bootstrapping (high level)

Saat cmd/server dijalankan, bootstrap di internal/app menginisialisasi:

  1. Konfigurasi dari environment variables
  2. Koneksi database (GORM)
  3. Storage service (local atau s3)
  4. Koneksi KeyDB/Redis (untuk flash messages)
  5. Gin router + konfigurasi CORS
  6. Static route /assets jika local storage aktif

Kemudian:

  1. Core plugins dimuat via internal/pluginloader, lalu user plugins (dari cmd/server/main.go)
  2. Plugin services di-register dengan shared deps plugins.ServiceDeps{DB, Store}
  3. Plugin middleware dipasang ke router groups (global, admin, api) berdasarkan priority
  4. Plugin routes di-register
  5. Swagger docs route di-register (jika aktif)
  6. HTTP server start di port terkonfigurasi

Request flow (urutan eksekusi)

  1. Request HTTP masuk ke binary server
  2. Router match route → trigger middleware chain
  3. Global middleware jalan sesuai priority: Logger, Recovery, CORS, plugin middleware
  4. Matched handler dijalankan (handler plugin / custom)
  5. Handler memanggil service untuk business logic, DB, storage, cache
  6. Shared deps berasal dari bootstrap (GORM, storage, KeyDB opsional)
  7. Handler serializes response (JSON/HTML)
  8. Plugin hooks / response middleware bisa memodifikasi response sebelum dikirim

Diagram

Client HTTP → cmd/server → Router → Middleware Chain
   → Core middleware (log, recovery, CORS)
   → Plugin middleware (priority-based)
   → Handler → Service → GORM → Response → Client