From 00f2d890f1c63e3a134ed4d82a2b40be96603293 Mon Sep 17 00:00:00 2001 From: funman300 Date: Wed, 13 May 2026 16:21:38 -0700 Subject: [PATCH] feat(web): add landing page at / with links to play, leaderboard, replays Co-Authored-By: Claude Sonnet 4.6 --- solitaire_server/src/lib.rs | 7 +- solitaire_server/web/home.html | 155 +++++++++++++++++++++++++++++++++ 2 files changed, 161 insertions(+), 1 deletion(-) create mode 100644 solitaire_server/web/home.html diff --git a/solitaire_server/src/lib.rs b/solitaire_server/src/lib.rs index 1eac740..b3cbd35 100644 --- a/solitaire_server/src/lib.rs +++ b/solitaire_server/src/lib.rs @@ -201,6 +201,10 @@ fn build_router_inner(state: AppState, rate_limit: bool) -> Router { // same regardless of `:id` — it reads the path from `location` in JS // and fetches the replay JSON from `/api/replays/:id`. let web = Router::new() + .route( + "/", + get(|| async { Html(include_str!("../web/home.html")) }), + ) .route( "/replays/{id}", get(|| async { Html(include_str!("../web/index.html")) }), @@ -209,7 +213,8 @@ fn build_router_inner(state: AppState, rate_limit: bool) -> Router { "/play", get(|| async { Html(include_str!("../web/game.html")) }), ) - .nest_service("/web", ServeDir::new("solitaire_server/web")); + .nest_service("/web", ServeDir::new("solitaire_server/web")) + .nest_service("/assets", ServeDir::new("assets")); Router::new() .merge(protected) diff --git a/solitaire_server/web/home.html b/solitaire_server/web/home.html new file mode 100644 index 0000000..6b0b4b0 --- /dev/null +++ b/solitaire_server/web/home.html @@ -0,0 +1,155 @@ + + + + + + Solitaire Quest + + + + +
Klondike Solitaire
+ + + + + +