This example has one route at / where the homepage is served and shows you how you can serve HTML or other types of files with Actix Web.

Note that static assets are declared in the Shuttle.toml file.

You can clone the example below by running the following (you’ll need cargo-shuttle installed):

cargo shuttle init --from shuttle-hq/shuttle-examples \
  --subfolder axum/static-files


use axum::{routing::get, Router};
use tower_http::services::ServeDir;

async fn hello_world() -> &'static str {
    "Hello, world!"

async fn main() -> shuttle_axum::ShuttleAxum {
    let router = Router::new()
        .route("/", get(hello_world))
        .nest_service("/assets", ServeDir::new("assets"));



After you clone the example, launch it locally by using cargo shuttle run then visit the home route at http://localhost:8000 - you should see a homepage that shows our included HTML file.

You can extend this example by adding more routes that serve other files.

If you want to explore other frameworks, we have more examples with popular ones like Tower and Warp. You can find them right here.

Be sure to check out the examples repo for many more examples!