| name | nodejs-best-practices |
| description | Node.js best practices including error handling, async patterns, security, and project structure. |
Node.js Best Practices
Project Structure
src/
├── controllers/ # HTTP request handlers
├── services/ # Business logic (Pure functions)
├── repositories/ # Data access (Drizzle/SQLite)
├── middleware/ # Hono/Fastify middleware
├── utils/ # AbortController & Stream helpers
├── config/ # Zod-validated configuration
└── index.ts # Entry point (Native TS)
Error Handling
class AppError extends Error {
constructor(
public statusCode: number,
public code: string,
message: string
) {
super(message);
}
}
const asyncHandler = (fn: RequestHandler) => (
req: Request, res: Response, :
) => .((req, res, next)).(next);
app.( {
statusCode = err ? err. : ;
res.(statusCode).({
: + (err ? err. : ),
: err.,
: statusCode
});
});