slave 0.4.0

Laravel-inspired CLI for Rust MCP servers: scaffold apps whose business operations are MCP tools over Streamable HTTP, with built-in auth, users, roles and Turso migrations
mod app;
mod base;
mod modules;

use std::process::ExitCode;

use slave_framework::database::Database;

use base::config::Config;
use base::state::AppState;

#[tokio::main]
async fn main() -> ExitCode {
    match run().await {
        Ok(()) => ExitCode::SUCCESS,
        Err(err) => {
            eprintln!("error: {err}");
            ExitCode::FAILURE
        }
    }
}

async fn run() -> slave_framework::Result<()> {
    slave_framework::env::load_dotenv()?;
    slave_framework::logging::init()?;

    let config = Config::from_env()?;
    let database = Database::open(&config.database_path).await?;
    let (host, port) = (config.host.clone(), config.port);
    let router = app::router(AppState::new(config, database));

    slave_framework::server::serve(router, &host, port).await
}