From 692a1a56a77bf9de3b2a80423c3f18a6717534d2 Mon Sep 17 00:00:00 2001 From: Jacob Date: Sun, 18 Oct 2026 15:31:19 -0400 Subject: [PATCH] feat: frontend routes (just the index html file for now) --- Cargo.lock | 18 +++++++++++++++++- Cargo.toml | 1 + src/server/frontend.rs | 11 +++++++++++ src/server/mod.rs | 4 ++++ 4 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 src/server/frontend.rs diff --git a/Cargo.lock b/Cargo.lock index f630bfb..1792f55 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1645,6 +1645,7 @@ dependencies = [ "serde_with", "strum", "tokio", + "tower-http 0.7.1", "tracing", "tracing-subscriber", "typed-builder", @@ -2127,7 +2128,7 @@ dependencies = [ "tokio-rustls", "tokio-util", "tower", - "tower-http", + "tower-http 0.6.11", "tower-service", "url", "wasm-bindgen", @@ -2860,6 +2861,21 @@ dependencies = [ "url", ] +[[package]] +name = "tower-http" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08a05a66a4fdd61cbbe0a1d755ffe0ca6aba159dd4820936a0ff8a8278245b9c" +dependencies = [ + "bitflags 2.13.2", + "bytes", + "http", + "percent-encoding", + "pin-project-lite", + "tower-layer", + "tower-service", +] + [[package]] name = "tower-layer" version = "0.3.3" diff --git a/Cargo.toml b/Cargo.toml index 8be79b6..34afd0d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,6 +28,7 @@ serde_json = "1.0.151" serde_with = "3.24.0" strum = { version = "0.28.0", features = ["derive"] } tokio = { version = "1.53.1", features = ["macros", "rt-multi-thread"] } +tower-http = { version = "0.7.1", features = ["cors"] } tracing = "0.1.44" tracing-subscriber = { version = "0.3.23", features = ["env-filter"] } typed-builder = "0.23.2" diff --git a/src/server/frontend.rs b/src/server/frontend.rs new file mode 100644 index 0000000..b2a2cd1 --- /dev/null +++ b/src/server/frontend.rs @@ -0,0 +1,11 @@ +use axum::response::Html; +use axum_extra::routing::TypedPath; +use serde::Deserialize; + +#[derive(Deserialize, TypedPath)] +#[typed_path("/")] +pub struct IndexPath; + +pub async fn spa(_: IndexPath) -> Html<&'static str> { + Html(include_str!("index.html")) +} diff --git a/src/server/mod.rs b/src/server/mod.rs index fdcfcb8..101039b 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -6,11 +6,13 @@ use rand::Rng; use rand::RngExt; use secrecy::SecretString; use std::sync::Arc; +use tower_http::cors::CorsLayer; use typed_builder::TypedBuilder; use url::Url; mod chat; mod decisions; +mod frontend; mod embeddings; mod models; mod system_one; @@ -46,6 +48,8 @@ pub fn create_router() -> Router { .typed_post(embeddings::create_embeddings) .typed_post(system_one::create_system_one) .typed_get(models::list_models) + .typed_get(frontend::spa) + .layer(CorsLayer::new()) } pub fn create_app(state: AppState) -> Router<()> {