use std::path::PathBuf; use axum::http::{StatusCode, Uri}; use axum_htmx::AutoVaryLayer; use tower_http::services::ServeDir; mod menu; mod pages; async fn fallback(uri: Uri) -> (StatusCode, String) { (StatusCode::NOT_FOUND, format!("No route for {uri}")) } pub async fn get_router(assets_path: PathBuf) -> axum::Router<()> { axum::Router::new() .nest_service("/assets", ServeDir::new(assets_path)) .merge(pages::get_routes()) .fallback(fallback) // The AutoVaryLayer is used to avoid cache issues with htmx (cf: https://github.com/robertwayne/axum-htmx?tab=readme-ov-file#auto-caching-management) .layer(AutoVaryLayer) }