A kit áttekintése
A github.com/gp-system/gpsystem egy vékony chassis 12 önálló Go-modul fölött: minden modul (hibakezelés, config-betöltés, adatbázis-réteg, async-stack, auth, mail, notification, storage, telemetria, ...) saját repóval, saját go.mod-dal, saját v0.1.0 taggel rendelkezik, önmagában is használható bármely Go-programban. Ami a kitben maradt: egy scaffolding CLI és négy futásidejű chassis-csomag, ami futó service-szé komponálja ezeket a modulokat.
Mi van a kitben
| Csomag | Mit csinál |
|---|---|
app | a signal-vezérelt graceful-shutdown folyamat-életciklus, amin minden más chassis-csomag ül: drain, closerek (LIFO), telemetria-flush |
server | a chi-alapú HTTP-chassis: Config, Run, RegisterFunc, StrictValidator |
worker | a háttérfeldolgozás-chassis: asynq szerver + outbox relay + schedule runner, egyetlen binárisban |
realtime | a centrifuge-alapú WebSocket/SSE gateway, ami notificationöket pushol a csatlakozott kliensekhez |
cmd/gpsystem | a scaffolding CLI: new project, new module, add surface, add handler, és a többi generátor |
Mellettük két, kit-generált (nem önálló modul) téma is él, mert nincs saját modulotthonuk: a migrációk (a cmd/migrate konvenció, a dbx/pg-re épülve) és a social login (OAuth2-provider bekötés az auth modulra építve).
Ragasztóanyag, nem framework
A kit nem rejti a modulokat interfész, container vagy facade mögé: komponálja őket. A server.Run, a worker.Run és a realtime.Run a 12 modul egy-egy kiválasztott részhalmazát drótozza be futtatható processzé, és a CLI legenerálja ezt a drótozást, így ritkán írod kézzel, de maga a drótozás sima, explicit Go-kód marad a main.go-dban. Ez ugyanaz a "centralizálj, ne absztrahálj" elv, amire az egész projekt épül: a mögöttes libek nyers típusai (chi.Router, *asynq.Task, centrifuge.Node) láthatók a kit saját API-jában, nincsenek elrejtve. A teljes modultérképet, ami fölé ez a vékony réteg épül, az Architektúra oldal mutatja.
Telepítés
A CLI-hez:
go install github.com/gp-system/gpsystem/cmd/gpsystem@latest
A chassis-csomagok (app, server, worker, realtime) használatához egy projektben:
go get github.com/gp-system/gpsystem@latest
Egy új projekt gpsystem new project-tel való scaffoldolása ezt a függőséget automatikusan felveszi a generált go.mod-ba, tehát a második parancsot ritkán futtatod kézzel; főleg akkor számít, ha egy meglévő, kézzel épített projektbe kötsz be egy chassis-csomagot.
Miért használd egyáltalán a kitet
Semmi itt nem kötelező. A 12 modul mindegyike önmagában is működik, bármilyen Go-programban, kit nélkül: a dbx/pg, az auth, a queue és a többi nulla függőséggel bír a github.com/gp-system/gpsystem-től. A kit azért létezik, hogy megkíméljen az életciklus, a telemetria-bootstrap, a HTTP-routing és a worker-/task-dispatch kézi bedrótozásától, valamint a TypeSpec→OpenAPI→szerverkód generátorok megírásától, amik egy specifikációból futtatható surface-t csinálnak. Ha ezt nem akarod (mondjuk egyetlen modult kötnél be egy meglévő service-be), hagyd ki a kitet, és importáld közvetlenül a szükséges modulokat; hogy a darabok hogyan illeszkednek egymáshoz akár így, akár úgy, azt a Getting started oldal mutatja.
Merre tovább
- Alkalmazás-életciklus: a közös
app.Runváz. - Szerver: a HTTP-chassis.
- Worker: a háttérfeldolgozás-chassis.
- Realtime: a WebSocket/SSE gateway.
- Migrációk: a
cmd/migratekonvenció. - Social login: OAuth2-provider bekötés.
- CLI áttekintő: a scaffolding parancsok.