What RustaSea is, what it ships, and how it compares to Laravel and Goravel.
RustaSea is a web application framework for Rust, inspired by Laravel and Goravel. It is not affiliated with either project.
It keeps the conventions that make Laravel productive and replaces the dynamic-language trade-offs with Rust's type system, ownership model, and zero-cost abstractions.
The synthesis
| What Laravel does best | What Rust does best | RustaSea synthesis |
|---|
| Expressive routing, middleware, validation | Ownership, lifetimes, fearless concurrency | axum routing with typed extractors + proc-macro attributes |
| Eloquent ORM — fluent, chainable | Compile-time type safety | sqlx-backed query builder with derive macros |
| Artisan code generation | cargo + proc-macros + clap | cargo artisan make:* with an xtask harness |
| Queue / Schedule / Events | tokio async runtime | Typed jobs and events (no any), backpressure-aware queues |
| Blade / JSON:API resources | serde / askama / minijinja | JsonApiResource via serde; rustasea-view with askama default |
| Batteries-included DX | Minimal runtime, no GC | Pay only for the crates you include; feature-gated workspace |
Repository layout
RustaSea mirrors the laravel/framework, laravel/laravel, and laravel/<x>-starter-kit split:
| Repository | Role |
|---|
rustasea/framework | Framework monorepo — 42 crates plus the xtask CI harness |
rustasea/rustasea | Application skeleton (Blade variant), generated by cargo rustasea new |
rustasea/react-starter-kit | Dioxus WASM + Inertia |
rustasea/vue-starter-kit | Leptos WASM + Inertia |
rustasea/svelte-starter-kit | Sycamore WASM + Inertia |
rustasea/livewire-starter-kit | askama + HTMX |
Goravel inspiration
Goravel is the closest prior art and the main reference for porting Laravel idioms into a compiled, statically typed language. RustaSea keeps the parts that translate well — service provider register → boot lifecycle with DAG ordering, a container with Bind/Singleton/Instance, an Eloquent-style query builder, and an Artisan-style CLI — and replaces the rest:
| Goravel (Go) | RustaSea (Rust) |
|---|
Global facades (facades.Cache().Get()) | Explicit AppState via axum::extract::State |
any / interface{} job and event args | Strongly-typed generic jobs and events |
| Runtime reflection for the container | Proc-macros plus trait bounds; no reflection |
gin / fiber router | axum (tower-native, tokio-aligned) |
testify/suite + Docker helpers | cargo test + testcontainers + a PostgresTestDb fixture |
| Stringly-typed config lookups | Typed config via config + serde with env overlay |
Who is it for
Teams that outgrew dynamic-language frameworks on performance, correctness, or concurrency — but do not want to give up the productivity that made them ship fast.