From cold machine to a running app in four minutes.
Install the CLI, scaffold an app, declare an entity, run it. Every command in this guide is real — paste it into a terminal and it works.
- Prereqs
- Go 1.26+, git
- OS
- macOS, Linux, Windows (WSL)
- Storage
- SQLite by default, Postgres opt-in
- Time
- ~4 minutes
Install
~30sOne binary covers scaffold, migrate, dev, build, test, and the doc browser. Get it from GitHub:
Verify it's on your PATH with gofastr --version.
Scaffold
~45sScaffold a new project — it writes a working main.go, theme.go, and an empty entities directory.
Open the scaffolded main.go — it's about 30 lines. Read it.
First entity
~60sDeclare your first entity in Go. One call generates SQL, REST, MCP, OpenAPI, and a typed query builder.
app.Entity("posts", framework.Entity{ Fields: framework.Fields{ "title": f.String().Required(), "body": f.Markdown(), }, Timestamps: true, })
That's the whole declaration. No migrations file. No schema yaml. Just Go.
Run it
~15sStart the app. The framework auto-migrates the SQLite schema, mounts /posts, /openapi.json, /mcp, and a livereload SSE stream.
In a second terminal, hit the API to prove it works:
First page
~60sAdd a server-rendered page. Screens are normal Go structs: Load(ctx) fetches, Render() returns the markup. They live alongside main.go.
func (s *PostsScreen) Load(ctx context.Context) { s.posts, _ = posts.Query(ctx).List(20) // fetch in Load}func (s *PostsScreen) Render() render.HTML { return html.Div(html.DivConfig{}, /* render each post in s.posts */ )}
What you have
nowIn four minutes you've stood up an app with full HTTP + agent surface area:
Running, on disk, queryable, agent-driven
- Versioned SQL migrations
- REST CRUD + cursor pagination
- OpenAPI 3 + Swagger UI
- MCP tools at /mcp
- Typed Go query builder
- Hot-reload dev SSE