//! webgl.famzheng.me — 说需求 → gemma 现场生成可交互 WebGL 小程序。
//!
//! - 静态 SPA + SPA fallback 由 cube-core::base 处理。
//! - `POST /api/generate` 把需求 + 系统提示词喂给 LLM gateway，**SSE 流式**把
//!   生成的 HTML 一段段回吐给前端（前端边收边显示代码，写完丢进沙箱 iframe 跑）。
//!
//! 完全无状态：没有 DB、没有会话存储。要迭代修改就让前端把当前代码当 context
//! 一起发回来。

mod generate;

use std::sync::Arc;

#[tokio::main]
async fn main() -> std::io::Result<()> {
    cube_core::init_tracing();
    let dist = std::env::var("WEBGL_DIST_DIR").unwrap_or_else(|_| "/dist".into());
    let cfg = Arc::new(generate::Config::from_env());

    let api = axum::Router::new()
        .route("/generate", axum::routing::post(generate::handle))
        .with_state(cfg);

    let app = cube_core::base(dist).nest("/api", api);
    cube_core::serve(app, 8080).await
}
