← ClaudeAtlas

nodejs-backendlisted

Node.js backend patterns: framework selection, layered architecture, TypeScript, validation, error handling, security, production deployment. Use when building REST APIs, Express/Fastify servers, microservices, or server-side TypeScript.
iliaal/whetstone · ★ 20 · API & Backend · score 81
Install: claude install-skill iliaal/whetstone
# Node.js Backend ## Framework Selection | Context | Choose | Why | |---------|--------|-----| | Edge/Serverless | Hono | Zero-dep, fastest cold starts | | Performance API | Fastify | 2-3x faster than Express, built-in schema validation | | Enterprise/team | NestJS | DI, decorators, structured conventions | | Legacy/ecosystem | Express | Most middleware, widest adoption | Ask user: deployment target, cold start needs, team experience, existing codebase. ## Architecture ``` src/ ├── routes/ # HTTP: parse request, call service, format response ├── middleware/ # Auth, validation, rate limiting, logging ├── services/ # Business logic (no HTTP types) ├── repositories/ # Data access only (queries, ORM) ├── config/ # Env, DB pool, constants └── types/ # Shared TypeScript interfaces ``` - Routes never contain business logic - Services never import Request/Response - Repositories never throw HTTP errors - For scripts/prototypes: single file is fine — ask "will this grow?" ## TypeScript Rules - Use `import type { }` for type-only imports — eliminates runtime overhead - Prefer `interface` for object shapes (2-5x faster type resolution than intersections) - Prefer `unknown` over `any` — forces explicit narrowing - Use `z.infer<typeof Schema>` as single source of truth — never duplicate types and schemas - Minimize `as` assertions — use type guards instead - Add explicit return types to exported functions (faster declaration emit) - Unty