Overview

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 bestWhat Rust does bestRustaSea synthesis
Expressive routing, middleware, validationOwnership, lifetimes, fearless concurrencyaxum routing with typed extractors + proc-macro attributes
Eloquent ORM — fluent, chainableCompile-time type safetysqlx-backed query builder with derive macros
Artisan code generationcargo + proc-macros + clapcargo artisan make:* with an xtask harness
Queue / Schedule / Eventstokio async runtimeTyped jobs and events (no any), backpressure-aware queues
Blade / JSON:API resourcesserde / askama / minijinjaJsonApiResource via serde; rustasea-view with askama default
Batteries-included DXMinimal runtime, no GCPay only for the crates you include; feature-gated workspace

Repository layout

RustaSea mirrors the laravel/framework, laravel/laravel, and laravel/<x>-starter-kit split:

RepositoryRole
rustasea/frameworkFramework monorepo — 42 crates plus the xtask CI harness
rustasea/rustaseaApplication skeleton (Blade variant), generated by cargo rustasea new
rustasea/react-starter-kitDioxus WASM + Inertia
rustasea/vue-starter-kitLeptos WASM + Inertia
rustasea/svelte-starter-kitSycamore WASM + Inertia
rustasea/livewire-starter-kitaskama + 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 argsStrongly-typed generic jobs and events
Runtime reflection for the containerProc-macros plus trait bounds; no reflection
gin / fiber routeraxum (tower-native, tokio-aligned)
testify/suite + Docker helperscargo test + testcontainers + a PostgresTestDb fixture
Stringly-typed config lookupsTyped 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.

Last updated Sep 22, 2026