import { Hono } from "hono";
import { logger } from "hono/logger";
import { cors } from "hono/cors";
import { Layout } from "./views/layout";
import gitRoutes from "./routes/git";
import apiRoutes from "./routes/api";
import authRoutes from "./routes/auth";
import settingsRoutes from "./routes/settings";
import issueRoutes from "./routes/issues";
import repoSettings from "./routes/repo-settings";
import compareRoutes from "./routes/compare";
import pullRoutes from "./routes/pulls";
import editorRoutes from "./routes/editor";
import forkRoutes from "./routes/fork";
import webhookRoutes from "./routes/webhooks";
import exploreRoutes from "./routes/explore";
import tokenRoutes from "./routes/tokens";
import contributorRoutes from "./routes/contributors";
import healthRoutes from "./routes/health";
import insightRoutes from "./routes/insights";
import dashboardRoutes from "./routes/dashboard";
import legalRoutes from "./routes/legal";
import webRoutes from "./routes/web";
const app = new Hono();
app.use("*", logger());
app.use("/api/*", cors());
app.route("/", gitRoutes);
app.route("/", apiRoutes);
app.route("/", authRoutes);
app.route("/", settingsRoutes);
app.route("/", tokenRoutes);
app.route("/", repoSettings);
app.route("/", webhookRoutes);
app.route("/", compareRoutes);
app.route("/", issueRoutes);
app.route("/", pullRoutes);
app.route("/", forkRoutes);
app.route("/", editorRoutes);
app.route("/", contributorRoutes);
app.route("/", healthRoutes);
app.route("/", insightRoutes);
app.route("/", dashboardRoutes);
app.route("/", legalRoutes);
app.route("/", exploreRoutes);
app.route("/", webRoutes);
app.notFound((c) => {
return c.html(
<Layout title="Not Found">
<div class="empty-state">
<h2>404</h2>
<p>Page not found.</p>
<a href="/" style="margin-top: 12px; display: inline-block">
Go home
</a>
</div>
</Layout>,
404
);
});
app.onError((err, c) => {
console.error("[error]", err);
return c.html(
<Layout title="Error">
<div class="empty-state">
<h2>Something went wrong</h2>
<p>An unexpected error occurred.</p>
{process.env.NODE_ENV !== "production" && (
<pre style="margin-top: 16px; text-align: left; font-size: 12px; color: var(--red)">
{err.message}
</pre>
)}
</div>
</Layout>,
500
);
});
export default app;
|