Skip to content

Node.js

// server.ts
import { nodeAdapter } from 'lacis/adapters'
const createServer = nodeAdapter.createHandler('./routes')
createServer({
port: 3000,
isDev: process.env.NODE_ENV !== 'production',
})
OptionTypeDefaultDescription
portnumber3000Port to listen on
isDevbooleanfalseEnables dev mode
defaultHeadersRecord<string, string>Headers added to every response
httpsOptionsobjectTLS config
clusterobjectMulti-process clustering
monitoringobject{ enabled: false }Dev performance monitoring
corsCorsConfigCORS policy
middlewareobjectbeforeRequest, afterRequest, onError hooks
hooksobjectonNotFound, onShutdown hooks
  1. Build your TypeScript:

    Terminal window
    npm run build
  2. Start the server:

    Terminal window
    node dist/server.js
  3. 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'),
},
})

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
},
})

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 },
},
})