Skip to main content

ccboard_web/
lib.rs

1//! ccboard-web - Web frontend for ccboard using Leptos + Axum
2
3#![recursion_limit = "2048"]
4
5pub mod api;
6pub mod app;
7pub mod components;
8pub mod pages;
9
10#[cfg(feature = "ssr")]
11pub mod router;
12#[cfg(feature = "ssr")]
13pub mod sse;
14
15pub mod sse_hook;
16pub mod utils;
17
18pub use app::App;
19
20#[cfg(feature = "ssr")]
21pub use router::create_router;
22
23// Server-side only code (backend with tokio/axum)
24#[cfg(feature = "ssr")]
25pub async fn run(store: std::sync::Arc<ccboard_core::DataStore>, port: u16) -> anyhow::Result<()> {
26    use std::net::SocketAddr;
27    use tokio::net::TcpListener;
28    use tracing::info;
29
30    let router = create_router(store);
31
32    let addr = SocketAddr::from(([0, 0, 0, 0], port));
33    let listener = TcpListener::bind(addr).await?;
34
35    info!("Web server listening on http://localhost:{}", port);
36    println!("Web server listening on http://localhost:{}", port);
37
38    axum::serve(listener, router).await?;
39
40    Ok(())
41}