import { Hono } from "hono"; import { serveStatic } from "hono/deno"; import postgres from "postgres"; const app = new Hono(); // Connect to Postgres using env vars (fallback for dev) const sql = postgres({ host: Deno.env.get("POSTGRES_HOST") || "db", port: parseInt(Deno.env.get("POSTGRES_PORT") || "5432"), database: Deno.env.get("POSTGRES_DB") || "nas_builder", username: Deno.env.get("POSTGRES_USER") || "nasadmin", password: Deno.env.get("POSTGRES_PASSWORD") || "your_secure_database_password_here", }); // API Routes app.get("/api/status", async (c) => { try { // Ping the database const result = await sql`SELECT version()`; return c.json({ status: "online", database: "connected", db_version: result[0].version, timestamp: new Date().toISOString() }); } catch (error: any) { return c.json({ status: "online", database: "disconnected", error: error.message }, 500); } }); // Serve the 3D Viewer frontend app.use("/*", serveStatic({ root: "./" })); // Handle root redirect to viewer app.get("/", (c) => c.redirect("/viewer/index.html")); // Start the server const port = parseInt(Deno.env.get("PORT") || "80"); console.log(`🚀 NAS-Builder Deno API starting on port ${port}...`); Deno.serve({ port }, app.fetch);