use fortress_server::prelude::*;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
tracing_subscriber::registry()
.with(
tracing_subscriber::EnvFilter::try_from_default_env()
.unwrap_or_else(|_| "fortress_server=info,tower_http=info".into()),
)
.with(tracing_subscriber::fmt::layer())
.init();
let mut config = ServerConfig::default();
config.network.port = 8080;
config.network.host = "127.0.0.1".to_string();
config.features.auth_enabled = true;
config.features.metrics_enabled = true;
config.features.health_enabled = true;
println!("🚀 Starting Fortress server...");
println!("📍 Server will bind to {}:{}", config.network.host, config.network.port);
println!("🔐 Authentication: {}", if config.features.auth_enabled { "enabled" } else { "disabled" });
println!("📊 Metrics: {}", if config.features.metrics_enabled { "enabled" } else { "disabled" });
println!("💚 Health checks: {}", if config.features.health_enabled { "enabled" } else { "disabled" });
let server = FortressServer::new(config).await?;
let bind_addr = format!("{}:{}", server.config.network.host, server.config.network.port);
server.listen(&bind_addr).await?;
Ok(())
}