#[cfg(feature = "ssr")] #[tokio::main] async fn main() { use axum::{extract::Extension, routing::post, Router}; use como_web::app::*; use como_web::fallback::file_and_error_handler; use leptos::*; use leptos_axum::{generate_route_list, LeptosRoutes}; use std::sync::Arc; use tracing_subscriber::EnvFilter; std::env::set_var("COMO_GATEWAY_URL", "https://api.como.i.kjuulh.io/graphql"); tracing_subscriber::fmt() .with_env_filter(EnvFilter::from_default_env()) .init(); let conf = get_configuration(None).await.unwrap(); let addr = conf.leptos_options.site_addr; let leptos_options = conf.leptos_options; // Generate the list of routes in your Leptos App let routes = generate_route_list(|cx| view! { cx, }).await; como_web::api::register(); let app = Router::new() .route("/api/*fn_name", post(leptos_axum::handle_server_fns)) .leptos_routes(leptos_options.clone(), routes, |cx| view! { cx, }) .fallback(file_and_error_handler) .layer(Extension(Arc::new(leptos_options))); // run our app with hyper // `axum::Server` is a re-export of `hyper::Server` log!("listening on http://{}", &addr); axum::Server::bind(&addr) .serve(app.into_make_service()) .await .unwrap(); } #[cfg(not(feature = "ssr"))] pub fn main() { // no client-side main function // unless we want this to work with e.g., Trunk for pure client-side testing // see lib.rs for hydration function instead }