Guides
Models
A model is a Rust struct that maps to a database table. Add #[derive(Model)], annotate the fields, and Rustango generates the schema, a type-safe query…
ORM cookbook
Patterns for the Rustango ORM beyond the basics. If you come from Laravel Eloquent or Rails ActiveRecord, the shapes here will feel familiar. Most…
The admin
Rustango generates a complete admin UI from your models — a ready-made back-office for your data, with zero per-model boilerplate. Add #[derive(Model)]…
The operator console
A multi-tenant project has two kinds of administrator, and they never mix:
Serializers
A serializer turns a model instance into a typed, JSON-ready shape — and back again on the way in. Declare a struct, annotate its fields, and you get…
ViewSets — CRUD REST APIs
A ViewSet turns a model into a full REST resource — endpoints to list, create, read, update and delete records — from one declaration.
HTML views — server-rendered pages
An HTML view turns a model into server-rendered web pages — a list page, a detail page, and create/edit/delete forms — from one declaration. It's the…
OpenAPI
Rustango generates an OpenAPI 3.1 spec for your API and serves it with Swagger UI / Redoc — no annotations to hand-maintain. Point the generator at the…
The QUERY method
QUERY (RFC 10008, a Proposed Standard published in June 2026) is the "safe GET with a body." It's safe and idempotent like GET, but the query criteria…
MCP server
The Model Context Protocol (MCP) is the open standard for letting an AI agent — Claude, an IDE assistant, your own LLM app — securely call your…
URL names & reverse
Hardcoding URLs (/posts/42) all over handlers and templates is fragile — change a route and every literal breaks silently. Rustango's answer: name a URL…
manage CLI reference
This is Rustango's command-line tool, like Laravel's artisan or Rails' rails command. In a project scaffolded via cargo rustango new, one binary runs…
Migrations & the migration engine
Rustango ships a model-driven migration engine: you edit your models, run makemigrations to generate a versioned JSON file describing the schema change…
Database tuning
Every database connection your app makes comes from a pool — a set of connections kept open and handed out to requests. The pool's defaults are chosen by…
Middleware
Middleware is code that runs around every request — before your handler sees it and after it produces a response. It's where cross-cutting concerns live…
Background jobs
Some work shouldn't happen during a request — sending a welcome email, resizing an upload, syncing a third-party API. Doing it inline makes the user wait…
WebSockets & SSE
Most requests are one-shot: ask, answer, done. Real-time features are the exception — a live notification, a progress bar, a dashboard that updates…
Caching
Caching stores the result of expensive work — a heavy query, a rendered fragment, a third-party API call — so the next request gets it instantly instead…
Files, uploads & media
Almost every app stores user files — avatars, attachments, exported reports, images. Rustango gives you a Storage trait with swappable backends (local…
Internationalization (i18n)
Internationalization is serving your app in the user's language. Rustango splits it into two halves: resolving which locale a request wants (cookie →…
Sending email
Welcome messages, password resets, receipts, alerts — most apps send transactional email. Rustango gives you a Mailer trait with swappable backends…
Logging
Logs are how a running app tells you what it did. Rustango builds on `tracing` — the same shape as Laravel's logging channels, but structured: an event…
Testing
Fast, reliable tests need to drive your app the way a client does — without booting a server or touching the network. Rustango's TestClient runs your…
Security guide
This guide covers every security feature Rustango ships and how to combine them. If you come from Laravel or Rails, most of these will feel familiar — the…