first commit

This commit is contained in:
Beyhan Oğur
2026-04-26 22:31:06 +03:00
commit 6e06119135
30 changed files with 1232 additions and 0 deletions

41
src/main.rs Normal file
View File

@@ -0,0 +1,41 @@
use axum::Router;
use dotenvy::dotenv;
use std::net::SocketAddr;
mod api;
mod core;
mod db;
mod errors;
mod schemas;
mod services;
mod utils;
use crate::core::config::Config;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
dotenv().ok();
tracing_subscriber::fmt::init();
let config = Config::from_env()?;
// Initialize DB
let db = db::connect(&config).await?;
// Shared app state
let state = std::sync::Arc::new(crate::api::deps::AppState { db: db.clone(), cfg: config.clone() });
// Build router with /api/v1 prefix and provide state via Extension
let api_router = Router::new()
.merge(api::routers::auth::router())
.merge(api::routers::users::router());
let app = Router::new().nest("/api/v1", api_router).layer(axum::Extension(state));
let addr = SocketAddr::from((config.server_host.parse::<std::net::IpAddr>()?, config.server_port));
tracing::info!("Starting server on {}", addr);
let listener = tokio::net::TcpListener::bind(&addr).await?;
axum::serve(listener, app).await?;
Ok(())
}