gombit

package module
v0.1.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 29, 2026 License: MIT Imports: 0 Imported by: 0

README

Gombit

CI Release Go Reference

A Django-for-Go full-stack framework. One CLI scaffolds a typed Go API, its OpenAPI document, a matching TypeScript client, a React frontend, versioned SQL migrations, session auth, and a working admin — then builds the whole thing into a single binary.

go install github.com/gombit-dev/gombit/cmd/gombit@latest
gombit new tasks --database sqlite --auth cookie --ui mui
cd tasks && gombit dev

Status: pre-1.0. M0–M5 and ADMIN-1..3 are complete and CI-gated across SQLite, PostgreSQL, and MySQL. APIs may still change between minor versions.

Why Gombit

Go has excellent HTTP routers. What it doesn't have is the thing Django users miss on day one: the batteries, wired together and agreeing with each other.

Gombit's position is that the pieces you'd otherwise assemble by hand — schema, API contract, typed client, auth, admin — should be derived from one source of truth instead of hand-synchronized:

  • Your handler signature is the contract. OpenAPI 3.1 is emitted from Huma-typed handlers, never hand-written, and the TypeScript client is generated from that. A drift check fails CI when they disagree.
  • Your GORM model is the schema. Migrations are versioned SQL diffed by Atlas from your models — readable, reviewable, and reversible. No AutoMigrate in production, no hand-rolled migration DSL.
  • Your registry is the admin. A real Django-style admin at /admin/, served by the framework at runtime, not generated pages you inherit and maintain.

And the escape hatches are real: app.Router() hands you the raw *gin.Engine, tested and first-class.

What's in the box

Runtime Gin + Huma with typed handlers, framework.App lifecycle hooks, graceful shutdown, structured logging, typed env config with secret redaction
Data GORM over SQLite, PostgreSQL, and MySQL — all three CI-gated on every push, with a shared conformance suite
Migrations Atlas-backed gombit db makemigrations / migrate / rollback / status / seed / reset
Contract OpenAPI 3.1 emitted from code, interactive /docs, generated TypeScript client, contract drift check
Frontend Vite + React + TypeScript, React Hook Form, optional Material UI CRUD preset (--ui mui)
Auth Bearer JWT with refresh rotation (token in memory, never localStorage), or first-class cookie sessions with CSRF (--auth cookie)
Admin Runtime generic admin at /admin/ with introspection API, permissions, groups, and superuser bypass
CLI Cobra tree: new, dev, build --embed, make resource, make command, db, openapi, client, routes, doctor, config, createsuperuser, version
Deploy gombit build --embed — API, SPA, and admin in one binary

Quick start

Prerequisites: Go 1.25+, Node 22+, and a C toolchain (SQLite is cgo-only). Migrations also need Atlas: curl -sSf https://atlasgo.sh | sh -s -- --community. Full details in installation.md.

# 1. Install
go install github.com/gombit-dev/gombit/cmd/gombit@latest

# 2. Scaffold
gombit new tasks --database sqlite --auth cookie --ui mui
cd tasks

# 3. Run the API and frontend together
gombit dev

gombit dev serves the Go API and Vite together, proxies /api and /openapi.json, and regenerates the TypeScript client whenever the spec changes:

URL
http://127.0.0.1:5173 React app
http://127.0.0.1:8080/docs interactive API docs
http://127.0.0.1:8080/admin/ admin SPA
The CRUD loop
# Generate a feature package: model + Huma handler + routes + React pages.
gombit make resource Task title:string:required done:bool

# Diff your models into versioned SQL, then apply it.
gombit db makemigrations create_tasks --model github.com/example/tasks/internal/task.Task
gombit db migrate

# Regenerate the typed client from the live spec.
gombit client generate

# Create an admin account and open /admin/.
export GOMBIT_JWT_SECRET="$(openssl rand -hex 32)"
gombit createsuperuser --email admin@example.com

make resource edits cmd/server/main.go through go/ast — never regex — to register your routes and models. Generators are idempotent and additive, support --dry-run and --force, and never overwrite files you own.

Then ship it:

gombit build --embed   # one binary: API + SPA + admin

Next: the tutorial walks this whole loop with explanations, and examples/tutorial/ is the finished app.

Architecture

flowchart LR
  Model[GORM models] --> Atlas[Atlas diff]
  Atlas --> SQL[(versioned SQL)]
  Model --> Handler[Huma-typed handlers]
  Handler --> Gin[Gin router]
  Handler --> Spec[OpenAPI 3.1]
  Spec --> TS[TypeScript client]
  TS --> React[React + Vite]
  Model --> Registry[admin registry]
  Registry --> AdminUI["/admin/ SPA"]
  Gin --> Binary[single binary]
  React --> Binary
  AdminUI --> Binary

Both arrows out of your model are the point: one declaration drives the schema and the API, and one API drives the client.

The response envelope is fixed so clients can rely on it — success is {"data": ..., "meta"?: ...}, and errors carry a machine-readable code plus per-field detail:

{
  "error": {
    "code": "validation_error",
    "message": "The request contains invalid fields.",
    "fields": {"title": ["expected length >= 1"]},
    "request_id": "5db935cd-7c74-4ffe-a4de-0fa817451f54"
  }
}

The admin

No other Go web framework ships a real Django-style admin — not Gin, Echo, Fiber, or Encore. Gombit's is a runtime surface over an explicit registry:

admin.Register(app, Task{}, admin.Options{
	Slug:   "tasks",
	List:   []string{"title", "done"},
	Search: []string{"title"},
})

That gives you list, detail, create, update, and delete at /admin/, backed by GET /api/v1/admin/meta and a generic /api/v1/admin/resources/{slug} data plane. Permissions default to admin.{slug}.{action}, are granted directly or through groups, and superusers bypass them.

Registration is explicit and typed — resolved once at startup, with no request-time reflection over your models, and no generated admin pages for you to maintain. Requires cookie auth. See admin.md and ADR-013.

Compared with

Gombit Gin / Echo / Fiber Buffalo Encore
HTTP routing ✅ (Gin)
Typed OpenAPI from code ➖ add-on
Generated TS client + drift check
Versioned SQL migrations ✅ (Atlas) ✅ (fizz)
Scaffolding generators ✅ AST-safe
Session auth + CSRF
Django-style admin
Self-hosted, no vendor runtime

Gombit is younger than all of them. If you want a minimal router, use Gin directly — Gombit is Gin underneath, and hands it back to you on request.

Performance

The benchmarks/ suite measures the same canonical /api/projects CRUD app across six stacks (Gin+GORM, Gombit, Django, Rails, Laravel, NestJS) under fixed resource limits, plus each container's operational footprint. The block below is generated by make benchmark-report from benchmarks/results/latest/ — do not edit it by hand; a CI job (benchmark-report-drift) fails if it no longer matches the generator. Read the methodology, especially "How not to interpret these results", before citing any figure: these are same-host, closed-loop numbers, not a cross-language leaderboard.

Generated by make benchmark-report from benchmarks/results/latest/ — do not edit by hand.

Numbers are a same-host, closed-loop snapshot under fixed resource limits; read benchmarks/docs/methodology.md — especially its "How not to interpret these results" section — before citing any figure.

Framework tax — net/http → Gin → Huma → Gombit

Per-request overhead of each layer on the same machine for the validated typed POST (median ns/op, B/op, allocs/op; lower is better; vs net/http is the relative cost) — the same-language, same-runtime cost of adopting Gombit. The other four scenarios (plaintext, json, path-param, invalid-post) are in benchmarks/results/latest/microbench.json.

stack ns/op B/op allocs/op vs net/http
net/http 2427 1643 18 1.0×
Gin 4722 1864 26 1.9×
Huma + Gin 7576 2059 31 3.1×
Gombit 22974 7525 93 9.5×
PostgreSQL CRUD read — GET /api/projects?page=1&limit=20

At 100 concurrent clients, median across trials: throughput (higher is better) and tail latency (lower is better). p50/p95/p99 are the median across trials of each per-trial percentile; ⚠ marks a group whose throughput varied by more than 5% across trials — read its row with care.

framework req/s p50 ms p95 ms p99 ms
django 138 689.2 1011.2 1046.2
gin-gorm 138 ⚠ 613.3 1404.1 1915.1
gombit 140 612.7 1390.5 1875.3
laravel 64 1511.1 1692.5 2143.4
nestjs 131 764.3 820.1 890.8
rails 165 600.1 674.3 689.4
Operational footprint

Container-start cold start (median) and memory — lower is better. CPU is the median percent one container drew during the closed-loop load (100 = one core); it is not a quality score — a faster app that does more work in the window can show higher CPU, so read it against the throughput row.

framework cold start (ms) idle (MB) loaded (MB) CPU (%) image (MB)
django 1460 164.2 198.3 183 56.5
gin-gorm 140 5.0 19.3 15 21.1
gombit 11 5.0 20.7 14 87.7
laravel 280 48.6 99.1 199 183.3
nestjs 690 59.5 101.3 33 164.5
rails 1730 86.5 211.6 57 106.7
How these were measured
  • Host: Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz, 8 logical CPUs, 7.2 GiB RAM (linux/amd64, kernel 7.0.0-30-generic)
  • Commit / date: 88442ae706f4, 2026-08-27T21:57:34Z
  • PostgreSQL: postgres:16.4-alpine
  • Resource limits (django, gin-gorm, gombit, laravel, nestjs, rails): enforced: cpu 2.00 vCPU (intended 2.00 vCPU), memory 1 GiB (intended 1 GiB)
  • Postgres container limits: enforced: cpu 2.00 vCPU (intended 2.00 vCPU), memory 2 GiB (intended 2 GiB)
  • Protocol: concurrency 1/10/100/500/1000 VUs, 5 trials × 30s each (warm-up 10s)
  • Load generator: grafana/k6:0.55.0. Full method: benchmarks/docs/methodology.md.

Documentation

Start with installation and the tutorial. The full index — runtime, data, contract, frontend, auth, admin, and ADRs — is at docs/README.md.

Scope, locked architecture decisions, and the issue backlog live in docs/GOMBIT_BUILD_PLAN.md, which is authoritative.

Roadmap

Shipped: typed config and lifecycle (M1) · Atlas migrations (M2) · Huma contract, OpenAPI, and TS client (M3) · Cobra CLI and generators (M4) · React frontend, Bearer and cookie auth, MUI preset, embedded builds (M5) · the runtime admin with permissions (ADMIN-1..3).

Post-v0.1, deliberately not here yet: background jobs and queues, events, scheduler, mail, storage, gRPC, multi-tenancy, i18n.

Contributing

Issues and pull requests are welcome — start with CONTRIBUTING.md.

License

MIT © Gombit

Documentation

Overview

Package gombit is the root package for the Gombit framework.

Index

Constants

View Source
const ModulePath = "github.com/gombit-dev/gombit"

ModulePath is the canonical Go module path for Gombit.

Variables

This section is empty.

Functions

This section is empty.

Types

This section is empty.

Directories

Path Synopsis
Package admin is Gombit's runtime generic admin (ADMIN-1 through ADMIN-3 / ADR-013).
Package admin is Gombit's runtime generic admin (ADMIN-1 through ADMIN-3 / ADR-013).
Package auth is Gombit's runtime Bearer JWT surface (C3 / M5-2).
Package auth is Gombit's runtime Bearer JWT surface (C3 / M5-2).
benchmarks
apps/gin-gorm command
Command gin-gorm is the BENCH-1 primary framework-tax control (issue #141 "Gin + GORM ...
Command gin-gorm is the BENCH-1 primary framework-tax control (issue #141 "Gin + GORM ...
apps/gombit command
Command gombit is the BENCH-1 Gombit-runtime implementation of the canonical /api/projects CRUD API (issue #141, benchmarks/docs/schema.md): a normal Gombit app — Huma handlers, GORM, framework.App — using Atlas migrations (`gombit db makemigrations`/`migrate`, not AutoMigrate; AGENTS.md D3) applied as a separate step before this binary runs, the same way a deployed Gombit app would.
Command gombit is the BENCH-1 Gombit-runtime implementation of the canonical /api/projects CRUD API (issue #141, benchmarks/docs/schema.md): a normal Gombit app — Huma handlers, GORM, framework.App — using Atlas migrations (`gombit db makemigrations`/`migrate`, not AutoMigrate; AGENTS.md D3) applied as a separate step before this binary runs, the same way a deployed Gombit app would.
apps/gombit/internal/project
Package project implements the canonical /api/projects CRUD API (benchmarks/docs/schema.md) as a normal Gombit feature package: Huma handlers, GORM models, framework.App wiring — the same shape `gombit make resource` would emit, hand-extended with the update/delete and pagination the generator doesn't produce yet.
Package project implements the canonical /api/projects CRUD API (benchmarks/docs/schema.md) as a normal Gombit feature package: Huma handlers, GORM models, framework.App wiring — the same shape `gombit make resource` would emit, hand-extended with the update/delete and pagination the generator doesn't produce yet.
apps/shared
Package shared holds the response-shape types common to every Go implementation under benchmarks/apps/ (currently gombit and gin-gorm) for the BENCH-1 canonical CRUD comparison (issue #141, benchmarks/docs/schema.md).
Package shared holds the response-shape types common to every Go implementation under benchmarks/apps/ (currently gombit and gin-gorm) for the BENCH-1 canonical CRUD comparison (issue #141, benchmarks/docs/schema.md).
internal/footprint
Package footprint is the schema and encoders for the operational-footprint half of the benchmark (issue #141 §"Operational footprint"): cold-start, idle/loaded memory, and CPU-under-load per implementation, plus the single-binary numbers (binary + image size) for the embedded-Gombit variant.
Package footprint is the schema and encoders for the operational-footprint half of the benchmark (issue #141 §"Operational footprint"): cold-start, idle/loaded memory, and CPU-under-load per implementation, plus the single-binary numbers (binary + image size) for the embedded-Gombit variant.
internal/k6
Package k6 parses the raw k6 summary that benchmarks/workloads/crud-list.js dumps (via handleSummary) into the load-generator-derived fields of a benchmark result.
Package k6 parses the raw k6 summary that benchmarks/workloads/crud-list.js dumps (via handleSummary) into the load-generator-derived fields of a benchmark result.
internal/metadata
Package metadata collects the reproducibility metadata every full benchmark run must capture (issue #141 "Reproducibility metadata"): enough about the host, toolchain, and run parameters that a published table can be reproduced.
Package metadata collects the reproducibility metadata every full benchmark run must capture (issue #141 "Reproducibility metadata"): enough about the host, toolchain, and run parameters that a published table can be reproduced.
internal/microbench
Package microbench is the schema, `go test -bench` parser, and encoders for the framework-tax microbenchmark (issue #141 §13 A): the per-request abstraction cost of each layer — net/http → Gin → Huma → Gombit — across the five scenarios (plaintext, json, path-param, valid-post, invalid-post), reported as ns/op, B/op, and allocs/op.
Package microbench is the schema, `go test -bench` parser, and encoders for the framework-tax microbenchmark (issue #141 §13 A): the per-request abstraction cost of each layer — net/http → Gin → Huma → Gombit — across the five scenarios (plaintext, json, path-param, valid-post, invalid-post), reported as ns/op, B/op, and allocs/op.
internal/report
Package report renders the root README's `## Performance` block from the committed benchmark outputs (results.json, footprint.json, metadata.json) and replaces the content between the benchmark-results markers.
Package report renders the root README's `## Performance` block from the committed benchmark outputs (results.json, footprint.json, metadata.json) and replaces the content between the benchmark-results markers.
internal/reslimits
Package reslimits answers one question honestly: did a container actually receive the resource ceiling the benchmark intended for it?
Package reslimits answers one question honestly: did a container actually receive the resource ceiling the benchmark intended for it?
internal/result
Package result defines the machine-readable benchmark result schema (issue #141 §9) that every benchmark run writes, and the JSON/CSV encoders the summarizer and report generator read back.
Package result defines the machine-readable benchmark result schema (issue #141 §9) that every benchmark run writes, and the JSON/CSV encoders the summarizer and report generator read back.
internal/summary
Package summary turns the per-trial rows a benchmark run records (benchmarks/internal/result) into per-(framework, benchmark, concurrency) aggregates with trial variance, and renders the Markdown report from them.
Package summary turns the per-trial rows a benchmark run records (benchmarks/internal/result) into per-(framework, benchmark, concurrency) aggregates with trial variance, and renders the Markdown report from them.
micro/gin
Package gin is the idiomatic plain-Gin row of the BENCH-1 framework-tax microbenchmark matrix (issue #141): Gin routing and binding-tag validation, no Huma, no Gombit framework.
Package gin is the idiomatic plain-Gin row of the BENCH-1 framework-tax microbenchmark matrix (issue #141): Gin routing and binding-tag validation, no Huma, no Gombit framework.
micro/gombit
Package gombit is the Gombit-runtime row of the BENCH-1 framework-tax microbenchmark matrix (issue #141): the same four scenarios as benchmarks/micro/huma, but registered through a real framework.App instead of bare Huma+Gin (scenario.RegisterEnvelopedRoutes instead of scenario.RegisterRoutes — Gombit wraps responses in the D10 envelope, which bare Huma+Gin does not do by default), so the delta between the two rows isolates the cost of the Gombit runtime itself — request-id, security headers, XSS sanitization, D10 error mapping and envelope — on top of Huma.
Package gombit is the Gombit-runtime row of the BENCH-1 framework-tax microbenchmark matrix (issue #141): the same four scenarios as benchmarks/micro/huma, but registered through a real framework.App instead of bare Huma+Gin (scenario.RegisterEnvelopedRoutes instead of scenario.RegisterRoutes — Gombit wraps responses in the D10 envelope, which bare Huma+Gin does not do by default), so the delta between the two rows isolates the cost of the Gombit runtime itself — request-id, security headers, XSS sanitization, D10 error mapping and envelope — on top of Huma.
micro/huma
Package huma is the bare Huma-over-Gin row of the BENCH-1 framework-tax microbenchmark matrix (issue #141): Huma's typed handlers, validation, and OpenAPI emission on top of Gin, without the Gombit runtime around it and without the D10 response envelope (that's a Gombit convention, not a Huma default).
Package huma is the bare Huma-over-Gin row of the BENCH-1 framework-tax microbenchmark matrix (issue #141): Huma's typed handlers, validation, and OpenAPI emission on top of Gin, without the Gombit runtime around it and without the D10 response envelope (that's a Gombit convention, not a Huma default).
micro/nethttp
Package nethttp is the plain net/http row of the BENCH-1 framework-tax microbenchmark matrix (issue #141): no router, no framework, hand-written JSON encode/decode and manual validation.
Package nethttp is the plain net/http row of the BENCH-1 framework-tax microbenchmark matrix (issue #141): no router, no framework, hand-written JSON encode/decode and manual validation.
micro/scenario
Package scenario defines the five request/response scenarios shared by every row of the BENCH-1 framework-tax microbenchmark matrix (issue #141 "1.
Package scenario defines the five request/response scenarios shared by every row of the BENCH-1 framework-tax microbenchmark matrix (issue #141 "1.
scripts/collect-host-info command
Command collect-host-info writes the reproducibility metadata for a benchmark run (issue #141 "Reproducibility metadata") as JSON.
Command collect-host-info writes the reproducibility metadata for a benchmark run (issue #141 "Reproducibility metadata") as JSON.
scripts/footprint command
Command footprint records one implementation's operational-footprint row (issue #141 §"Operational footprint").
Command footprint records one implementation's operational-footprint row (issue #141 §"Operational footprint").
scripts/inspect-limits command
Command inspect-limits reports whether a running container actually received the resource ceiling the benchmark intended (issue #141 §7 requires the suite to "detect and report that fact rather than silently pretending limits were applied").
Command inspect-limits reports whether a running container actually received the resource ceiling the benchmark intended (issue #141 §7 requires the suite to "detect and report that fact rather than silently pretending limits were applied").
scripts/k6load command
Command k6load runs the crud-list workload against a target for a fixed window and KEEPS + validates the k6 summary, exiting non-zero unless the load was a clean measurement (traffic sent, no HTTP errors, no failed checks — benchmarks/internal/k6's Summary.Validate).
Command k6load runs the crud-list workload against a target for a fixed window and KEEPS + validates the k6 summary, exiting non-zero unless the load was a clean measurement (traffic sent, no HTTP errors, no failed checks — benchmarks/internal/k6's Summary.Validate).
scripts/microbench command
Command microbench parses `go test -bench=BenchmarkFrameworkTax` output for one stack (read from stdin) and merges the rows into OUT/microbench.json, replacing that stack as a whole (so a re-run can't leave a stale scenario).
Command microbench parses `go test -bench=BenchmarkFrameworkTax` output for one stack (read from stdin) and merges the rows into OUT/microbench.json, replacing that stack as a whole (so a re-run can't leave a stale scenario).
scripts/report command
Command report regenerates the root README's `## Performance` block from the committed benchmark outputs, or (-check) verifies the committed README still matches — the drift guard for issue #141's "README is regenerable, never hand-edited" AC.
Command report regenerates the root README's `## Performance` block from the committed benchmark outputs, or (-check) verifies the committed README still matches — the drift guard for issue #141's "README is regenerable, never hand-edited" AC.
scripts/run-crud command
Command run-crud runs the headline CRUD-read workload (benchmarks/workloads/crud-list.js) against one already-running, already-seeded implementation and merges its rows into a results snapshot.
Command run-crud runs the headline CRUD-read workload (benchmarks/workloads/crud-list.js) against one already-running, already-seeded implementation and merges its rows into a results snapshot.
scripts/summarize command
Command summarize reads a results.json snapshot and writes the human report (summary.md), generated from the structured per-trial rows — Markdown is never the canonical source (issue #141 §9).
Command summarize reads a results.json snapshot and writes the human report (summary.md), generated from the structured per-trial rows — Markdown is never the canonical source (issue #141 §9).
Package build implements `gombit build --embed`: Vite production build, collectstatic into internal/web/static, and `go build` of a single binary that serves API + static + SPA fallback.
Package build implements `gombit build --embed`: Vite production build, collectstatic into internal/web/static, and `go build` of a single binary that serves API + static + SPA fallback.
Package cache provides Gombit's backend-neutral cache boundary.
Package cache provides Gombit's backend-neutral cache boundary.
Package cli is the Cobra command tree for `gombit` (D13 / ADR-014).
Package cli is the Cobra command tree for `gombit` (D13 / ADR-014).
Package client generates a TypeScript API client from an OpenAPI 3.1 document.
Package client generates a TypeScript API client from an OpenAPI 3.1 document.
cmd
gombit command
Package commandgen implements `gombit make command`.
Package commandgen implements `gombit make command`.
Package config provides Gombit's typed configuration boundary.
Package config provides Gombit's typed configuration boundary.
Package contract defines Gombit's Huma DTO conventions, the D10 success and error envelopes, and draft §41 application error category mapping.
Package contract defines Gombit's Huma DTO conventions, the D10 success and error envelopes, and draft §41 application error category mapping.
Package database opens supported GORM SQL drivers and exposes driver metadata.
Package database opens supported GORM SQL drivers and exposes driver metadata.
conformance
Package conformance hosts the multi-DB conformance suite.
Package conformance hosts the multi-DB conformance suite.
conformance/models
Package models holds GORM fixtures for the multi-DB conformance suite.
Package models holds GORM fixtures for the multi-DB conformance suite.
Package dev implements `gombit dev`: one command that runs the Go API (with reload when air or watchexec is available), the Vite frontend with HMR, and live OpenAPI → TypeScript client regeneration.
Package dev implements `gombit dev`: one command that runs the Go API (with reload when air or watchexec is available), the Vite frontend with HMR, and live OpenAPI → TypeScript client regeneration.
examples
admin command
auth command
auth-cookie command
cache command
config command
contract command
database command
embed command
lifecycle command
logging command
migrations command
router command
tutorial command
Command tutorial is the finished application from docs/tutorial.md: one Task resource served through Huma, with cookie auth and the runtime admin.
Command tutorial is the finished application from docs/tutorial.md: one Task resource served through Huma, with cookie auth and the runtime admin.
Package framework provides Gombit's runtime application lifecycle and HTTP surfaces (Gin router escape hatch and Huma contract API).
Package framework provides Gombit's runtime application lifecycle and HTTP surfaces (Gin router escape hatch and Huma contract API).
Package goldentest is the M4-5 generator golden suite.
Package goldentest is the M4-5 generator golden suite.
internal
Package logging builds Gombit's Zap logger and supports external sinks.
Package logging builds Gombit's Zap logger and supports external sinks.
Package migrations wraps Atlas versioned migrations for Gombit apps.
Package migrations wraps Atlas versioned migrations for Gombit apps.
Package resourcegen implements `gombit make resource`.
Package resourcegen implements `gombit make resource`.
Package scaffold generates a new Gombit application (gombit new).
Package scaffold generates a new Gombit application (gombit new).
Package types holds framework value types that are shared by generated models, handler DTOs, and the admin data plane.
Package types holds framework value types that are shared by generated models, handler DTOs, and the admin data plane.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL