app.ts
Raw
1import path from "node:path";
2import { staticPlugin } from "@elysiajs/static";
3import { Elysia } from "elysia";
4import config from "./config.ts";
5import { authRoutes } from "./routes/auth.tsx";
6import { avatarRoutes } from "./routes/avatars.ts";
7import { ciRoutes } from "./routes/ci.tsx";
8import { gitRoutes } from "./routes/git.ts";
9import { issueRoutes } from "./routes/issues.tsx";
10import { patchRoutes } from "./routes/patches.tsx";
11import { releasesRoutes } from "./routes/releases.tsx";
12import { repoRoutes } from "./routes/repos.tsx";
13import { settingsRoutes } from "./routes/settings.tsx";
14import { syncStartup } from "./services/repoSync.ts";
15
16export async function createApp(port: number) {
17 await syncStartup();
18 return new Elysia({
19 serve: { maxRequestBodySize: config.MAX_UPLOAD_BYTES },
20 })
21 .use(
22 staticPlugin({
23 assets: path.resolve("./public"),
24 prefix: "/",
25 }),
26 )
27 .use(gitRoutes)
28 .use(settingsRoutes)
29 .use(authRoutes)
30 .use(repoRoutes)
31 .use(issueRoutes)
32 .use(patchRoutes)
33 .use(releasesRoutes)
34 .use(ciRoutes)
35 .use(avatarRoutes)
36 .listen(port);
37}
38