name: rest-api-node
category: api
public: false
database: optional
hosting_hints:
- vps
- docker
- k8s
- render
- railway
- fly
audit_stack:
- analyze
- code-clean
- cso
- perf
- doc
plugins:
context7: yes
ui-ux-pro-max: no
gstack: no
---
REST API (Node.js)
API backend Node.js pure (Express / Fastify / Koa / Hapi / NestJS), sans frontend inclus.
Detection signals
Strong signals (×3)
- DEP:
package.json contient l'un de : "express", "fastify", "koa", "@hapi/hapi", "@nestjs/core"
- FILE:
src/app.ts OR src/server.ts OR src/main.ts AVEC STRING "listen(" OR "createServer"
Medium signals (×2)
- FILE:
src/routes/ OR src/controllers/ OR src/handlers/
- DEP: ORM —
prisma, typeorm, sequelize, drizzle-orm, mongoose, knex
- DEP: Validation —
zod, joi, yup, class-validator
Weak signals (×1)
- DEP:
jsonwebtoken, passport, bcrypt, argon2
- DEP:
pino, winston, morgan (logging)
- FILE:
Dockerfile
- DIR:
tests/ OR src/__tests__/
Counter-signals (exclusion)
- DEP:
react, next, astro, vue → frontend présent, c'est un fullstack (archetype à créer plus tard) ou SPA+API séparé (monorepo)
- DEP:
react-native → mobile
Implications
- Hébergement : VPS, Docker (Render, Railway, Fly.io), K8s, AWS ECS/Lambda
- Base de données : FORTEMENT PROBABLE — la plupart des API backend ont une DB
- SEO/GEO : N/A (API non indexée)
- Surface sécurité : GRANDE — point d'entrée principal pour attaques (injections, auth, rate limit)
- UI/UX : N/A
Typical pain points
- Pas de versioning API (/api/v1/) — flag CLAUDE.md : "Web APIs always versioned"
- Validation input absente (pas de Zod/Joi/class-validator)
- SQL injections (string concat dans queries brutes)
- Auth faible (pas de hash password, ou MD5/SHA1)
- JWT secret en dur / faible / court
- CORS
* en production
- Pas de rate limiting (
express-rate-limit, @fastify/rate-limit)
- Pas de helmet / CSP
- Secrets dans le repo (.env committé)
- Logs qui fuient PII / tokens
- Pas de health check (
/healthz) pour load balancer
- Pas d'observability (Sentry / OTel)
- Pas de tests (intégration absente)
- Deps obsolètes (npm audit non exécuté)
Interview questions (adaptive)
En plus du set minimum business :
- Framework : Express / Fastify / NestJS / Koa / Hapi ?
- Base de données : PostgreSQL / MySQL / MongoDB / SQLite / autre / aucune ?
- ORM : Prisma / Drizzle / TypeORM / Sequelize / Mongoose / raw SQL ?
- Auth : JWT / OAuth / session / API key / aucun ?
- Consommateurs : frontend propre / mobile / tierce partie / interne ?
- Rate limiting en place ? (oui + comment / non)
- Observability : Sentry / OpenTelemetry / logs seulement / aucun ?
- Tests : unitaires + intégration ? couverture cible ?
- Déploiement : VPS / Docker / Lambda / autre ?
- Documentation API : OpenAPI/Swagger / Postman / aucune ?
Plugin recommendations
- context7 : ON — Prisma/Drizzle/Fastify évoluent vite
- ui-ux-pro-max : OFF
- gstack : OFF (API non navigable)
Example project layout
src/
app.ts
server.ts
routes/
v1/
users.ts
orders.ts
controllers/
services/
middlewares/
schemas/ (Zod / Joi)
tests/
Dockerfile