use crate::{prelude::*, state::State as AppState, static_files}; use axum::{extract::State, response::Html, routing::get, Router}; use minijinja::context; use tower_livereload::LiveReloadLayer; pub async fn router() -> Result<Router> { let state = AppState::try_new().await?; let lr = LiveReloadLayer::new(); let _template_file_watcher = state .clone() .templates .start_watcher(Some(lr.reloader())) .await?; let (static_file_service, _static_file_watcher) = static_files::router(Some(lr.reloader()))?; Ok(Router::new() .route("/", get(index)) .nest_service("/static", static_file_service) .layer(lr) .with_state(state)) } async fn index(State(state): State<AppState>) -> Result<Html<String>> { Ok(Html( state .templates .render("pages/index.html.jinja", context!()) .await?, )) }