From b245dfcf9dd441674b40605df41b2920c13b66f5 Mon Sep 17 00:00:00 2001 From: msi Date: Thu, 13 Nov 2025 12:02:56 -0300 Subject: Start boilerplate axum web --- web/template/src/main.rs | 48 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 2 deletions(-) (limited to 'web/template/src/main.rs') diff --git a/web/template/src/main.rs b/web/template/src/main.rs index e7a11a9..9e36cae 100644 --- a/web/template/src/main.rs +++ b/web/template/src/main.rs @@ -1,3 +1,47 @@ -fn main() { - println!("Hello, world!"); +// +// Copyright (c) 2025 murilo ijanc' +// +// Permission to use, copy, modify, and distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// + +use std::time::Duration; + +use axum::{Router, response::Html, routing::get}; +use tokio::net::TcpListener; +use tower_http::{timeout::TimeoutLayer, trace::TraceLayer}; +use tracing::info; + +mod helpers; + +#[tokio::main] +async fn main() -> anyhow::Result<()> { + helpers::init_tracing(); + + let app = Router::new().route("/", get(handler)).layer(( + TraceLayer::new_for_http(), + TimeoutLayer::new(Duration::from_secs(10)), // TODO(msi): from config + )); + + // TODO(msi): from config + let listener = TcpListener::bind("0.0.0.0:3000").await?; + info!("listening on http://{}", listener.local_addr().unwrap()); + axum::serve(listener, app) + .with_graceful_shutdown(helpers::shutdown_signal()) + .await?; + + Ok(()) +} + +async fn handler() -> Html<&'static str> { + Html("

Hello, World {{project-name}} =]

") } -- cgit v1.2.3