Shuttle Project Introduction
Shuttle is an innovative platform designed to streamline the process of building and deploying Rust applications. It offers developers an efficient way to manage resources and deploy applications with minimal effort, all in just a few lines of code. With Shuttle, the process becomes not only simple and easy but also joyful.
Key Features
1. One-Line Resource Provisioning:
Shuttle allows developers to provision resources like databases or other AWS resources with a single line of code. There's no need for extensive configuration files, making it incredibly straightforward to manage resources.
2. Rapid Development:
A significant advantage of Shuttle is its speed. It takes approximately two minutes from project initialization to deployment. Similarly, provisioning a resource and deploying it to production requires only an additional two minutes.
3. First-Class Support for Popular Rust Frameworks:
Shuttle offers robust support for popular Rust frameworks such as Axum, Actix Web, and Rocket, among others. This ensures developers can work with their preferred tools seamlessly.
4. Focus on Security:
Security and permissions are handled by Shuttle, allowing developers to focus on writing quality code without worrying about the security intricacies.
Quick Start Guide
Getting started with Shuttle is easy. For Linux and macOS users, an installation script is available, and a similar script is available for Windows. Once installed, users can log in with the command shuttle login
. To initialize a project using a template, one can use shuttle init --template axum hello-world
, and deploying it is as simple as navigating to the project directory and running shuttle deploy
.
Quick Look at Code Example
Shuttle provides a streamlined coding experience. Here is a basic "Hello World" application using the Axum framework:
use axum::{routing::get, Router};
#[shuttle_runtime::main]
async fn main() -> shuttle_axum::ShuttleAxum {
let router = Router::new().route("/", get(hello_world));
Ok(router.into())
}
async fn hello_world() -> &'static str {
"Hello, world!"
}
To deploy this application, the command shuttle deploy
makes it live. Enhancements such as adding a shared Postgres database are straightforward, demonstrating Shuttle's flexibility and power.
Community and Contributing
Shuttle encourages community involvement through its Discord server and by inviting feedback and contributions. There are various repositories related to Shuttle, such as:
- Shuttle: The core product with all user-interactive crates.
- Shuttle-Examples: Officially maintained example projects demonstrating Shuttle's capabilities.
- Shuttle-Docs: Comprehensive documentation for users.
- Awesome-Shuttle: A curated list of Shuttle-hosted projects and resources.
For those who want to get involved, Algora Bounties offer cash incentives for tackling low-priority issues, enabling contributors to earn while helping improve Shuttle.
Current Status
Shuttle is in its public beta phase, meaning it is stable for most non-enterprise use-cases while being open to further public participation. Users are encouraged to track updates and incidents via Shuttle's status page and can look forward to an eventual stable, production-ready release.
By making the app building process intuitive, efficient, and enjoyable, Shuttle transforms the way developers deploy Rust applications, significantly reducing time and complexity.