SuperAPI AI Directory

scaffolding-api-routes

Coding & development

View repository

Updated 10-15 21:54

About this skill

Scaffolding Modern API Routes

Translate legacy Express route definitions and middleware chains into modern Next.js Route Handlers with built-in validation and unified session management.

Objective

Rebuild the documented API surface to ensure 1:1 functional parity with the legacy system, focusing on mapping Express Middlewares to Next.js Route Guards.

Instructions for the Scaffold Subagent

Copy this checklist and track your progress:

Task Progress:
- [ ] Step 1: Analyze API Contracts
- [ ] Step 2: Establish Route Architecture
- [ ] Step 3: Map Middleware to Guards
- [ ] Step 4: Implement Zod-Backed Request Validation
- [ ] Step 5: Implement Resource Handlers

Step 1. Analyze API Contracts

Locate and read docs/legacy-audit/API_Contracts.md. Identify:

  • Primary Routes & Sub-routes: Map these to the Next.js App Router (e.g., /api/[resource]/[sub-resource]/route.ts).
  • Legacy Middleware Requirements: Identify routes protected by Passport, custom "owner-only" checks, or roles.

Step 2. Establish Route Architecture

Create the folder structure in src/app/api/ representing the resources. Ensure that:

  • Dynamic Segments (e.g., [id]) are used for resource-specific operations (GET single, PUT, DELETE).
  • Index Segments (e.g., /api/posts/route.ts) are used for collection operations (GET list, POST new).

Step 3. Map Middleware to Guards

Translate legacy Express middleware chains into Modular Route Guards:

  • Authentication: Map requiresLogin to a getServerSession(authOptions) check.
  • Authorization (Ownership): Map resourceAuth.hasAuthorization to a "Resource Ownership Guard" (e.g., if (resource.user_id !== session.user.id) throw Unauthorized).
  • Authorization (Roles): Map role-specific middleware to logic that checks session.user.role.

Step 4. Implement Zod-Backed Request Validation

For every incoming request (POST, PUT, PATCH):

  • Use the Zod Schemas defined in src/lib/models/schema.ts (from Step 3) to validate req.json().
  • Ensure the API returns a standard 422 Unprocessable Entity or 400 Bad Request with a detailed error payload if validation fails.

Step 5. Implement Resource Handlers

Write the GET, POST, PUT, PATCH, and DELETE functions.

  • Strict Response Envelopes: Match the Common Response Envelope identified in the audit (e.g., whether to return a raw object or a wrapped { data: ... }).
  • Pagination & Sorting: Implement skip, limit, and sort parameters to mirror the legacy behavior precisely.
  • Status Code Parity: Match the exact success and error status codes documented in API_Contracts.md.