node package manager


@nicolasparada/web-framework npm version dependencies

Minimalistic Node.js HTTP Web Framework.

const framework = require('@nicolasparada/web-framework')
const app = framework()
const getNameMiddleware = (req, next) => next(
const hello = name => `Hello, ${name}!`
app.get('/hello/:name', getNameMiddleware, hello)
app.listen(80, '', () => {
  console.log('Server running at http://localhost/hello/world 🚀')

This framework sets trivials headers for you, so you can simply return any value, but if you want to respond with a custom status code or headers, make sure to return a object with a statusCode number and a headers plain object. body can take any value.

app.get('/advanced', () => ({
  statusCode: 418,
  headers: {
    foo: 'bar'

You should have your tipical routing capabilities: get, post, put, patch, delete and options. It uses the path-to-regexp engine to parse the pattern (same as express or react-router).

match allows you to catch various HTTP verbs.

app.match(['PATCH', 'PUT'], '/pattern', updateHandler)

any catches all HTTP verbs.

requestHandler is useful if you want to use your own server. Just attach it to the request event.

const fs = require('fs')
const https = require('https')
const framework = require('@nicolasparada/web-framework')
const app = framework()
const options = {
  key: fs.readFileSync('key.pem'),
  cert: fs.readFileSync('cert.pem')
const server = https.createServer(options)
server.on('request', app.handleRequest)
server.listen(443, '', () => {
  console.log('Server running at 🔒 https://localhost/ 🚀')

listen returns http.Server.

You can register global middlewares passing them to the framework constructor.

const delay = ms => new Promise(resolve => {
  setTimeout(resolve, ms)
const delayMiddleware = async (req, next) => {
  const ms = parseInt(req.query.delay, 10)
  await delay(ms)
  return next(req)
const app = framework([delayMiddleware])

Tip! You can add middlewares later in the pipeline thanks to async/await.

const afterMiddleware = async (req, next) => {
  const res = await next(req)
  // Do something here 
  return res