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:
- Konfigurasi dari environment variables
- Koneksi database (GORM)
- Storage service (
localataus3) - Koneksi KeyDB/Redis (untuk flash messages)
- Gin router + konfigurasi CORS
- Static route
/assetsjika local storage aktif
Kemudian:
- Core plugins dimuat via
internal/pluginloader, lalu user plugins (daricmd/server/main.go) - Plugin services di-register dengan shared deps
plugins.ServiceDeps{DB, Store} - Plugin middleware dipasang ke router groups (global, admin, api) berdasarkan priority
- Plugin routes di-register
- Swagger docs route di-register (jika aktif)
- HTTP server start di port terkonfigurasi
Request flow (urutan eksekusi)
- Request HTTP masuk ke binary server
- Router match route → trigger middleware chain
- Global middleware jalan sesuai priority: Logger, Recovery, CORS, plugin middleware
- Matched handler dijalankan (handler plugin / custom)
- Handler memanggil service untuk business logic, DB, storage, cache
- Shared deps berasal dari bootstrap (GORM, storage, KeyDB opsional)
- Handler serializes response (JSON/HTML)
- 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