# 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.

- Skill: `majiayu000/markdowntown-backend` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/markdowntown-backend`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/markdowntown-backend/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/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.
- Always look for refactoring or bugs; create new bd tasks when you spot them.

## 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

