diff --git a/actix-web/clerk/backend/Cargo.toml b/actix-web/clerk/backend/Cargo.toml
index 18fbc21a..0b45e72e 100644
--- a/actix-web/clerk/backend/Cargo.toml
+++ b/actix-web/clerk/backend/Cargo.toml
@@ -10,5 +10,5 @@ clerk-rs = "0.2.3"
openssl-sys = { version = "0.9.9", features = ["vendored"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
-shuttle-actix-web = "0.56.0"
-shuttle-runtime = "0.56.0"
+shuttle-actix-web = "0.57.0"
+shuttle-runtime = "0.57.0"
diff --git a/actix-web/cookie-authentication/Cargo.toml b/actix-web/cookie-authentication/Cargo.toml
index 298143b8..373a8104 100644
--- a/actix-web/cookie-authentication/Cargo.toml
+++ b/actix-web/cookie-authentication/Cargo.toml
@@ -7,6 +7,6 @@ edition = "2021"
actix-identity = "0.7.1"
actix-session = { version = "0.9.0", features = ["cookie-session"] }
actix-web = "4.3.1"
-shuttle-actix-web = "0.56.0"
-shuttle-runtime = "0.56.0"
+shuttle-actix-web = "0.57.0"
+shuttle-runtime = "0.57.0"
tokio = "1.26.0"
diff --git a/actix-web/hello-world/Cargo.toml b/actix-web/hello-world/Cargo.toml
index 0deef4be..78b6d34d 100644
--- a/actix-web/hello-world/Cargo.toml
+++ b/actix-web/hello-world/Cargo.toml
@@ -5,6 +5,6 @@ edition = "2021"
[dependencies]
actix-web = "4.3.1"
-shuttle-actix-web = "0.56.0"
-shuttle-runtime = "0.56.0"
+shuttle-actix-web = "0.57.0"
+shuttle-runtime = "0.57.0"
tokio = "1.26.0"
diff --git a/actix-web/postgres/Cargo.toml b/actix-web/postgres/Cargo.toml
index 1d77e68e..a20cd911 100644
--- a/actix-web/postgres/Cargo.toml
+++ b/actix-web/postgres/Cargo.toml
@@ -5,9 +5,9 @@ edition = "2021"
[dependencies]
actix-web = "4.3.1"
-shuttle-actix-web = "0.56.0"
-shuttle-runtime = "0.56.0"
serde = "1.0.148"
-shuttle-shared-db = { version = "0.56.0", features = ["postgres", "sqlx"] }
+shuttle-actix-web = "0.57.0"
+shuttle-runtime = "0.57.0"
+shuttle-shared-db = { version = "0.57.0", features = ["postgres", "sqlx"] }
sqlx = "0.8.2"
tokio = "1.26.0"
diff --git a/actix-web/static-files/Cargo.toml b/actix-web/static-files/Cargo.toml
index 87c9c678..03201ec0 100644
--- a/actix-web/static-files/Cargo.toml
+++ b/actix-web/static-files/Cargo.toml
@@ -6,6 +6,6 @@ edition = "2021"
[dependencies]
actix-files = "0.6.2"
actix-web = "4.3.1"
-shuttle-actix-web = "0.56.0"
-shuttle-runtime = "0.56.0"
+shuttle-actix-web = "0.57.0"
+shuttle-runtime = "0.57.0"
tokio = "1.26.0"
diff --git a/actix-web/static-files/assets/index.html b/actix-web/static-files/assets/index.html
index 597ecf5f..75b2e9ea 100644
--- a/actix-web/static-files/assets/index.html
+++ b/actix-web/static-files/assets/index.html
@@ -1 +1,9 @@
-
Hello world!
+
+
+
+ Static Files
+
+
+ This is an example of serving static files with Actix Web and Shuttle.
+
+
diff --git a/actix-web/websocket-actorless/Cargo.toml b/actix-web/websocket-actorless/Cargo.toml
index 9a2b4992..24ebb743 100644
--- a/actix-web/websocket-actorless/Cargo.toml
+++ b/actix-web/websocket-actorless/Cargo.toml
@@ -13,7 +13,7 @@ futures = "0.3"
reqwest = "0.11"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
-shuttle-actix-web = "0.56.0"
-shuttle-runtime = "0.56.0"
+shuttle-actix-web = "0.57.0"
+shuttle-runtime = "0.57.0"
tokio = { version = "1", features = ["rt-multi-thread", "sync"] }
tracing = "0.1"
diff --git a/axum/ai-assisted/Cargo.toml b/axum/ai-assisted/Cargo.toml
index 6826d49f..518c7ffa 100644
--- a/axum/ai-assisted/Cargo.toml
+++ b/axum/ai-assisted/Cargo.toml
@@ -5,6 +5,6 @@ edition = "2021"
[dependencies]
axum = "0.8"
-shuttle-axum = "0.56.0"
-shuttle-runtime = "0.56.0"
+shuttle-axum = "0.57.0"
+shuttle-runtime = "0.57.0"
tokio = "1.46"
diff --git a/axum/hello-world/Cargo.toml b/axum/hello-world/Cargo.toml
index 7d5403d1..ccd3bd9d 100644
--- a/axum/hello-world/Cargo.toml
+++ b/axum/hello-world/Cargo.toml
@@ -5,6 +5,6 @@ edition = "2021"
[dependencies]
axum = "0.8"
-shuttle-axum = "0.56.0"
-shuttle-runtime = "0.56.0"
+shuttle-axum = "0.57.0"
+shuttle-runtime = "0.57.0"
tokio = "1.28.2"
diff --git a/axum/htmx-crud/Cargo.toml b/axum/htmx-crud/Cargo.toml
index 9ddfbb13..cfb3e05b 100644
--- a/axum/htmx-crud/Cargo.toml
+++ b/axum/htmx-crud/Cargo.toml
@@ -4,14 +4,14 @@ version = "0.1.0"
edition = "2021"
[dependencies]
-askama = { version = "0.12.1", features = ["with-axum"] }
-askama_axum = "0.4.0"
-axum = "0.7.4"
-serde = { version = "1.0.189", features = ["derive"] }
-serde_json = "1.0.107"
-shuttle-axum = { version = "0.56.0", default-features = false, features = ["axum-0-7"] }
-shuttle-runtime = "0.56.0"
-shuttle-shared-db = { version = "0.56.0", features = ["postgres", "sqlx"] }
+askama = "0.14"
+askama_web = { version = "0.14", features = ["axum-0.8"] }
+axum = "0.8"
+serde = { version = "1", features = ["derive"] }
+serde_json = "1"
+shuttle-axum = "0.57.0"
+shuttle-runtime = "0.57.0"
+shuttle-shared-db = { version = "0.57.0", features = ["postgres", "sqlx"] }
sqlx = "0.8.2"
tokio = "1.28.2"
tokio-stream = { version = "0.1.14", features = ["sync"] }
diff --git a/axum/htmx-crud/src/router.rs b/axum/htmx-crud/src/router.rs
index de84cb24..d2a4257b 100644
--- a/axum/htmx-crud/src/router.rs
+++ b/axum/htmx-crud/src/router.rs
@@ -23,7 +23,7 @@ pub fn init_router(db: PgPool) -> Router {
.route("/stream", get(routes::stream))
.route("/styles.css", get(routes::styles))
.route("/todos", get(routes::fetch_todos).post(routes::create_todo))
- .route("/todos/:id", delete(routes::delete_todo))
+ .route("/todos/{id}", delete(routes::delete_todo))
.route("/todos/stream", get(routes::handle_stream))
.with_state(state)
.layer(Extension(tx))
diff --git a/axum/htmx-crud/src/templates.rs b/axum/htmx-crud/src/templates.rs
index 71043986..b08b9460 100644
--- a/axum/htmx-crud/src/templates.rs
+++ b/axum/htmx-crud/src/templates.rs
@@ -1,21 +1,22 @@
use crate::models;
use askama::Template;
+use askama_web::WebTemplate;
-#[derive(Template)]
+#[derive(Template, WebTemplate)]
#[template(path = "index.html")]
pub struct HelloTemplate;
-#[derive(Template)]
+#[derive(Template, WebTemplate)]
#[template(path = "stream.html")]
pub struct StreamTemplate;
-#[derive(Template)]
+#[derive(Template, WebTemplate)]
#[template(path = "todos.html")]
pub struct Records {
pub todos: Vec,
}
-#[derive(Template)]
+#[derive(Template, WebTemplate)]
#[template(path = "todo.html")]
pub struct TodoNewTemplate {
pub todo: models::Todo,
diff --git a/axum/jwt-authentication/Cargo.toml b/axum/jwt-authentication/Cargo.toml
index e50e38e0..a823df2c 100644
--- a/axum/jwt-authentication/Cargo.toml
+++ b/axum/jwt-authentication/Cargo.toml
@@ -4,13 +4,12 @@ version = "0.1.0"
edition = "2021"
[dependencies]
-axum = "0.7.3"
-axum-extra = { version = "0.9.1", features = ["typed-header"] }
+axum = "0.8"
+axum-extra = { version = "0.10", features = ["typed-header"] }
jsonwebtoken = "8.3.0"
once_cell = "1.18.0"
-serde = { version = "1.0.188", features = ["derive"] }
-serde_json = "1.0.107"
-shuttle-axum = { version = "0.56.0", default-features = false, features = ["axum-0-7"] }
-shuttle-runtime = "0.56.0"
+serde = { version = "1", features = ["derive"] }
+serde_json = "1"
+shuttle-axum = "0.57.0"
+shuttle-runtime = "0.57.0"
tokio = "1.28.2"
-tracing-subscriber = "0.3.17"
diff --git a/axum/jwt-authentication/src/main.rs b/axum/jwt-authentication/src/main.rs
index 9413efc6..ad7effed 100644
--- a/axum/jwt-authentication/src/main.rs
+++ b/axum/jwt-authentication/src/main.rs
@@ -1,5 +1,4 @@
use axum::{
- async_trait,
extract::FromRequestParts,
http::{request::Parts, StatusCode},
response::{IntoResponse, Response},
@@ -95,7 +94,6 @@ impl AuthBody {
// implement FromRequestParts for Claims (the JWT struct)
// FromRequestParts allows us to use Claims without consuming the request
-#[async_trait]
impl FromRequestParts for Claims
where
S: Send + Sync,
diff --git a/axum/metadata/Cargo.toml b/axum/metadata/Cargo.toml
index 7e49e951..22db1d42 100644
--- a/axum/metadata/Cargo.toml
+++ b/axum/metadata/Cargo.toml
@@ -4,7 +4,7 @@ version = "0.1.0"
edition = "2021"
[dependencies]
-axum = "0.7.3"
-shuttle-axum = { version = "0.56.0", default-features = false, features = ["axum-0-7"] }
-shuttle-runtime = "0.56.0"
+axum = "0.8"
+shuttle-axum = "0.57.0"
+shuttle-runtime = "0.57.0"
tokio = "1.28.2"
diff --git a/axum/oauth2/Cargo.toml b/axum/oauth2/Cargo.toml
index 817b46e3..4528210a 100644
--- a/axum/oauth2/Cargo.toml
+++ b/axum/oauth2/Cargo.toml
@@ -10,12 +10,12 @@ axum-extra = { version = "0.9.2", features = ["cookie-private"] }
chrono = { version = "0.4.35", features = ["clock"] }
oauth2 = "4.4.1"
reqwest = { version = "0.11.18", features = ["json"] }
-serde = { version = "1.0.183", features = ["derive"] }
-shuttle-axum = { version = "0.56.0", default-features = false, features = ["axum-0-7"] }
-shuttle-runtime = "0.56.0"
-shuttle-shared-db = { version = "0.56.0", features = ["postgres", "sqlx"] }
+serde = { version = "1", features = ["derive"] }
+shuttle-axum = { version = "0.57.0", default-features = false, features = ["axum-0-7"] }
+shuttle-runtime = "0.57.0"
+shuttle-shared-db = { version = "0.57.0", features = ["postgres", "sqlx"] }
sqlx = { version = "0.8.2", features = ["macros", "chrono"] }
-thiserror = "1.0.57"
+thiserror = "2"
time = "0.3.25"
tokio = "1.28.2"
tracing = "0.1.37"
diff --git a/axum/openai/Cargo.toml b/axum/openai/Cargo.toml
index fd6a92ae..d58da3e2 100644
--- a/axum/openai/Cargo.toml
+++ b/axum/openai/Cargo.toml
@@ -4,18 +4,18 @@ version = "0.1.0"
edition = "2021"
[dependencies]
-async-openai = "0.28.0"
+async-openai = "0.29"
argon2 = "0.5.3"
-axum = "0.7.4"
-axum-extra = { version = "0.9.4", features = ["cookie", "cookie-private"] }
+axum = "0.8"
+axum-extra = { version = "0.10", features = ["cookie", "cookie-private"] }
derive_more = { version = "1.0.0", features = ["full"] }
jsonwebtoken = "9.3.0"
serde = { version = "1.0.215", features = ["derive"] }
-serde_json = "1.0.133"
-shuttle-axum = { version = "0.56.0", default-features = false, features = ["axum-0-7"] }
-shuttle-openai = "0.56.0"
-shuttle-runtime = "0.56.0"
-shuttle-shared-db = { version = "0.56.0", features = ["postgres"] }
+serde_json = "1"
+shuttle-axum = "0.57.0"
+shuttle-openai = "0.57.0"
+shuttle-runtime = "0.57.0"
+shuttle-shared-db = { version = "0.57.0", features = ["postgres"] }
sqlx = { version = "0.8.2", features = [
"runtime-tokio-rustls",
"postgres",
diff --git a/axum/openai/src/endpoints/auth.rs b/axum/openai/src/endpoints/auth.rs
index db39d9ce..9c3b4a30 100644
--- a/axum/openai/src/endpoints/auth.rs
+++ b/axum/openai/src/endpoints/auth.rs
@@ -105,7 +105,6 @@ pub struct Claims {
exp: usize,
}
-#[axum::async_trait]
impl FromRequestParts for Claims {
type Rejection = (StatusCode, String);
async fn from_request_parts(
diff --git a/axum/openai/src/main.rs b/axum/openai/src/main.rs
index 3812976b..87282463 100644
--- a/axum/openai/src/main.rs
+++ b/axum/openai/src/main.rs
@@ -52,14 +52,13 @@ async fn main(
get(endpoints::openai::get_conversation_list),
)
.route(
- "/api/chat/conversations/:id",
+ "/api/chat/conversations/{id}",
get(endpoints::openai::fetch_conversation_messages)
.post(endpoints::openai::send_message),
)
.route("/api/chat/create", post(endpoints::openai::create_chat))
.layer(cors)
- .nest_service(
- "/",
+ .fallback_service(
ServeDir::new("frontend/dist")
.not_found_service(ServeFile::new("frontend/dist/index.html")),
)
diff --git a/axum/postgres/Cargo.toml b/axum/postgres/Cargo.toml
index 79f4e859..2535cf97 100644
--- a/axum/postgres/Cargo.toml
+++ b/axum/postgres/Cargo.toml
@@ -4,10 +4,10 @@ version = "0.1.0"
edition = "2021"
[dependencies]
-axum = "0.7.3"
-serde = { version = "1.0.188", features = ["derive"] }
-shuttle-axum = { version = "0.56.0", default-features = false, features = ["axum-0-7"] }
-shuttle-runtime = "0.56.0"
-shuttle-shared-db = { version = "0.56.0", features = ["postgres", "sqlx"] }
-sqlx = "0.8.2"
+axum = "0.8"
+serde = { version = "1", features = ["derive"] }
+shuttle-axum = "0.57.0"
+shuttle-runtime = "0.57.0"
+shuttle-shared-db = { version = "0.57.0", features = ["postgres", "sqlx"] }
+sqlx = "0.8"
tokio = "1.28.2"
diff --git a/axum/postgres/src/main.rs b/axum/postgres/src/main.rs
index b13219fe..7ae68e0d 100644
--- a/axum/postgres/src/main.rs
+++ b/axum/postgres/src/main.rs
@@ -51,7 +51,7 @@ async fn main(#[shuttle_shared_db::Postgres] pool: PgPool) -> shuttle_axum::Shut
let state = MyState { pool };
let router = Router::new()
.route("/todos", post(add))
- .route("/todos/:id", get(retrieve))
+ .route("/todos/{id}", get(retrieve))
.with_state(state);
Ok(router.into())
diff --git a/axum/qdrant/Cargo.toml b/axum/qdrant/Cargo.toml
index 45c1332f..3b1cfb7f 100644
--- a/axum/qdrant/Cargo.toml
+++ b/axum/qdrant/Cargo.toml
@@ -4,9 +4,9 @@ version = "0.1.0"
edition = "2021"
[dependencies]
-axum = "0.7.3"
+axum = "0.8"
qdrant-client = "1.10.1"
-shuttle-axum = { version = "0.56.0", default-features = false, features = ["axum-0-7"] }
-shuttle-qdrant = "0.56.0"
-shuttle-runtime = "0.56.0"
+shuttle-axum = "0.57.0"
+shuttle-qdrant = "0.57.0"
+shuttle-runtime = "0.57.0"
tokio = "1.26.0"
diff --git a/axum/static-files/Cargo.toml b/axum/static-files/Cargo.toml
index bac9ba36..80d54b55 100644
--- a/axum/static-files/Cargo.toml
+++ b/axum/static-files/Cargo.toml
@@ -6,7 +6,7 @@ publish = false
[dependencies]
axum = "0.8"
-shuttle-axum = "0.56.0"
-shuttle-runtime = "0.56.0"
+shuttle-axum = "0.57.0"
+shuttle-runtime = "0.57.0"
tokio = "1.28.2"
tower-http = { version = "0.6", features = ["fs"] }
diff --git a/axum/todo-list/Cargo.toml b/axum/todo-list/Cargo.toml
index b3b4a49c..af78cb99 100644
--- a/axum/todo-list/Cargo.toml
+++ b/axum/todo-list/Cargo.toml
@@ -6,9 +6,9 @@ edition = "2024"
[dependencies]
axum = "0.8"
serde = { version = "1", features = ["derive"] }
-shuttle-axum = "0.56.0"
-shuttle-runtime = "0.56.0"
-shuttle-shared-db = { version = "0.56.0", features = ["postgres", "sqlx"] }
+shuttle-axum = "0.57.0"
+shuttle-runtime = "0.57.0"
+shuttle-shared-db = { version = "0.57.0", features = ["postgres", "sqlx"] }
sqlx = "0.8"
tokio = "1"
tower-http = { version = "0.6", features = ["fs", "trace"] }
diff --git a/axum/turso/Cargo.toml b/axum/turso/Cargo.toml
index 543f496a..4aafa2d1 100644
--- a/axum/turso/Cargo.toml
+++ b/axum/turso/Cargo.toml
@@ -4,11 +4,11 @@ version = "0.1.0"
edition = "2021"
[dependencies]
-axum = "0.7.3"
-shuttle-axum = { version = "0.56.0", default-features = false, features = ["axum-0-7"] }
-shuttle-runtime = "0.56.0"
-shuttle-turso = "0.56.0"
-libsql = "0.6.0"
+axum = "0.8"
+shuttle-axum = "0.57.0"
+shuttle-runtime = "0.57.0"
+shuttle-turso = "0.57.0"
+libsql = "0.9"
tokio = "1.26.0"
serde = { version = "1.0.164", features = ["derive"] }
serde_json = "1.0.99"
diff --git a/axum/websocket/Cargo.toml b/axum/websocket/Cargo.toml
index 96294aa8..0e1ea112 100644
--- a/axum/websocket/Cargo.toml
+++ b/axum/websocket/Cargo.toml
@@ -10,7 +10,7 @@ futures = "0.3.28"
reqwest = "0.12"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
-shuttle-axum = "0.56.0"
-shuttle-runtime = "0.56.0"
+shuttle-axum = "0.57.0"
+shuttle-runtime = "0.57.0"
tokio = "1"
tower-http = { version = "0.6", features = ["fs"] }
diff --git a/bevy/hello-world/server/Cargo.toml b/bevy/hello-world/server/Cargo.toml
index 89041337..6a34d2bd 100644
--- a/bevy/hello-world/server/Cargo.toml
+++ b/bevy/hello-world/server/Cargo.toml
@@ -4,8 +4,8 @@ version = "0.1.0"
edition = "2021"
[dependencies]
-axum = "0.7.4"
-shuttle-axum = { version = "0.56.0", default-features = false, features = ["axum-0-7"] }
-shuttle-runtime = "0.56.0"
+axum = "0.8"
+shuttle-axum = "0.57.0"
+shuttle-runtime = "0.57.0"
tokio = "1.28.2"
-tower-http = { version = "0.5.0", features = ["fs"] }
+tower-http = { version = "0.6", features = ["fs"] }
diff --git a/bevy/hello-world/server/src/main.rs b/bevy/hello-world/server/src/main.rs
index 0c27e63b..f01fe67a 100644
--- a/bevy/hello-world/server/src/main.rs
+++ b/bevy/hello-world/server/src/main.rs
@@ -3,8 +3,7 @@ use tower_http::services::{ServeDir, ServeFile};
#[shuttle_runtime::main]
async fn main() -> shuttle_axum::ShuttleAxum {
- let router = Router::new().nest_service(
- "/",
+ let router = Router::new().fallback_service(
ServeDir::new("assets").not_found_service(ServeFile::new("assets/index.html")),
);
Ok(router.into())
diff --git a/custom-resource/pdo/Cargo.toml b/custom-resource/pdo/Cargo.toml
index d87b7011..2c3bffd1 100644
--- a/custom-resource/pdo/Cargo.toml
+++ b/custom-resource/pdo/Cargo.toml
@@ -5,9 +5,9 @@ edition = "2021"
[dependencies]
async-trait = "0.1.56"
-axum = "0.7.3"
+axum = "0.8"
serde = { version = "1", features = ["derive"] }
-shuttle-service = "0.56.0"
-shuttle-axum = { version = "0.56.0", default-features = false, features = ["axum-0-7"] }
-shuttle-runtime = "0.56.0"
+shuttle-service = "0.57.0"
+shuttle-axum = "0.57.0"
+shuttle-runtime = "0.57.0"
tokio = "1.28.2"
diff --git a/custom-service/none/Cargo.toml b/custom-service/none/Cargo.toml
index d303c5fb..59573cb3 100644
--- a/custom-service/none/Cargo.toml
+++ b/custom-service/none/Cargo.toml
@@ -5,5 +5,5 @@ edition = "2021"
publish = false
[dependencies]
-shuttle-runtime = "0.56.0"
+shuttle-runtime = "0.57.0"
tokio = "1"
diff --git a/fullstack-templates/saas/backend/Cargo.toml b/fullstack-templates/saas/backend/Cargo.toml
index 96eb8f82..67396ba2 100644
--- a/fullstack-templates/saas/backend/Cargo.toml
+++ b/fullstack-templates/saas/backend/Cargo.toml
@@ -6,21 +6,21 @@ publish = false
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
-async-stripe = { version = "0.31.0", features = ["runtime-tokio-hyper"] }
-axum = "0.7.3"
-axum-extra = { version = "0.9.1", features = ["cookie-private"] }
-axum-macros = "0.4.0"
+async-stripe = { version = "0.41", features = ["runtime-tokio-hyper"] }
+axum = "0.8"
+axum-extra = { version = "0.10", features = ["cookie-private"] }
+axum-macros = "0.5"
bcrypt = "0.15.0"
http = "1.0.0"
lettre = "0.11.4"
rand = "0.8.5"
-reqwest = "0.11.16"
+reqwest = "0.12"
serde = { version = "1.0.160", features = ["derive"] }
-shuttle-axum = { version = "0.56.0", default-features = false, features = ["axum-0-7"] }
-shuttle-runtime = "0.56.0"
-shuttle-shared-db = { version = "0.56.0", features = ["postgres", "sqlx"] }
+shuttle-axum = "0.57.0"
+shuttle-runtime = "0.57.0"
+shuttle-shared-db = { version = "0.57.0", features = ["postgres", "sqlx"] }
sqlx = { version = "0.8.2", features = ["time"] }
time = { version = "0.3.20", features = ["serde"] }
tokio = "1.27.0"
-tower = "0.4.13"
-tower-http = { version = "0.5.0", features = ["cors", "fs"] }
+tower = "0.5"
+tower-http = { version = "0.6", features = ["cors", "fs"] }
diff --git a/fullstack-templates/saas/backend/src/main.rs b/fullstack-templates/saas/backend/src/main.rs
index afdd4613..ed14fceb 100644
--- a/fullstack-templates/saas/backend/src/main.rs
+++ b/fullstack-templates/saas/backend/src/main.rs
@@ -55,8 +55,7 @@ async fn main(
let api_router = create_api_router(state);
- let router = Router::new().nest("/api", api_router).nest_service(
- "/",
+ let router = Router::new().nest("/api", api_router).fallback_service(
ServeDir::new("dist").not_found_service(ServeFile::new("dist/index.html")),
);
diff --git a/fullstack-templates/saas/backend/src/router.rs b/fullstack-templates/saas/backend/src/router.rs
index 97043469..2e3eb99b 100644
--- a/fullstack-templates/saas/backend/src/router.rs
+++ b/fullstack-templates/saas/backend/src/router.rs
@@ -33,7 +33,7 @@ pub fn create_api_router(state: AppState) -> Router {
.route("/", post(get_all_customers))
.route("/names", post(get_customer_names))
.route(
- "/:id",
+ "/{id}",
post(get_one_customer)
.put(edit_customer)
.delete(destroy_customer),
@@ -43,7 +43,7 @@ pub fn create_api_router(state: AppState) -> Router {
let deals_router = Router::new()
.route("/", post(get_all_deals))
.route(
- "/:id",
+ "/{id}",
post(get_one_deal).put(edit_deal).delete(destroy_deal),
)
.route("/create", post(create_deal));
diff --git a/loco/hello-world/Cargo.toml b/loco/hello-world/Cargo.toml
index f69875df..f994eb56 100644
--- a/loco/hello-world/Cargo.toml
+++ b/loco/hello-world/Cargo.toml
@@ -13,8 +13,8 @@ default-run = "hello_world-cli"
loco-rs = { version = "0.16.0", default-features = false }
[dependencies]
-shuttle-axum = "0.56.0"
-shuttle-runtime = { version = "0.56.0", default-features = false }
+shuttle-axum = "0.57.0"
+shuttle-runtime = { version = "0.57.0", default-features = false }
loco-rs = { workspace = true , features = ["cli"] }
serde = { version = "1", features = ["derive"] }
diff --git a/mcp/mcp-sse/Cargo.toml b/mcp/mcp-sse/Cargo.toml
index 955f44ed..28b1d9a4 100644
--- a/mcp/mcp-sse/Cargo.toml
+++ b/mcp/mcp-sse/Cargo.toml
@@ -5,7 +5,7 @@ edition = "2021"
publish = false
[dependencies]
-shuttle-runtime = "0.56.0"
+shuttle-runtime = "0.57.0"
tokio = { version = "1", features = ["macros", "rt-multi-thread", "signal"] }
rmcp = { version = "0.3", features = ["server", "transport-sse-server"] }
axum = "0.8"
diff --git a/other/feature-flags/Cargo.toml b/other/feature-flags/Cargo.toml
index c7b73a5f..508fea0d 100644
--- a/other/feature-flags/Cargo.toml
+++ b/other/feature-flags/Cargo.toml
@@ -5,9 +5,9 @@ edition = "2021"
publish = false
[dependencies]
-axum = "0.7.3"
-shuttle-axum = { version = "0.56.0", default-features = false, features = ["axum-0-7"] }
-shuttle-runtime = "0.56.0"
+axum = "0.8"
+shuttle-axum = "0.57.0"
+shuttle-runtime = "0.57.0"
[features]
# Shuttle will disable default features and enable the feature "shuttle" if it exists.
diff --git a/other/standalone-binary/Cargo.toml b/other/standalone-binary/Cargo.toml
index 1aeb613c..5b20014b 100644
--- a/other/standalone-binary/Cargo.toml
+++ b/other/standalone-binary/Cargo.toml
@@ -13,8 +13,8 @@ name = "standalone"
path = "src/bin/standalone.rs"
[dependencies]
-axum = "0.7.3"
+axum = "0.8"
dotenvy = "0.15.7"
-shuttle-axum = { version = "0.56.0", default-features = false, features = ["axum-0-7"] }
-shuttle-runtime = "0.56.0"
+shuttle-axum = "0.57.0"
+shuttle-runtime = "0.57.0"
tokio = "1.28.2"
diff --git a/poem/hello-world/Cargo.toml b/poem/hello-world/Cargo.toml
index c6e21cab..e7691c20 100644
--- a/poem/hello-world/Cargo.toml
+++ b/poem/hello-world/Cargo.toml
@@ -5,6 +5,6 @@ edition = "2021"
[dependencies]
poem = "3.0.0"
-shuttle-poem = "0.56.0"
-shuttle-runtime = "0.56.0"
+shuttle-poem = "0.57.0"
+shuttle-runtime = "0.57.0"
tokio = "1.26.0"
diff --git a/poise/hello-world/Cargo.toml b/poise/hello-world/Cargo.toml
index 12454b2d..bda5d7ca 100644
--- a/poise/hello-world/Cargo.toml
+++ b/poise/hello-world/Cargo.toml
@@ -7,8 +7,8 @@ publish = false
[dependencies]
anyhow = "1.0.68"
poise = "0.6.1"
-shuttle-runtime = "0.56.0"
+shuttle-runtime = "0.57.0"
# Since poise is a serenity command framework, it can run on Shuttle with shuttle-serenity
-shuttle-serenity = "0.56.0"
+shuttle-serenity = "0.57.0"
tracing = "0.1.37"
tokio = "1.26.0"
diff --git a/rama/hello-world-tcp/Cargo.toml b/rama/hello-world-tcp/Cargo.toml
index bbafab91..c535bda5 100644
--- a/rama/hello-world-tcp/Cargo.toml
+++ b/rama/hello-world-tcp/Cargo.toml
@@ -5,6 +5,6 @@ edition = "2024"
[dependencies]
rama = "0.2"
-shuttle-rama = "0.56.0"
-shuttle-runtime = "0.56.0"
+shuttle-rama = "0.57.0"
+shuttle-runtime = "0.57.0"
tokio = "1.45"
diff --git a/rama/hello-world/Cargo.toml b/rama/hello-world/Cargo.toml
index d366ecb8..e3515a66 100644
--- a/rama/hello-world/Cargo.toml
+++ b/rama/hello-world/Cargo.toml
@@ -5,6 +5,6 @@ edition = "2024"
[dependencies]
rama = { version = "0.2", features = ["http"] }
-shuttle-rama = "0.56.0"
-shuttle-runtime = "0.56.0"
+shuttle-rama = "0.57.0"
+shuttle-runtime = "0.57.0"
tokio = "1.45"
diff --git a/rama/static-files/Cargo.toml b/rama/static-files/Cargo.toml
index 202894b0..6cf719e2 100644
--- a/rama/static-files/Cargo.toml
+++ b/rama/static-files/Cargo.toml
@@ -5,6 +5,6 @@ edition = "2024"
[dependencies]
rama = "0.2"
-shuttle-rama = "0.56.0"
-shuttle-runtime = "0.56.0"
+shuttle-rama = "0.57.0"
+shuttle-runtime = "0.57.0"
tokio = "1.45"
diff --git a/rocket/dyn-templates/Cargo.toml b/rocket/dyn-templates/Cargo.toml
index 9dcd6b32..8db24685 100644
--- a/rocket/dyn-templates/Cargo.toml
+++ b/rocket/dyn-templates/Cargo.toml
@@ -6,6 +6,6 @@ edition = "2021"
[dependencies]
rocket = "0.5.0"
rocket_dyn_templates = { version = "0.1.0", features = ["handlebars"] }
-shuttle-rocket = "0.56.0"
-shuttle-runtime = "0.56.0"
+shuttle-rocket = "0.57.0"
+shuttle-runtime = "0.57.0"
tokio = "1.26.0"
diff --git a/rocket/hello-world/Cargo.toml b/rocket/hello-world/Cargo.toml
index 75a532dd..752bfec7 100644
--- a/rocket/hello-world/Cargo.toml
+++ b/rocket/hello-world/Cargo.toml
@@ -5,6 +5,6 @@ edition = "2021"
[dependencies]
rocket = "0.5.0"
-shuttle-rocket = "0.56.0"
-shuttle-runtime = "0.56.0"
+shuttle-rocket = "0.57.0"
+shuttle-runtime = "0.57.0"
tokio = "1.26.0"
diff --git a/rocket/jwt-authentication/Cargo.toml b/rocket/jwt-authentication/Cargo.toml
index 83970d22..8799bf91 100644
--- a/rocket/jwt-authentication/Cargo.toml
+++ b/rocket/jwt-authentication/Cargo.toml
@@ -9,6 +9,6 @@ jsonwebtoken = { version = "8.1.1", default-features = false }
lazy_static = "1.4.0"
rocket = { version = "0.5.0", features = ["json"] }
serde = { version = "1.0.148", features = ["derive"] }
-shuttle-rocket = "0.56.0"
-shuttle-runtime = "0.56.0"
+shuttle-rocket = "0.57.0"
+shuttle-runtime = "0.57.0"
tokio = "1.26.0"
diff --git a/rocket/opendal-memory/Cargo.toml b/rocket/opendal-memory/Cargo.toml
index 0900662b..93fc2fe0 100644
--- a/rocket/opendal-memory/Cargo.toml
+++ b/rocket/opendal-memory/Cargo.toml
@@ -4,10 +4,10 @@ version = "0.1.0"
edition = "2021"
[dependencies]
-opendal = "0.51"
+opendal = "0.54"
rocket = { version = "0.5.0", features = ["json"] }
serde = { version = "1.0.148", features = ["derive"] }
-shuttle-opendal = "0.56.0"
-shuttle-rocket = "0.56.0"
-shuttle-runtime = "0.56.0"
+shuttle-opendal = "0.57.0"
+shuttle-rocket = "0.57.0"
+shuttle-runtime = "0.57.0"
tokio = "1.26.0"
diff --git a/rocket/postgres/Cargo.toml b/rocket/postgres/Cargo.toml
index 36c6c8cd..b21022f8 100644
--- a/rocket/postgres/Cargo.toml
+++ b/rocket/postgres/Cargo.toml
@@ -6,8 +6,8 @@ edition = "2021"
[dependencies]
rocket = { version = "0.5.0", features = ["json"] }
serde = "1.0.148"
-shuttle-rocket = "0.56.0"
-shuttle-runtime = "0.56.0"
-shuttle-shared-db = { version = "0.56.0", features = ["postgres", "sqlx"] }
+shuttle-rocket = "0.57.0"
+shuttle-runtime = "0.57.0"
+shuttle-shared-db = { version = "0.57.0", features = ["postgres", "sqlx"] }
sqlx = "0.8.2"
tokio = "1.26.0"
diff --git a/rocket/secrets/Cargo.toml b/rocket/secrets/Cargo.toml
index 1e82b25b..69f01d77 100644
--- a/rocket/secrets/Cargo.toml
+++ b/rocket/secrets/Cargo.toml
@@ -6,6 +6,6 @@ edition = "2021"
[dependencies]
anyhow = "1.0.66"
rocket = "0.5.0"
-shuttle-rocket = "0.56.0"
-shuttle-runtime = "0.56.0"
+shuttle-rocket = "0.57.0"
+shuttle-runtime = "0.57.0"
tokio = "1.26.0"
diff --git a/rocket/static-files/Cargo.toml b/rocket/static-files/Cargo.toml
index 5ef197a4..db0d1a35 100644
--- a/rocket/static-files/Cargo.toml
+++ b/rocket/static-files/Cargo.toml
@@ -5,6 +5,6 @@ edition = "2021"
[dependencies]
rocket = "0.5.0"
-shuttle-rocket = "0.56.0"
-shuttle-runtime = "0.56.0"
+shuttle-rocket = "0.57.0"
+shuttle-runtime = "0.57.0"
tokio = "1.26.0"
diff --git a/rocket/url-shortener/Cargo.toml b/rocket/url-shortener/Cargo.toml
index 3d22f9f0..f80aaf0e 100644
--- a/rocket/url-shortener/Cargo.toml
+++ b/rocket/url-shortener/Cargo.toml
@@ -5,11 +5,11 @@ edition = "2021"
[dependencies]
nanoid = "0.4.0"
-opendal = "0.51"
+opendal = "0.54"
rocket = { version = "0.5.0", features = ["json"] }
serde = "1.0.148"
-shuttle-rocket = "0.56.0"
-shuttle-runtime = "0.56.0"
-shuttle-shared-db = { version = "0.56.0", features = ["opendal-postgres"] }
+shuttle-rocket = "0.57.0"
+shuttle-runtime = "0.57.0"
+shuttle-shared-db = { version = "0.57.0", features = ["opendal-postgres"] }
tokio = "1.26.0"
url = "2.5.4"
diff --git a/rocket/workspace/hello-world/Cargo.toml b/rocket/workspace/hello-world/Cargo.toml
index aa0ef458..3dbf7761 100644
--- a/rocket/workspace/hello-world/Cargo.toml
+++ b/rocket/workspace/hello-world/Cargo.toml
@@ -6,6 +6,6 @@ edition = "2021"
[dependencies]
rocket = "0.5.0"
shared = { path = "../shared", version = "0.1.0" }
-shuttle-rocket = "0.56.0"
-shuttle-runtime = "0.56.0"
+shuttle-rocket = "0.57.0"
+shuttle-runtime = "0.57.0"
tokio = "1.26.0"
diff --git a/salvo/hello-world/Cargo.toml b/salvo/hello-world/Cargo.toml
index b4c4393d..13836f07 100644
--- a/salvo/hello-world/Cargo.toml
+++ b/salvo/hello-world/Cargo.toml
@@ -4,7 +4,7 @@ version = "0.1.0"
edition = "2021"
[dependencies]
-salvo = "0.75.0"
-shuttle-salvo = "0.56.0"
-shuttle-runtime = "0.56.0"
+salvo = "0.83"
+shuttle-salvo = "0.57.0"
+shuttle-runtime = "0.57.0"
tokio = "1.26.0"
diff --git a/salvo/image-rescaler/Cargo.toml b/salvo/image-rescaler/Cargo.toml
index 93633757..8af8a8ff 100644
--- a/salvo/image-rescaler/Cargo.toml
+++ b/salvo/image-rescaler/Cargo.toml
@@ -4,8 +4,8 @@ version = "0.1.0"
edition = "2021"
[dependencies]
-image = "0.24.8"
-salvo = "0.75.0"
-shuttle-salvo = "0.56.0"
-shuttle-runtime = "0.56.0"
+image = "0.25"
+salvo = "0.83"
+shuttle-salvo = "0.57.0"
+shuttle-runtime = "0.57.0"
tokio = "1.26.0"
diff --git a/salvo/image-rescaler/src/main.rs b/salvo/image-rescaler/src/main.rs
index 3949b25a..30b2c76a 100644
--- a/salvo/image-rescaler/src/main.rs
+++ b/salvo/image-rescaler/src/main.rs
@@ -15,8 +15,7 @@ async fn get_image(req: &mut Request, res: &mut Response) {
let img = image::load_from_memory_with_format(IMAGE, image::ImageFormat::Png).unwrap();
let img = img.resize_exact(width, height, image::imageops::FilterType::Triangle);
let mut buffer = std::io::BufWriter::new(std::io::Cursor::new(Vec::new()));
- img.write_to(&mut buffer, image::ImageOutputFormat::Png)
- .unwrap();
+ img.write_to(&mut buffer, image::ImageFormat::Png).unwrap();
let bytes = buffer.into_inner().unwrap().into_inner();
res.add_header("content-type", "image/png", true).unwrap();
diff --git a/serenity/hello-world/Cargo.toml b/serenity/hello-world/Cargo.toml
index b6367810..16a5f204 100644
--- a/serenity/hello-world/Cargo.toml
+++ b/serenity/hello-world/Cargo.toml
@@ -6,7 +6,7 @@ edition = "2021"
[dependencies]
anyhow = "1.0.66"
serenity = { version = "0.12.0", default-features = false, features = ["client", "gateway", "rustls_backend", "model"] }
-shuttle-runtime = "0.56.0"
-shuttle-serenity = "0.56.0"
+shuttle-runtime = "0.57.0"
+shuttle-serenity = "0.57.0"
tokio = "1.26.0"
tracing = "0.1.37"
diff --git a/serenity/postgres/Cargo.toml b/serenity/postgres/Cargo.toml
index 80bc410c..eb35b55b 100644
--- a/serenity/postgres/Cargo.toml
+++ b/serenity/postgres/Cargo.toml
@@ -7,9 +7,9 @@ edition = "2021"
anyhow = "1.0.66"
serde = "1.0.148"
serenity = { version = "0.12.0", default-features = false, features = ["client", "gateway", "rustls_backend", "model"] }
-shuttle-runtime = "0.56.0"
-shuttle-serenity = "0.56.0"
-shuttle-shared-db = { version = "0.56.0", features = ["postgres", "sqlx"] }
+shuttle-runtime = "0.57.0"
+shuttle-serenity = "0.57.0"
+shuttle-shared-db = { version = "0.57.0", features = ["postgres", "sqlx"] }
sqlx = "0.8.2"
tokio = "1.26.0"
tracing = "0.1.37"
diff --git a/serenity/weather-forecast/Cargo.toml b/serenity/weather-forecast/Cargo.toml
index 187e6464..915560b7 100644
--- a/serenity/weather-forecast/Cargo.toml
+++ b/serenity/weather-forecast/Cargo.toml
@@ -8,7 +8,7 @@ anyhow = "1.0.66"
reqwest = { version = "0.11.24", features = ["json"] }
serde = "1.0.197"
serenity = { version = "0.12.0", default-features = false, features = ["client", "gateway", "rustls_backend", "model"] }
-shuttle-runtime = "0.56.0"
-shuttle-serenity = "0.56.0"
+shuttle-runtime = "0.57.0"
+shuttle-serenity = "0.57.0"
tokio = "1.26.0"
tracing = "0.1.37"
diff --git a/shuttle-cron/Cargo.toml b/shuttle-cron/Cargo.toml
index dd8d4135..6a7abf46 100644
--- a/shuttle-cron/Cargo.toml
+++ b/shuttle-cron/Cargo.toml
@@ -10,7 +10,7 @@ apalis-sql = { version = "0.6", features = ["postgres"] }
apalis-cron = { version = "0.6" }
chrono = { version = "0.4.32", features = ["clock", "serde"] }
serde = { version = "1.0.195", features = ["derive"] }
-shuttle-runtime = "0.56.0"
-shuttle-shared-db = { version = "0.56.0", features = ["postgres"] }
+shuttle-runtime = "0.57.0"
+shuttle-shared-db = { version = "0.57.0", features = ["postgres"] }
sqlx = { version = "0.8", features = ["runtime-tokio-native-tls", "postgres"] }
tokio = "1"
diff --git a/templates.toml b/templates.toml
index 1256b3a1..0fa1179d 100644
--- a/templates.toml
+++ b/templates.toml
@@ -16,7 +16,6 @@ poise = "https://avatars.githubusercontent.com/u/32077193?v=4"
rama = "https://avatars.githubusercontent.com/u/87996217?v=4"
serenity = "https://avatars.githubusercontent.com/u/32077193?v=4"
salvo = "https://avatars.githubusercontent.com/u/77909452?v=4"
-tide = "https://avatars.githubusercontent.com/u/56456261?v=4"
tower = "https://avatars.githubusercontent.com/u/26263939?v=4"
postgres = "https://avatars.githubusercontent.com/u/177543?v=4"
clerk = "https://avatars.githubusercontent.com/u/49538330?v=4"
@@ -110,22 +109,6 @@ use_cases = ["Discord bot"]
tags = ["serenity"]
template = "serenity"
-[starters.thruster-hello-world]
-title = "Thruster"
-description = "Web framework"
-path = "thruster/hello-world"
-use_cases = ["Web app"]
-tags = ["thruster"]
-template = "thruster"
-
-[starters.tide-hello-world]
-title = "Tide"
-description = "Web framework"
-path = "tide/hello-world"
-use_cases = ["Web app"]
-tags = ["tide"]
-template = "tide"
-
[starters.tower-hello-world]
title = "Tower"
description = "Modular service library"
diff --git a/thruster/hello-world/Cargo.toml b/thruster/hello-world/Cargo.toml
deleted file mode 100644
index 0e6f1c7d..00000000
--- a/thruster/hello-world/Cargo.toml
+++ /dev/null
@@ -1,10 +0,0 @@
-[package]
-name = "hello-world"
-version = "0.1.0"
-edition = "2021"
-
-[dependencies]
-shuttle-thruster = "0.56.0"
-shuttle-runtime = "0.56.0"
-thruster = { version = "1.3.0", features = ["hyper_server"] }
-tokio = "1.26.0"
diff --git a/thruster/hello-world/src/main.rs b/thruster/hello-world/src/main.rs
deleted file mode 100644
index a05ff16f..00000000
--- a/thruster/hello-world/src/main.rs
+++ /dev/null
@@ -1,19 +0,0 @@
-use thruster::{
- context::basic_hyper_context::{generate_context, BasicHyperContext as Ctx, HyperRequest},
- m, middleware_fn, App, HyperServer, MiddlewareNext, MiddlewareResult, ThrusterServer,
-};
-
-#[middleware_fn]
-async fn hello(mut context: Ctx, _next: MiddlewareNext) -> MiddlewareResult {
- context.body("Hello, World!");
- Ok(context)
-}
-
-#[shuttle_runtime::main]
-async fn thruster() -> shuttle_thruster::ShuttleThruster> {
- let server = HyperServer::new(
- App::::create(generate_context, ()).get("/", m![hello]),
- );
-
- Ok(server.into())
-}
diff --git a/tide/hello-world/Cargo.toml b/tide/hello-world/Cargo.toml
deleted file mode 100644
index 9dd2fef3..00000000
--- a/tide/hello-world/Cargo.toml
+++ /dev/null
@@ -1,10 +0,0 @@
-[package]
-name = "hello-world"
-version = "0.1.0"
-edition = "2021"
-
-[dependencies]
-shuttle-tide = "0.56.0"
-shuttle-runtime = "0.56.0"
-tokio = "1.26.0"
-tide = "0.16.0"
diff --git a/tide/hello-world/src/main.rs b/tide/hello-world/src/main.rs
deleted file mode 100644
index c211b1f8..00000000
--- a/tide/hello-world/src/main.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-#[shuttle_runtime::main]
-async fn tide() -> shuttle_tide::ShuttleTide<()> {
- let mut app = tide::new();
- app.with(tide::log::LogMiddleware::new());
-
- app.at("/").get(|_| async { Ok("Hello, world!") });
-
- Ok(app.into())
-}
diff --git a/tower/hello-world/Cargo.toml b/tower/hello-world/Cargo.toml
index 515a2f3e..2a77d0ee 100644
--- a/tower/hello-world/Cargo.toml
+++ b/tower/hello-world/Cargo.toml
@@ -5,7 +5,7 @@ edition = "2021"
[dependencies]
hyper = { version = "0.14.23", features = ["full"] }
-shuttle-runtime = "0.56.0"
-shuttle-tower = "0.56.0"
+shuttle-runtime = "0.57.0"
+shuttle-tower = "0.57.0"
tower = { version = "0.4.13", features = ["full"] }
tokio = "1.26.0"
diff --git a/tracing/custom-tracing-subscriber/Cargo.toml b/tracing/custom-tracing-subscriber/Cargo.toml
index 7417858f..da1880b2 100644
--- a/tracing/custom-tracing-subscriber/Cargo.toml
+++ b/tracing/custom-tracing-subscriber/Cargo.toml
@@ -5,9 +5,9 @@ edition = "2021"
[dependencies]
actix-web = "4.3.1"
-shuttle-actix-web = "0.56.0"
+shuttle-actix-web = "0.57.0"
# disable default features to disable the Shuttle default tracing subscriber
-shuttle-runtime = { version = "0.56.0", default-features = false }
+shuttle-runtime = { version = "0.57.0", default-features = false }
tokio = "1.26.0"
tracing = "0.1.37"
tracing-subscriber = { version = "0.3.17", features = ["env-filter"] }
diff --git a/warp/hello-world/Cargo.toml b/warp/hello-world/Cargo.toml
index 28018fca..ce1096f8 100644
--- a/warp/hello-world/Cargo.toml
+++ b/warp/hello-world/Cargo.toml
@@ -4,7 +4,7 @@ version = "0.1.0"
edition = "2021"
[dependencies]
-shuttle-runtime = "0.56.0"
-shuttle-warp = "0.56.0"
+shuttle-runtime = "0.57.0"
+shuttle-warp = "0.57.0"
tokio = "1.26.0"
-warp = "0.3.3"
+warp = "0.4"