shuttle
shuttle copied to clipboard
Build & ship backends without writing any infrastructure files.
shuttle
Shuttle is a serverless platform for Rust which makes it really easy to deploy your web-apps.
Shuttle is built for productivity, reliability and performance:
- Zero-Configuration support for Rust using annotations
- Automatic resource provisioning (databases, caches, subdomains, etc.) via Infrastructure-From-Code
- First-class support for popular Rust frameworks (Rocket, Axum, Tide and Tower)
- Scalable hosting (with optional self-hosting)
Getting Started
First download the Shuttle cargo extension and login:
$ cargo install cargo-shuttle
$ cargo shuttle login
Create your first shuttle app with rocket
framework:
$ cargo shuttle init --rocket hello-world
Your Cargo.toml
should look like:
[package]
name = "hello-world"
version = "0.1.0"
edition = "2021"
[lib]
[dependencies]
shuttle-service = { version = "0.5.0", features = ["web-rocket"] }
rocket = "0.4.11"
Your shuttle app in lib.rs
should look like:
#[macro_use]
extern crate rocket;
#[get("/")]
fn index() -> &'static str {
"Hello, world!"
}
#[shuttle_service::main]
async fn rocket() -> shuttle_service::ShuttleRocket {
let rocket = rocket::build().mount("/hello", routes![index]);
Ok(rocket)
}
Deploy:
$ cargo shuttle deploy
Finished dev [unoptimized + debuginfo] target(s) in 1m 01s
Project: hello-world
Deployment Id: 3d08ac34-ad63-41c1-836b-99afdc90af9f
Deployment Status: DEPLOYED
Host: hello-world.shuttleapp.rs
Created At: 2022-04-01 08:32:34.412602556 UTC
Database URI: postgres://***:***@pg.shuttle.rs/db-hello-world
For the full documentation, visit docs.rs/shuttle-service
Contributing to shuttle
If you want to setup a local environment to test code changes to core shuttle
packages, or want to contribute to the project see CONTRIBUTING.md
Roadmap
For a comprehensive view of the shuttle roadmap check out this project board.
If you have any requests or suggestions feel free to open an issue.
Community & Support
- Community Forum. Best for: help with building, discussion about best practices.
- GitHub Issues. Best for: bugs and errors you encounter using Shuttle.
- Discord. Best for: sharing your applications and hanging out with the community.
- Twitter. Best for: keeping up with announcements and releases
Status
- [x] Alpha: We are testing Shuttle, API and deployments may be unstable
- [x] Public Alpha: Anyone can sign up, but go easy on us, there are a few kinks
- [ ] Public Beta: Stable enough for most non-enterprise use-cases
- [ ] Public: Production-ready!
We are currently in Public Alpha. Watch "releases" of this repo to get notified of major updates!
Contributors β¨
Thanks goes to these wonderful people (emoji key):
Ben π π π» β οΈ |
Casey Bailey π π |
Christos Hadjiaslanis π π» π β οΈ πΉ π |
Damien π π» π π π β οΈ |
David Laban π π» β οΈ |
Ivan π π π» β οΈ |
Lilian Anatolie Moraru π |
Luis CossΓo π» β οΈ |
Mario Idival π» β οΈ |
Matthew Aylward π» β οΈ |
Max π π» π‘ π β οΈ |
Nahua π π» β οΈ |
Nodar Daneliya πΌ π |
OddbjΓΈrn GrΓΈdem π» β οΈ |
Pieter π π» π‘ π§βπ« π β οΈ π |
Tsotne Nazarashvili π |
Xavientois π π» β οΈ |
jmwill86 π π β οΈ π» |
This project follows the all-contributors specification. Contributions of any kind welcome!