repos

darkfurrow.com-rust

mirror archived upstream

A living almanac of seasons, soil, and the quiet knowledge that used to be common. Rust axum with minijinja and Vite.

agriculturealmanacaxumfolk-knowledgegardeningminijinjarustseasonalvite

871 B · 36 lines · Rust Raw History
 1mod almanac;
 2mod app;
 3mod astro;
 4mod content;
 5mod error;
 6mod markdown;
 7mod middleware;
 8mod rng;
 9mod routes;
10mod templates;
11
12use std::net::SocketAddr;
13
14#[tokio::main]
15async fn main() -> anyhow::Result<()> {
16    dotenvy::dotenv().ok();
17    tracing_subscriber::fmt()
18        .with_env_filter(
19            tracing_subscriber::EnvFilter::try_from_default_env()
20                .unwrap_or_else(|_| tracing_subscriber::EnvFilter::new("info")),
21        )
22        .init();
23
24    let port: u16 = std::env::var("PORT")
25        .ok()
26        .and_then(|v| v.parse().ok())
27        .unwrap_or(8000);
28
29    let app = app::router(app::AppState::from_env());
30    let addr = SocketAddr::from(([0, 0, 0, 0], port));
31    let listener = tokio::net::TcpListener::bind(addr).await?;
32    tracing::info!("darkfurrow listening on http://{addr}");
33    axum::serve(listener, app).await?;
34    Ok(())
35}