Pre-1.0 · v0.12.0

Laravel's productivity.
Go's deploy story.

A batteries-included web framework for Go. Routing, ORM, migrations, auth, queues, mail, cache and a scheduler already wired together — and a CLI that writes the boilerplate as real Go files you can read, step through and delete.

$ curl -fsSL https://ryla.io/install.sh | sh

macOS · Linux / Windows or already have Go: go install github.com/Dshonored/ryla/cmd/ry@latest

The script installs a Go toolchain if the machine has none. Go is not optional for a Go framework, so installing it is part of installing Ryla.

One command

Answer four questions.
Get a project that runs.

ry new picks a database, a web mode, a frontend language and a stylesheet, then wires them together. Every combination compiles — twenty-four of them are scaffolded and built on every CI run, on Linux, macOS and Windows.

Database
sqlite · postgres · mysql · mongo
Web mode
mvc · api · react · svelte
Frontend
TypeScript or JavaScript
Styling
Tailwind or plain CSS
ZSH
$ ry new myapp

Database
 sqlite — one file, no server
  postgres — a real server, transactional DDL

Web mode
 react — Vite, embedded in the binary

Created myapp (45 files)
Resolving dependencies…

$ ry dev
watching ~/myapp · vite on :5173
→ http://localhost:8080
Batteries

Everything is already wired together.

Not a list of packages you assemble. One framework where the session store, the queue driver and the mailer already know about each other.

Auth ry make:auth

Registration, sign-in, email verification and password reset. Non-enumerable by wording and by timing.

Two-factor ry make:2fa

TOTP enrolment with a QR code, a challenge that holds the session, and single-use recovery codes.

Queue ry queue:work

Jobs with retries and backoff. Claims exclusively over SQL, Redis or Mongo — whichever the project uses.

Migrations ry migrate

Versioned Go files that carry their own schema snapshot, so history keeps doing what it did.

Cache cache.Remember

One Store interface over memory, the database, Redis or Mongo. Swap the driver with an env var.

Mail mail.Send

SMTP and a log driver, templ-rendered mail views, and queued sends that survive a restart.

Scheduler ry schedule:run

A cron registry with overlap prevention, so a slow task never runs twice at once.

Validation ry make:request

Bind and validate into a typed struct. The error bag reaches the view keyed by field name.

Testing ry make:test

Drives the real router with its own cookie jar and CSRF token. Failures print the response body.

app/controllers/posts.go GENERATED
// Posts handles the blog.
type Posts struct {
	app *app.App
}

func NewPosts(a *app.App) *Posts {
	return &Posts{app: a}
}

func (c *Posts) Index(w http.ResponseWriter, r *http.Request) {
	var posts []models.Post
	c.app.DB.Find(&posts)
	// …
}
No magic

No container.
No facades.

App is a plain struct. Controllers hold a pointer to it and reach for what they need. Every dependency is visible, and the compiler checks all of it — nothing resolves at runtime, so nothing surprises you at 2am.

Generators never edit your files. ry make:controller writes a new file and prints the route lines to add. routes/web.go stays a table of contents you can trust.

Views are compiled. templ turns components into Go, so a typo or a wrong prop is a build error rather than a blank space in production.

Deploy

One file lands on the server.

ry build compiles the views, the frontend bundle and the static assets into a single static binary that carries its own commands. The machine that runs it needs no Go toolchain, no Node, and no ry.

Artifact
1 binary
Typical size
21.8 MB
Runtime deps
0 on the server
Verified builds
24 per CI run
$ ry build
Checking types… 0 errors
vite build → dist/ 198 kB
Built myapp (21.8 MB)

$ scp myapp server:/srv/ && ssh server /srv/myapp serve
Status

Pre-1.0, and specific about it.

"It compiles" and "it works" are not the same claim, so the docs sort features by how well each one is actually tested rather than by whether it is finished.

Covered end to end
Every database × web-mode × language combination is scaffolded, built, vetted and tested on Linux, macOS and Windows.
Live-tested
MongoDB and its cache, session and queue stores run against a real mongo:7 container in CI.
Less proven
Postgres and MySQL compile and vet everywhere, but CI runs no migrations against a live server yet.
Not built
OAuth and social sign-in. Personal access tokens exist but have no generator wiring them up.

Start with one command.

Scaffold, migrate and run in under a minute. Delete it just as fast if it is not for you.

$ curl -fsSL https://ryla.io/install.sh | sh
READ THE DOCS →