v1.0.0 cosmicstack-labs
Node.js Patterns
Async control flow, error handling, module design, streams, and production hardening
View source0 downloads
nodejsbackendjavascriptasyncserver
Node.js Patterns#
Production-grade Node.js backend patterns.
Async Patterns#
Prefer Async/Await#
// Good
async function getUser(id) {
const user = await db.findUser(id);
return user;
}
// Avoid raw callbacks or.then() chainsParallel Execution#
// Sequential (slow)
const user = await fetchUser(id);
const posts = await fetchPosts(id);
// Parallel (fast)
const [user, posts] = await Promise.all([
fetchUser(id),
fetchPosts(id),
]);Error Handling#
Global Handler#
process.on('uncaughtException', (err) => {
console.error('Uncaught:', err);
// Graceful shutdown
server.close(() => process.exit(1));
});
process.on('unhandledRejection', (reason) => {
console.error('Unhandled Rejection:', reason);
});Express Error Middleware#
app.use((err, req, res, next) => {
const status = err.status || 500;
res.status(status).json({
error: err.message,
...(process.env.NODE_ENV === 'development' && { stack: err.stack }),
});
});Module Design#
- Single responsibility per module
- Export a class or factory function, not plain objects
- Use dependency injection for testability
- Prefer CommonJS (require) or ESM (import), consistent throughout
Production Hardening#
- Cluster mode for multi-core
- Process manager (PM2) with auto-restart
- Health check endpoints
- Graceful shutdown (SIGTERM handler)
- Memory limit monitoring
- Structured logging (pino/winston)
More in Backend
View all →Backendv1.0.0
Python Patterns
Python best practices including type hints, async patterns, testing, and project structure
pythontype-hintsasync
Backendv1.0.0
API Design
REST and GraphQL API design principles, versioning, error handling, and documentation patterns
apirestgraphql
Backendv1.0.0
Authentication & Authorization
JWT, OAuth2, SAML, session management, RBAC, ABAC, and MFA implementation
authenticationauthorizationsecurity