Build SaaS backends in Go without rebuilding the wiring.
package main
import ( "context" "log" "net/http"
"github.com/gasmod/gas")
func main() { app := gas.NewApp()
app.Router().Handle(nil, http.MethodGet, "/", func(ctx gas.Context) error { return ctx.Text(http.StatusOK, "Hello, World!") })
if err := app.Run(context.Background()); err != nil { log.Fatal(err) }}$ go run .INFO server started environment=development addr=0.0.0.0:8080
$ curl localhost:8080Hello, World!One core, eleven modules
Each module is its own Go module and registers as a service, like your own code. Most implement an interface the core defines, so your services depend on the interface, not the module.
gasThe core: services, routing, handlers and middleware.gas.NewAppconfigEnvironment variables, .env, JSON and AWS Secrets Manager, bound to structs.gas.ConfigProviderlogStructured logging over slog or zerolog, with log shipping.gas.LoggerdatabasePostgreSQL, MySQL and SQLite, with transaction helpers.gas.DatabaseProvidermigrateDatabase migrations owned by the services that need them.gas.MigrationManagerauthJWTs, sessions, API keys and single-use tokens.gas.PrincipalcacheKey-value caching in memory or on Valkey.gas.CacheProviderstorageObject storage on S3, a local directory or memory.storage.ProviderqueueJob queues on Amazon SQS or in memory.gas.JobQueueProvideremailTransactional email over Amazon SES or an in-memory outbox.gas.EmailProvidertemplateTemplate storage in memory, a directory, an embedded FS or a database.gas.TemplateProvideruiHTML pages with layouts, partials, static files and HTMX fragments.ui.Provider