- Add Turborepo scaffold templates (apps: product, website, admin, storybook; packages: ui, tokens, types, config) - Add ProjectRecord and AppRecord types to control plane - Add Gitea integration service (repo creation, scaffold push, webhooks) - Add Coolify integration service (project + per-app service provisioning with turbo --filter) - Add project routes: GET/POST /projects, GET /projects/:id/apps, POST /projects/:id/deploy - Update chat route to inject project/monorepo context into AI requests - Add deploy_app and scaffold_app tools to Gemini tool set - Update deploy executor with monorepo-aware /execute/deploy endpoint - Add TURBOREPO_MIGRATION_PLAN.md documenting rationale and scope Co-authored-by: Cursor <cursoragent@cursor.com>
32 lines
1.0 KiB
TypeScript
32 lines
1.0 KiB
TypeScript
import Fastify from "fastify";
|
|
import cors from "@fastify/cors";
|
|
import helmet from "@fastify/helmet";
|
|
import rateLimit from "@fastify/rate-limit";
|
|
import sensible from "@fastify/sensible";
|
|
import { config } from "./config.js";
|
|
import { healthRoutes } from "./routes/health.js";
|
|
import { toolRoutes } from "./routes/tools.js";
|
|
import { runRoutes } from "./routes/runs.js";
|
|
import { chatRoutes } from "./routes/chat.js";
|
|
import { projectRoutes } from "./routes/projects.js";
|
|
|
|
const app = Fastify({ logger: true });
|
|
|
|
await app.register(cors, { origin: true });
|
|
await app.register(helmet);
|
|
await app.register(sensible);
|
|
await app.register(rateLimit, { max: 300, timeWindow: "1 minute" });
|
|
|
|
await app.register(healthRoutes);
|
|
await app.register(toolRoutes);
|
|
await app.register(runRoutes);
|
|
await app.register(chatRoutes);
|
|
await app.register(projectRoutes);
|
|
|
|
app.listen({ port: config.port, host: "0.0.0.0" }).then(() => {
|
|
console.log(`🚀 Control Plane API running on http://localhost:${config.port}`);
|
|
}).catch((err) => {
|
|
app.log.error(err);
|
|
process.exit(1);
|
|
});
|