1#![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#[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}