TypeScript 97.4%
SQL 1%
JavaScript 0.9%
CSS 0.6%
1import { withUser, parseBody, json } from "@/lib/api";2import { listProjects, createProject } from "@/lib/projects/service";3import { projectBodySchema } from "@/lib/projects/schemas";45export const dynamic = "force-dynamic";67/** GET /api/projects?archived=1 → { projects } (non-archived by default; each with conversation/file/prompt counts). */8export const GET = withUser(async ({ req, user }) => {9 const includeArchived = new URL(req.url).searchParams.get("archived") === "1";10 return json({ projects: await listProjects(user.id, { includeArchived }) });11});1213/** POST /api/projects → 201 { project } */14export const POST = withUser(async ({ req, user }) => {15 const body = await parseBody(req, projectBodySchema);16 return json({ project: await createProject(user.id, body) }, { status: 201 });17});18