{"id":13456729,"url":"https://github.com/shuttle-hq/shuttle","last_synced_at":"2025-09-09T21:13:29.699Z","repository":{"id":36956905,"uuid":"461280850","full_name":"shuttle-hq/shuttle","owner":"shuttle-hq","description":"Build \u0026 ship backends without writing any infrastructure files.","archived":false,"fork":false,"pushed_at":"2025-05-05T14:07:26.000Z","size":71383,"stargazers_count":6468,"open_issues_count":76,"forks_count":267,"subscribers_count":25,"default_branch":"main","last_synced_at":"2025-05-05T14:53:56.585Z","etag":null,"topics":["baas","deployment","devops","framework","paas","rust","rust-lang","web","web-framework"],"latest_commit_sha":null,"homepage":"https://shuttle.dev","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shuttle-hq.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-02-19T18:37:55.000Z","updated_at":"2025-05-05T11:23:16.000Z","dependencies_parsed_at":"2024-01-29T09:12:46.799Z","dependency_job_id":"ed1af099-aaa1-4380-a82c-369a240de756","html_url":"https://github.com/shuttle-hq/shuttle","commit_stats":{"total_commits":647,"total_committers":47,"mean_commits":13.76595744680851,"dds":0.6754250386398764,"last_synced_commit":"68aec3e11d76ed3cd7024c218398bc10cb22a46b"},"previous_names":[],"tags_count":78,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shuttle-hq%2Fshuttle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shuttle-hq%2Fshuttle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shuttle-hq%2Fshuttle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shuttle-hq%2Fshuttle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shuttle-hq","download_url":"https://codeload.github.com/shuttle-hq/shuttle/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253777284,"owners_count":21962657,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["baas","deployment","devops","framework","paas","rust","rust-lang","web","web-framework"],"created_at":"2024-07-31T08:01:26.757Z","updated_at":"2025-09-09T21:13:29.683Z","avatar_url":"https://github.com/shuttle-hq.png","language":"Rust","funding_links":[],"categories":["Rust","Applications","Uncategorized","📦 Crates","web","应用程序 Applications"],"sub_categories":["Uncategorized"],"readme":"\u003c!-- markdownlint-disable --\u003e\n\u003cp align=\"center\"\u003e\n\u003cimg width=\"300\" src=\"https://raw.githubusercontent.com/shuttle-hq/shuttle/master/assets/logo-rectangle-transparent.png\"/\u003e\n\u003c/p\u003e\n\u003cbr\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/shuttle-hq/shuttle/search?l=rust\"\u003e\n    \u003cimg alt=\"language\" src=\"https://img.shields.io/badge/language-Rust-orange.svg\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://docs.shuttle.dev/\"\u003e\n    \u003cimg alt=\"docs\" src=\"https://img.shields.io/badge/docs-shuttle.dev-orange\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://docs.rs/shuttle-runtime\"\u003e\n    \u003cimg alt=\"crate-docs\" src=\"https://img.shields.io/badge/docs-docs.rs-orange\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://circleci.com/gh/shuttle-hq/shuttle/\"\u003e\n    \u003cimg alt=\"build status\" src=\"https://circleci.com/gh/shuttle-hq/shuttle.svg?style=shield\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://crates.io/crates/cargo-shuttle\"\u003e\n    \u003cimg alt=\"crates\" src=\"https://img.shields.io/crates/d/cargo-shuttle\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://discord.gg/shuttle\"\u003e\n    \u003cimg alt=\"discord\" src=\"https://img.shields.io/discord/803236282088161321?logo=discord\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://twitter.com/shuttle_dev\"\u003e\n    \u003cimg alt=\"Twitter Follow\" src=\"https://img.shields.io/twitter/follow/shuttle_dev\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://console.algora.io/org/shuttle/bounties?status=open\"\u003e\n    \u003cimg alt=\"open bounties\" src=\"https://img.shields.io/endpoint?url=https%3A%2F%2Fconsole.algora.io%2Fapi%2Fshields%2Fshuttle%2Fbounties%3Fstatus%3Dopen\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://console.algora.io/org/shuttle/bounties?status=completed\"\u003e\n    \u003cimg alt=\"rewarded bounties\" src=\"https://img.shields.io/endpoint?url=https%3A%2F%2Fconsole.algora.io%2Fapi%2Fshields%2Fshuttle%2Fbounties%3Fstatus%3Dcompleted\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\u003cbr\u003e\n\n\u003ch1 align=\"center\"\u003eFastest Way to Build \u0026 Ship Rust Apps\u003c/h1\u003e\n\u003cdiv align=\"center\"\u003e\nGet resources and deploy your apps with a few lines of code.\n\u003c/div\u003e\n\n\u003ch3 align=\"center\"\u003eSimple. \u0026nbsp; Easy. \u0026nbsp; Joyful.\u003c/h3\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/shuttle-hq/shuttle/issues/new?assignees=\u0026labels=S-Triage%2CT-Bug\u0026projects=\u0026template=BUG-REPORT.yml\u0026title=%5BBug%5D%3A+\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/shuttle-hq/shuttle/issues/new?assignees=\u0026labels=S-Triage%2CT-Feature+Request\u0026projects=\u0026template=FEATURE-SUGGESTION.yml\u0026title=%5BFeature%5D%3A+\"\u003eRequest a Feature\u003c/a\u003e\n    ·\n  \u003ca href=\"https://discord.gg/shuttle\"\u003eJoin Our Discord\u003c/a\u003e\n    ·\n    \u003ca href=\"https://x.com/shuttle_dev\"\u003eFollow us on X\u003c/a\u003e\n  \u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\u003cimg src=\"https://i.imgur.com/1qdWipP.gif\" width=\"100%\" \u003e\u003c/div\u003e\n\u003cbr\u003e\n\n\n*\u003cdiv align=\"center\"\u003e⭐ If you find Shuttle interesting, consider starring this repo to help spread the word.\u003c/div\u003e*\n\u003cbr\u003e\n\n## Features\n\n- **One-line Resource Provisioning:** Get a database or other resource by adding a single line of code to your main file. No config or yaml files required.\n- **Rapid Development:** It takes 2 minutes from project initialization to a deployed project. It takes seconds to provision a resource, and get it deployed to production.\n- **First-class support for popular Rust frameworks:** [Axum](https://docs.shuttle.dev/examples/axum), [Actix Web](https://docs.shuttle.dev/examples/actix), [Rocket](https://docs.shuttle.dev/examples/rocket), and [more](https://docs.shuttle.dev/examples/other)\n- **Security:** Let us worry about the security \u0026 permissions while you focus on writing good code.\n\u003cbr\u003e\n\u003cbr\u003e\n\n## Quick Start\n\nOn Linux and macOS, you can use this install script, which will automatically install the correct target for your OS and distro:\n\n```sh\ncurl -sSfL https://www.shuttle.dev/install | bash\n```\n\nOn Windows, you can use this install script to do the same:\n\n```powershell\niwr \"https://www.shuttle.dev/install-win\" | iex\n```\n\nAfter installing, log in with:\n\n```sh\nshuttle login\n```\n\nTo initialize your project, simply write:\n\n```bash\nshuttle init --template axum hello-world\n```\n\nAnd to deploy it, write:\n\n```bash\ncd hello-world\nshuttle deploy\n```\n\nAnd... that's it!\n\n```text\nService Name:  hello-world\nDeployment ID: 3d08ac34-ad63-41c1-836b-99afdc90af9f\nStatus:        running\nLast Updated:  2022-04-01T08:32:34Z\nURI:           https://hello-world.shuttleapp.rs\n```\n\nFeel free to build on top of the generated `hello-world` boilerplate or take a stab at one of our [examples](https://github.com/shuttle-hq/shuttle-examples).\n\nFor the full documentation, visit [our docs](https://docs.shuttle.dev).\n\u003cbr\u003e\n\u003cbr\u003e\n\n## Quick Look\n\nBelow is a basic \"Hello World\" application written in Axum:\n```rust\nuse axum::{routing::get, Router};\n\n#[tokio::main]\nasync fn main() {\n    let app = Router::new().route(\"/\", get(hello_world));\n\n    let listener = tokio::net::TcpListener::bind(\"127.0.0.1:3000\")\n        .await\n        .unwrap();\n    println!(\"listening on {}\", listener.local_addr().unwrap());\n    axum::serve(listener, app).await.unwrap();\n}\n\nasync fn hello_world() -\u003e \u0026'static str {\n    \"Hello, world!\"\n}\n```\n\nIn order to be able to deploy it with a single command, we update the snippet as follows:\n\n```rust\nuse axum::{routing::get, Router};\n\nasync fn hello_world() -\u003e \u0026'static str {\n    \"Hello, world!\"\n}\n\n#[shuttle_runtime::main]\nasync fn main() -\u003e shuttle_axum::ShuttleAxum {\n    let router = Router::new().route(\"/\", get(hello_world));\n\n    Ok(router.into())\n}\n```\n\nNow, with just `shuttle deploy`, you can see your application live. But let's enhance it further by adding a shared Postgres database:\n\n```rust\nuse axum::{routing::get, Router};\n\nasync fn hello_world() -\u003e \u0026'static str {\n    \"Hello, world!\"\n}\n\n#[shuttle_runtime::main]\nasync fn main(\n    #[shuttle_shared_db::Postgres] pool: sqlx::PgPool,\n) -\u003e shuttle_axum::ShuttleAxum {\n\n    pool.execute(include_str!(\"../schema.sql\"))\n        .await\n        .expect(\"failed to run migrations\");\n\n    let router = Router::new().route(\"/\", get(hello_world));\n\n    Ok(router.into())\n}\n```\n\nNow, if we run `shuttle deploy`, we'll have an up and running project with a database inside \u0026 ready to use.\n\u003cbr\u003e\n\u003cbr\u003e\n\n## Repositories\n\n| Name | Description |\n|-|-|\n| [shuttle](https://github.com/shuttle-hq/shuttle) 🚀 (This repo) | All library crates and the Shuttle CLI. |\n| [shuttle-examples](https://github.com/shuttle-hq/shuttle-examples) 👨‍🏫 | Officially maintained examples of projects that can be deployed on Shuttle. |\n| [shuttle-docs](https://github.com/shuttle-hq/shuttle-docs) 📃 | Documentation hosted on [docs.shuttle.dev](https://docs.shuttle.dev/). |\n| [www](https://github.com/shuttle-hq/www) 🌍 | Our website [shuttle.dev](https://www.shuttle.dev/), including the [blog](https://www.shuttle.dev/blog/tags/all) and more. |\n| [deploy-action](https://github.com/shuttle-hq/deploy-action) ⚙ | GitHub Action for continuous deployments. |\n| [awesome-shuttle](https://github.com/shuttle-hq/awesome-shuttle) 🌟 | An awesome list of Shuttle-hosted projects and resources that users can add to. |\n| [shuttlings](https://github.com/shuttle-hq/shuttlings) ⚔️ | A collection of Rust code challenges. A great way to get started with using Rust and Shuttle. |\n\u003cbr\u003e\n\u003cbr\u003e\n\n## Contributing to Shuttle\n\nContributing to Shuttle is highly encouraged!\nEven if you are not planning to submit any code, joining our [Discord server](https://discord.gg/shuttle) and providing feedback helps us a lot!\n\nCheck out our [contributing docs](./CONTRIBUTING.md) and find the appropriate repo above to contribute to.\nFor development of this repo, check the [development docs](./DEVELOPING.md).\n\n### Algora Bounties 💰\n\nTo offload work from the engineering team on low-priority issues, we will sometimes add a cash bounty to issues.\nSign up to the [Algora Console](https://console.algora.io/org/shuttle/bounties?status=open) to find open issues with bounties.\n\n## Contributors ✨\n\nThanks goes to these wonderful people:\n\n\u003c!-- markdownlint-disable --\u003e\n\u003ca href=\"https://github.com/shuttle-hq/shuttle/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=shuttle-hq/shuttle\" /\u003e\n\u003c/a\u003e\n\nMade with [contrib.rocks](https://contrib.rocks).\n\n\u003c!-- invisible --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshuttle-hq%2Fshuttle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshuttle-hq%2Fshuttle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshuttle-hq%2Fshuttle/lists"}