Add API server with routes, services, and middleware

Express server with CRUD routes for agents, goals, issues, projects,
and activity log. Includes validation middleware, structured error
handling, request logging, and health check endpoint with tests.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Forgotten
2026-02-16 13:31:58 -06:00
parent 948e8e8c94
commit c9d7cbfe44
24 changed files with 624 additions and 0 deletions

View File

@@ -0,0 +1,18 @@
import type { Request, Response, NextFunction } from "express";
import { ZodError } from "zod";
import { logger } from "./logger.js";
export function errorHandler(
err: unknown,
_req: Request,
res: Response,
_next: NextFunction,
) {
if (err instanceof ZodError) {
res.status(400).json({ error: "Validation error", details: err.errors });
return;
}
logger.error(err, "Unhandled error");
res.status(500).json({ error: "Internal server error" });
}

View File

@@ -0,0 +1,3 @@
export { logger, httpLogger } from "./logger.js";
export { errorHandler } from "./error-handler.js";
export { validate } from "./validate.js";

View File

@@ -0,0 +1,5 @@
import pino from "pino";
import { pinoHttp } from "pino-http";
export const logger = pino();
export const httpLogger = pinoHttp({ logger });

View File

@@ -0,0 +1,9 @@
import type { Request, Response, NextFunction } from "express";
import type { ZodSchema } from "zod";
export function validate(schema: ZodSchema) {
return (req: Request, _res: Response, next: NextFunction) => {
req.body = schema.parse(req.body);
next();
};
}