RustaSea is a web application framework for Rust with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. RustaSea takes the pain out of development by easing common tasks used in many web projects, such as:
- Simple, fast routing engine.
- Powerful dependency injection container.
- Multiple back-ends for session and cache storage.
- Expressive, intuitive database ORM.
- Database agnostic schema migrations.
- Robust background job processing.
- Real-time event broadcasting.
This repository is the application skeleton (analog laravel/laravel) — the starting point for your own RustaSea project. It is generated by cargo rustasea new and marked as a GitHub template repository. The framework itself lives at rustasea/framework (analog laravel/framework).
RustaSea is documented in the framework repository:
rustasea/frameworkREADME — project overview, CLI reference, and tech stack.docs/milestones.md— authoritative, evidence-backed M0–M6 status.docs/laravel-parity.md— the Laravel 13.x API adoption mapping.docs/adr/— architecture decision records.
New to the framework? Read the generated README.md for the application layout, then follow the Development section below to boot the app.
The RustaSea framework crates are not yet published to crates.io. Until the first release, cargo build will not resolve the rustasea = "0.1" and rustasea-view = "0.1" dependencies declared in Cargo.toml. For local development, point those dependencies at the framework repository with a [patch.crates-io] block:
[patch.crates-io]
rustasea = { git = "https://github.com/rustasea/framework.git" }
rustasea-view = { git = "https://github.com/rustasea/framework.git" }Rust 1.88 or newer is required. Install the toolchain via rustup and confirm cargo --version reports 1.88 or newer.
app/: domain actions, concerns, HTTP controllers/middleware/requests, models, providersbootstrap/: application kernel wiring (providers, commands);bootstrap/cache/is runtime config cacheconfig/: typed TOML configuration, auto-discovered by the loader (config/*.toml)routes/:web,auth,settings, andconsoleroute tablesdatabase/: migrations, factories, seederspublic/: web root (robots.txt,favicon.ico); build output is ignoredresources/: presentation layer for thebladevariantstorage/: runtime state (app/private,framework/{cache/data,sessions,testing,views})tests/:featureandunittest suites
cargo runThe server binds 0.0.0.0:8000 by default (APP_URL overrides it).
Console commands are run through the Artisan-style CLI:
cargo artisan migrate # run the database migrations
cargo artisan route:list # inspect the registered route table
cargo artisan make:controller Post # scaffold a controller
cargo artisan show:model User # inspect a model's source metadataQuality gate — the same checks that run in CI:
cargo fmt --all -- --check
cargo clippy --all-targets -- -D warnings
cargo testA container stack with laravel/sail parity is generated alongside the app:
docker-compose up -d # app + infra
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up # hot reload
docker-compose down # tear down| Service | Ports | Purpose |
|---|---|---|
app |
8000 |
The application HTTP app |
postgres |
5432 |
Primary SQL store + pgvector |
redis |
6379 |
Cache + queue backend |
minio |
9000, 9001 |
S3-compatible storage (9001 = console) |
mailpit |
1025, 8025 |
SMTP capture (1025) + web UI (8025) |
App: http://localhost:8000 · Mailpit UI: http://localhost:8025 · MinIO console: http://localhost:9001.
RustaSea's predictable structure and conventions make it ideal for AI coding agents like Claude Code, Cursor, and GitHub Copilot. Every project exposes its knowledge surface over the Model Context Protocol:
cargo artisan mcp:serve # requires the `ai-mcp` feature on the `rustasea` crateThe MCP server gives agents 15+ tools and resources — route tables, model introspection, documentation, configuration, and make:plan scaffold planning — so agents build RustaSea applications while following best practices.
- RustaSea framework — the framework this application skeleton is built on.
- opencode-9router — OpenCode plugin that registers 9Router as a provider with automatic model discovery and caching.
- local-memory-mcp — a lightweight MCP server that gives AI agents persistent memory with semantic search, backed by SQLite.
Thank you for considering contributing to the RustaSea framework! The contribution guide can be found in the framework repository. This application skeleton is a template — open an issue on rustasea/rustasea for skeleton-specific problems, or on rustasea/framework for framework bugs and feature requests.
In order to ensure that the RustaSea community is welcoming to all, please review and abide by the Code of Conduct.
If you discover a security vulnerability within RustaSea, please review the disclosure process in SECURITY.md. All security vulnerabilities will be promptly addressed.
The RustaSea application skeleton is open-sourced software licensed under the MIT license.