Node.js
Entry point
Section titled “Entry point”// server.tsimport { nodeAdapter } from 'lacis/adapters'
const createServer = nodeAdapter.createHandler('./routes')
createServer({ port: 3000, isDev: process.env.NODE_ENV !== 'production',})Config options
Section titled “Config options”| Option | Type | Default | Description |
|---|---|---|---|
port | number | 3000 | Port to listen on |
isDev | boolean | false | Enables dev mode |
defaultHeaders | Record<string, string> | — | Headers added to every response |
httpsOptions | object | — | TLS config |
cluster | object | — | Multi-process clustering |
monitoring | object | { enabled: false } | Dev performance monitoring |
cors | CorsConfig | — | CORS policy |
middleware | object | — | beforeRequest, afterRequest, onError hooks |
hooks | object | — | onNotFound, onShutdown hooks |
Running in production
Section titled “Running in production”-
Build your TypeScript:
Terminal window npm run build -
Start the server:
Terminal window node dist/server.js -
Use a process manager for resilience:
Terminal window pm2 start dist/server.js --name my-api
import { readFileSync } from 'fs'import { nodeAdapter } from 'lacis/adapters'
const createServer = nodeAdapter.createHandler('./routes')
createServer({ port: 443, httpsOptions: { cert: readFileSync('./certs/cert.pem'), key: readFileSync('./certs/key.pem'), },})Cluster mode
Section titled “Cluster mode”Uses Node’s built-in cluster module. The primary process manages workers and restarts any that crash.
createServer({ port: 3000, cluster: { enabled: true, workers: 4, // defaults to os.cpus().length },})Dev monitoring
Section titled “Dev monitoring”When isDev: true and monitoring.enabled: true, a /health endpoint returns live performance metrics:
createServer({ isDev: true, monitoring: { enabled: true, sampleInterval: 5000, reportInterval: 60000, thresholds: { cpu: 80, memory: 512, responseTime: 500, errorRate: 5 }, },})