chore: initialiser le projet imagod-web (Rust)
- Structure du projet Cargo avec dépendances (clap, axum, reqwest, rusqlite, arboard, tray-icon) - CLI avec sous-commandes start, serve, stop, status, config, install, uninstall, logs - Module config: parsing TOML, chemins Windows/Linux - Module dedup: dédoublonnage SHA-256 avec cache SQLite - Module imago_client: client HTTP pour API Imago (upload, search, get) - Module watcher: boucle de polling stub - Module server: serveur web axum avec routes API REST stub - Platform-specific: clipboard, tray, service, window_info (Windows) - Frontend placeholder HTML - Config par défaut (imagod.toml) - README.md, LICENSE (MIT), .gitignore
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
//! Serveur web — Dashboard embarqué (axum)
|
||||
//!
|
||||
//! Phase 9: API REST + WebSocket + frontend Svelte embarqué via rust-embed
|
||||
|
||||
pub mod routes;
|
||||
pub mod ws;
|
||||
|
||||
use axum::Router;
|
||||
use std::net::SocketAddr;
|
||||
|
||||
/// Démarre le serveur web
|
||||
pub async fn serve(host: &str, port: u16) -> anyhow::Result<()> {
|
||||
let app = Router::new()
|
||||
.merge(routes::api_routes())
|
||||
.merge(routes::static_routes());
|
||||
|
||||
let addr: SocketAddr = format!("{}:{}", host, port).parse()?;
|
||||
tracing::info!("Dashboard web démarré sur http://{}", addr);
|
||||
|
||||
let listener = tokio::net::TcpListener::bind(addr).await?;
|
||||
axum::serve(listener, app).await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
Reference in New Issue
Block a user