sbm_rs/
lib.rs

1mod config;
2mod errors;
3mod handlers;
4mod models;
5
6pub use errors::{Error, Result};
7
8use std::net::{IpAddr, Ipv6Addr, SocketAddr};
9
10use axum::{Router, routing::get};
11use tokio::net::TcpListener;
12use tower_http::services::ServeFile;
13
14pub async fn run() -> Result<()> {
15    let config = config::Config::new()?;
16
17    let app = Router::new()
18        .nest_service("/static/style.css", ServeFile::new(&config.style_file))
19        .nest_service("/static/favicon.svg", ServeFile::new(&config.favicon_file))
20        .route("/", get(handlers::handler))
21        .with_state(config.clone());
22
23    let socket = SocketAddr::new(IpAddr::V6(Ipv6Addr::UNSPECIFIED), config.port);
24    let listener = TcpListener::bind(socket).await?;
25
26    axum::serve(listener, app).await?;
27
28    Ok(())
29}