Initial commit: AMS Backend - Deno + Oak + MongoDB

This commit is contained in:
FluxKit
2026-02-19 14:02:53 +00:00
commit 656a37efda
36 changed files with 7648 additions and 0 deletions

100
src/main.ts Normal file
View File

@@ -0,0 +1,100 @@
import { Application } from "@oak/oak";
import "@std/dotenv/load";
import { getMongoClient } from "./db/mongo.ts";
import { corsMiddleware } from "./middleware/cors.ts";
import { authRouter } from "./routes/auth.ts";
import { tasksRouter } from "./routes/tasks.ts";
import { agentTasksRouter } from "./routes/agenttasks.ts";
import { secretsRouter, secretFoldersRouter } from "./routes/secrets.ts";
import { secretAuditLogsRouter } from "./routes/secretAuditLogs.ts";
import { workspaceRouter } from "./routes/workspace.ts";
import { labelsRouter } from "./routes/labels.ts";
import { cronJobsRouter } from "./routes/cronjobs.ts";
import { quickTextsRouter } from "./routes/quicktexts.ts";
import { transcribeRouter } from "./routes/transcribe.ts";
import { messagingRouter } from "./routes/messaging.ts";
import { tokensRouter } from "./routes/tokens.ts";
import { settingsRouter } from "./routes/settings.ts";
import { commentsRouter } from "./routes/comments.ts";
import { attachmentsRouter } from "./routes/attachments.ts";
import { agentsRouter } from "./routes/agents.ts";
import { logsRouter } from "./routes/logs.ts";
import { userSettingsRouter } from "./routes/usersettings.ts";
import gitlabRouter from "./routes/gitlab.ts";
import { dockerRouter } from "./routes/docker.ts";
import { exportRouter } from "./routes/export.ts";
import { appUpdateRouter } from "./routes/appUpdate.ts";
import { handleWebSocket } from "./ws/handler.ts";
const app = new Application();
const PORT = parseInt(Deno.env.get("PORT") || "8000");
// Connect to MongoDB
await getMongoClient();
// Middleware
app.use(corsMiddleware);
// Routes
app.use(authRouter.routes());
app.use(authRouter.allowedMethods());
app.use(tasksRouter.routes());
app.use(tasksRouter.allowedMethods());
app.use(agentTasksRouter.routes());
app.use(agentTasksRouter.allowedMethods());
app.use(secretsRouter.routes());
app.use(secretsRouter.allowedMethods());
app.use(secretFoldersRouter.routes());
app.use(secretFoldersRouter.allowedMethods());
app.use(secretAuditLogsRouter.routes());
app.use(secretAuditLogsRouter.allowedMethods());
app.use(workspaceRouter.routes());
app.use(workspaceRouter.allowedMethods());
app.use(labelsRouter.routes());
app.use(labelsRouter.allowedMethods());
app.use(cronJobsRouter.routes());
app.use(cronJobsRouter.allowedMethods());
app.use(quickTextsRouter.routes());
app.use(quickTextsRouter.allowedMethods());
app.use(transcribeRouter.routes());
app.use(transcribeRouter.allowedMethods());
app.use(messagingRouter.routes());
app.use(messagingRouter.allowedMethods());
app.use(tokensRouter.routes());
app.use(tokensRouter.allowedMethods());
app.use(settingsRouter.routes());
app.use(settingsRouter.allowedMethods());
app.use(commentsRouter.routes());
app.use(commentsRouter.allowedMethods());
app.use(attachmentsRouter.routes());
app.use(attachmentsRouter.allowedMethods());
app.use(agentsRouter.routes());
app.use(agentsRouter.allowedMethods());
app.use(logsRouter.routes());
app.use(logsRouter.allowedMethods());
app.use(userSettingsRouter.routes());
app.use(userSettingsRouter.allowedMethods());
app.use(gitlabRouter.routes());
app.use(gitlabRouter.allowedMethods());
app.use(dockerRouter.routes());
app.use(dockerRouter.allowedMethods());
app.use(exportRouter.routes());
app.use(exportRouter.allowedMethods());
app.use(appUpdateRouter.routes());
app.use(appUpdateRouter.allowedMethods());
console.log(`AMS Backend running on port ${PORT}`);
// Use Deno.serve for WebSocket support
Deno.serve({ port: PORT }, async (req: Request): Promise<Response> => {
const url = new URL(req.url);
// Handle WebSocket upgrades
if (url.pathname === "/ws" && req.headers.get("upgrade")?.toLowerCase() === "websocket") {
return handleWebSocket(req);
}
// Forward to Oak for regular HTTP
const oakResponse = await app.handle(req);
return oakResponse || new Response("Not Found", { status: 404 });
});