feat(scaffold): add Axum + Leptos SSR base structure
Sets up the full project skeleton: Cargo.toml with ssr/hydrate features, Axum server entry point, shared Leptos lib, root App component with router, server/client module split, and Trunk config for WASM build. Both `cargo check --features ssr` and `cargo check --features hydrate --target wasm32-unknown-unknown` pass. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
12
src/server/mod.rs
Normal file
12
src/server/mod.rs
Normal file
@@ -0,0 +1,12 @@
|
||||
// server/mod.rs — Module serveur
|
||||
//
|
||||
// Contient tout le code qui s'exécute uniquement côté serveur :
|
||||
// - Handlers HTTP additionnels (routes.rs)
|
||||
// - Fonctions serveur Leptos : accès à la base de données, authentification...
|
||||
// - Logique métier qui ne doit JAMAIS être exposée dans le bundle WASM
|
||||
//
|
||||
// Les "server functions" Leptos (marquées #[server]) sont déclarées ici.
|
||||
// Elles apparaissent comme des appels asynchrones normaux côté client,
|
||||
// mais s'exécutent exclusivement sur le serveur — transparence totale.
|
||||
|
||||
pub mod routes;
|
||||
26
src/server/routes.rs
Normal file
26
src/server/routes.rs
Normal file
@@ -0,0 +1,26 @@
|
||||
// server/routes.rs — Handlers HTTP Axum additionnels
|
||||
//
|
||||
// Ces handlers complètent les routes gérées par Leptos.
|
||||
// Exemples d'usages futurs :
|
||||
// - Endpoints API REST (/api/...)
|
||||
// - Exports de fichiers (CSV, PDF...)
|
||||
// - Webhooks entrants
|
||||
// - Health check pour le monitoring (/health)
|
||||
//
|
||||
// `#[cfg(feature = "ssr")]` protège tout ce fichier :
|
||||
// Axum n'existe pas dans le bundle WASM, donc on ne compile ce code qu'en mode serveur.
|
||||
|
||||
#[cfg(feature = "ssr")]
|
||||
use axum::{http::StatusCode, response::IntoResponse};
|
||||
|
||||
// Handler 404 — utilisé comme fallback dans main.rs pour toute URL non reconnue.
|
||||
//
|
||||
// `impl IntoResponse` : Axum accepte n'importe quel type qui implémente ce trait.
|
||||
// Un tuple `(StatusCode, &str)` l'implémente automatiquement :
|
||||
// Axum en fait une réponse HTTP 404 avec le corps "Page introuvable".
|
||||
//
|
||||
// `async fn` est obligatoire pour les handlers Axum, même sans opération asynchrone.
|
||||
#[cfg(feature = "ssr")]
|
||||
pub async fn not_found_handler() -> impl IntoResponse {
|
||||
(StatusCode::NOT_FOUND, "Page introuvable")
|
||||
}
|
||||
Reference in New Issue
Block a user