diff --git a/packages/api/src/index.ts b/packages/api/src/index.ts
index d4e84c9..b49c4bd 100644
--- a/packages/api/src/index.ts
+++ b/packages/api/src/index.ts
@@ -2,6 +2,7 @@ import express from "express";
import cors from "cors";
import helmet from "helmet";
import rateLimit from "express-rate-limit";
+import { join } from "path";
import { cfg } from "./config";
import { transceiverRouter } from "./routes/transceivers";
import { switchRouter } from "./routes/switches";
@@ -16,7 +17,7 @@ import { blogRouter } from "./routes/blog";
const app = express();
// Middleware
-app.use(helmet());
+app.use(helmet({ contentSecurityPolicy: false }));
app.use(cors());
app.use(express.json());
app.use(
@@ -39,8 +40,16 @@ app.use("/api/search", searchRouter);
app.use("/api/documents", documentRouter);
app.use("/api/blog", blogRouter);
-// Root
+// Dashboard (static HTML)
+app.use("/dashboard", express.static(join(__dirname, "..", "..", "dashboard")));
+
+// Root — redirect to dashboard
app.get("/", (_req, res) => {
+ res.redirect("/dashboard/");
+});
+
+// API info
+app.get("/api", (_req, res) => {
res.json({
name: "Transceiver Intelligence Platform",
version: "0.1.0",
diff --git a/packages/dashboard/index.html b/packages/dashboard/index.html
new file mode 100644
index 0000000..7584097
--- /dev/null
+++ b/packages/dashboard/index.html
@@ -0,0 +1,570 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | Technology | Phase | Position | Adoption | Peak Year | Years to Plateau |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | Name | Form Factor | Speed | Reach | Fiber | Connector | WDM |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Generate
+
Hype Cycle Analysis
+
800G technology position article
+
+
+
Generate
+
Product Comparison
+
400G transceiver comparison
+
+
+
Generate
+
Tutorial
+
Transceiver troubleshooting guide
+
+
+
Draft History
+
+
+
+
+
+
+