VKC API Route Pattern
When to use
- Creating new endpoints under
src/app/api/** - Refactoring existing endpoints to match house style
House style (this repo)
- Auth:
getSession(user) orgetAdminSession(admin) - DB:
dbfrom@/lib/db, tables from@/lib/db/schema - Rate limit (if needed):
checkRateLimit+rateLimitResponse - Responses:
- Public APIs: prefer
@/lib/api/responsehelpers - Admin APIs: typically
NextResponse.json(...)directly (keep consistent within/api/admin/**)
- Public APIs: prefer
- Validation: repo currently uses explicit runtime checks (no Zod dependency yet). If Zod is added later, migrate route-by-route.
Canonical references
- Public route w/ validation + rate-limit:
src/app/api/reports/route.ts - Public route w/ typed allowlists:
src/app/api/events/route.ts - Admin CRUD + schedule fields:
src/app/api/admin/news/route.ts
Template
- Full skeleton (copy + customize):
.codex/skills/vkc-api-route-pattern/references/api-route-template.ts