Image Docker, CI et docs pour le serveur Rust

Image en trois étapes (frontend Vite, binaire Rust, Debian slim avec
FFmpeg), healthcheck /healthz, dépendances npm propres à l'ancien
serveur retirées, CI Rust (fmt, clippy, tests) et documentation de la
mise à jour au prochain démarrage de la stack.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013qMexTfVRaegbPAgsagCAJ
This commit is contained in:
Claude committed 2026-10-12 17:20:38 +00:00
1 parent f9828d4887
commit 25703abb7d
14 files changed
+272 -8270

No files matched your search

+9
View File
@@ -24,6 +24,7 @@ use crate::state::AppState;
pub fn router(state: AppState) -> Router {
let api = Router::new()
.route("/healthz", axum::routing::get(healthz))
.merge(auth::router())
.merge(core::router())
.nest("/api/analytics", analytics::router())
@@ -56,6 +57,14 @@ pub fn router(state: AppState) -> Router {
.with_state(state)
}
/// Sonde de santé (Docker) : le serveur répond et la base est joignable.
async fn healthz(State(state): State<AppState>) -> Response {
match sqlx::query_scalar::<_, i32>("SELECT 1").fetch_one(&state.db.pool).await {
Ok(_) => (StatusCode::OK, "ok").into_response(),
Err(_) => (StatusCode::SERVICE_UNAVAILABLE, "database unavailable").into_response(),
}
}
/// Route inconnue : JSON pour `/api`, sinon fichiers publics puis l'application React.
async fn fallback(State(state): State<AppState>, headers: HeaderMap, request: Request) -> Response {
let path = request.uri().path().to_string();