summaryrefslogtreecommitdiff
path: root/admin-panel/src/server/index.ts
diff options
context:
space:
mode:
authorArseney300 <Arseney300@gmail.com>2026-03-05 09:47:09 +0700
committerArseney300 <Arseney300@gmail.com>2026-03-05 09:47:09 +0700
commit0885d20ac18c252f6735cd288448d5d93e95b80f (patch)
treeedfb6814e97d4000605d9f6a918c30c6aca9e10c /admin-panel/src/server/index.ts
parent22749b796d7a5e4efa9494156a3fdcfe39028da7 (diff)
WIP: admin_panel: add featurefeature/admin_panel
Diffstat (limited to 'admin-panel/src/server/index.ts')
-rw-r--r--admin-panel/src/server/index.ts46
1 files changed, 46 insertions, 0 deletions
diff --git a/admin-panel/src/server/index.ts b/admin-panel/src/server/index.ts
new file mode 100644
index 0000000..f76602e
--- /dev/null
+++ b/admin-panel/src/server/index.ts
@@ -0,0 +1,46 @@
+import express from 'express';
+import { createServer } from 'http';
+import { join, dirname } from 'path';
+import { existsSync } from 'fs';
+import { fileURLToPath } from 'url';
+import { setupWebSocket } from './ws.js';
+import projectsRouter from './routes/projects.js';
+import tasksRouter from './routes/tasks.js';
+import pipelineRouter from './routes/pipeline.js';
+import gerritRouter from './routes/gerrit.js';
+import dashboardRouter from './routes/dashboard.js';
+import settingsRouter from './routes/settings.js';
+
+const __dirname = dirname(fileURLToPath(import.meta.url));
+const app = express();
+const server = createServer(app);
+const PORT = process.env.PORT || 3000;
+
+// Middleware
+app.use(express.json());
+
+// API routes
+app.use('/api/projects', projectsRouter);
+app.use('/api/projects/:project/tasks', tasksRouter);
+app.use('/api/projects/:project/pipeline', pipelineRouter);
+app.use('/api/projects/:project/gerrit', gerritRouter);
+app.use('/api/dashboard', dashboardRouter);
+app.use('/api/settings', settingsRouter);
+
+// Serve static client in production
+const clientDir = join(__dirname, '..', 'client');
+if (existsSync(clientDir)) {
+ app.use(express.static(clientDir));
+ app.get('*', (_req, res) => {
+ res.sendFile(join(clientDir, 'index.html'));
+ });
+}
+
+// WebSocket
+setupWebSocket(server);
+
+server.listen(PORT, () => {
+ console.log(`Admin panel running on port ${PORT}`);
+});
+
+export { app, server };