# Markdowntown Backend

> Backend API routes, Prisma schema/migrations, and server-side validation patterns for markdowntown. Use when editing Next.js App Router API handlers, Prisma models/migrations, auth/session gating, rate limits, cache revalidation, or backend validation logic. Use when this capability is needed.

- Skill: `tomevault-io/markdowntown-backend` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/markdowntown-backend`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/markdowntown-backend/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/markdowntown-backend

---


# markdowntown-backend

## Core workflow
1. Identify whether the change is an API route, a data-model change (Prisma), or validation logic.
2. For API routes, confirm auth/rate-limits + response shape and cache tag invalidation.
3. For Prisma changes, update `prisma/schema.prisma`, run migrations/generate, and update callers.
4. For validation updates, reuse shared validators and keep error messages consistent.
5. Run compile/lint/unit tests; update API tests if response shapes change.

## Quick map
- **API routes:** `src/app/api/**/route.ts`
- **Auth gating:** `src/lib/requireSession.ts`, `src/lib/auth.ts`
- **Rate limiting + abuse logging:** `src/lib/rateLimiter.ts`, `src/lib/reports.ts`
- **Prisma client:** `src/lib/prisma.ts`
- **Prisma schema + migrations:** `prisma/schema.prisma`, `prisma/migrations/*`
- **Cache tags + revalidation:** `src/lib/cacheTags.ts`, `src/lib/revalidate.ts`, `src/lib/cache.ts`
- **Validation:** `src/lib/validation.ts`, `src/lib/skills/skillValidate.ts`, `src/lib/uam/uamValidate.ts`, `src/lib/uam/uamLint.ts`

## Guardrails
- Keep API responses deterministic; use `NextResponse.json` with explicit status codes.
- When mutating data, call `safeRevalidateTag` for list/detail tags and landing.
- Do not bypass `requireSession` for private routes; keep 401 responses consistent.
- Avoid direct Prisma access from UI components; use API routes or server utilities.

## References
- docs/DEV_ONBOARDING.md
- docs/MIGRATIONS.md
- docs/architecture/architecture.md
- docs/architecture/security-public-rendering.md
- codex/skills/markdowntown-backend/references/api-routes.md
- codex/skills/markdowntown-backend/references/prisma.md
- codex/skills/markdowntown-backend/references/validation.md

---
> Converted and distributed by [TomeVault](https://tomevault.io/claim/joelklabo) — claim your Tome and manage your conversions.
<!-- tomevault:4.0:skill_md:2026-04-15 -->

