Ship Go apps at velocity.
High-performance SaaS boilerplate with auth, uploads, migrations, tests, and Docker — wired end to end. No framework tax, no ORM, no wiring homework.
Working code, not wiring homework
Auth, uploads, migrations, SSR, tests, Docker — running end to end, not left for you to wire.
Auth, complete
Register, login, logout, forgot/reset password, Google OAuth. DB-backed sessions, CSRF, rate limiting, role-based access.
Three-tier architecture
Handler → Service → Query → DB. No layer skips. sqlc generates type-safe Go from SQL. Business logic stays in services, never in handlers.
Svelte 5 + Inertia
SPA navigation without a separate API. Server-driven props, useForm for CRUD, SSR shell via templ. Svelte 5 runes — $state, $derived, $effect.
Resumable uploads
TUS protocol via tusdfiber — chunked, resumable, progress tracking. Avatar upload via multipart for small files, TUS for large.
sqlc + Goose
Write SQL, get type-safe Go. Migrations applied at startup, one table per file. Zero ORM — the AI writes SQL at peak performance.
Production-grade ops
Multi-stage Docker, CGO cross-compilation with Zig, graceful shutdown, security headers, CI-ready. Build once, deploy anywhere.
Why Laju Go exists
Because your first week should be business logic, not infrastructure.
Go means fast
Single binary, compiled, concurrent by default. Fiber on fasthttp serves 300K+ req/s — no Node event loop, no GC pauses, no runtime overhead. Your starter is already production-speed.
Type-safe SQL, no ORM
sqlc generates Go from your SQL queries — compile-time type safety, zero runtime reflection. Write SQL, get structs. The AI generates correct, optimized queries on demand.
Built for AI agents
Conventions codified in AGENTS.md, strict three-tier rule, handler pattern templates, LLM wiki knowledge base. A codebase an agent can extend without inventing conventions stays coherent.
For the full reasoning, read the philosophy page.
FAQ
Questions you might have before running `npm create laju-go@latest`.
How is Laju Go different from Next.js, Nuxt, or SvelteKit?
Those are meta-frameworks that couple routing and rendering to one client framework, and leave auth, uploads, and persistence to you. Laju Go is a single Go binary with Fiber + SQLite + Inertia, auth and uploads already wired, raw SQL via sqlc instead of an ORM, and Svelte 5 as the frontend. Pick a meta-framework for RSC or edge deploy; pick Laju Go for a wired, ownable, single-binary stack.
Why Go and not Node/Bun?
One binary, compiled, concurrent by default. Go's goroutines handle thousands of connections without an event loop. Fiber on fasthttp serves 300K+ req/s. No runtime to install, no node_modules to audit, no GC pauses. Your deployment is a single binary copy — `go build` and ship.
Do I have to use Svelte?
The frontend is Svelte 5 with Inertia.js, but the server side (Go, Fiber, SQLite, auth, uploads) is independent. Inertia supports React and Vue too — swap the client adapter and keep the same Go backend. The three-tier architecture stays identical.
Why no ORM?
sqlc generates type-safe Go from your SQL — compile-time safety, zero runtime reflection. ORMs were built to help humans avoid writing SQL. In 2026, AI generates correct, optimized raw SQL on demand. What remains is the cost: a dependency you upgrade, audit, and debug. With sqlc you see the exact SQL that runs, at peak performance — no abstraction tax.
Why SQLite and not Postgres?
One file for the whole database: no server to install, no connection pool, no credentials. WAL mode serves tens of thousands of reads/s on a single process — enough for most apps. Back up by copying a file. When you outgrow it, Postgres is a deliberate swap point, not an emergency.
Is it production-ready?
Every guardrail a deployed app needs is wired and tested: argon2id passwords, DB-backed sessions, CSRF double-submit cookies, rate limiting, security headers, versioned migrations applied at startup, multi-stage Docker, CGO cross-compilation with Zig. The server side is the same code path that runs in production. What is missing is your business logic — and that is the point.
Will this still work in 5–10 years?
Laju Go is a boilerplate you fork and own, not a framework that can be deprecated. Go, Fiber, SQLite, and Inertia are stable, pinned versions with no pending rewrites. SQLite has maintained backward compatibility for decades. Because there is no ORM, no SDK, no proprietary abstraction, the code you own is just Go, SQL, and HTTP — readable by any developer or AI agent, now and in 2036.