A minimal, highly performant middleware PSR-15 inspired function based micro framework built with as little complexity as possible, aimed primarily at those developers who want to understand all the vendors they use.
npm install @chubbyts/chubbyts-framework














A minimal, highly [performant][2] middleware [PSR-15][3] inspired function based micro framework built with as little complexity as possible, aimed primarily at those developers who want to understand all the vendors they use.
* node: 20
* [@chubbyts/chubbyts-dic-types][4]: ^2.0.1
* [@chubbyts/chubbyts-http-error][5]: ^3.0.1
* [@chubbyts/chubbyts-log-types][7]: ^3.0.1
* [@chubbyts/chubbyts-throwable-to-error][8]: ^2.0.2
* [@chubbyts/chubbyts-undici-server][9]: ^1.0.1
Through NPM as [@chubbyts/chubbyts-framework][1].
``sh`
npm i \
@chubbyts/chubbyts-framework-router-path-to-regexp@^3.0.0 \
@chubbyts/chubbyts-framework@^3.0.2 \
@chubbyts/chubbyts-undici-server@^1.0.1
`ts
import { STATUS_CODES } from 'node:http';
import { createPathToRegexpRouteMatcher }
from '@chubbyts/chubbyts-framework-router-path-to-regexp/dist/path-to-regexp-router';
import type { ServerRequest } from '@chubbyts/chubbyts-undici-server/dist/server';
import { Response } from '@chubbyts/chubbyts-undici-server/dist/server';
import { createApplication } from '@chubbyts/chubbyts-framework/dist/application';
import { createErrorMiddleware }
from '@chubbyts/chubbyts-framework/dist/middleware/error-middleware';
import { createRouteMatcherMiddleware }
from '@chubbyts/chubbyts-framework/dist/middleware/route-matcher-middleware';
import { createGetRoute } from '@chubbyts/chubbyts-framework/dist/router/route';
import { createRoutesByName } from '@chubbyts/chubbyts-framework/dist/router/routes-by-name';
const app = createApplication([
createErrorMiddleware(true),
createRouteMatcherMiddleware(
createPathToRegexpRouteMatcher(
createRoutesByName([
createGetRoute({
path: '/hello/:name',
name: 'hello',
handler: async (serverRequest: ServerRequest<{name: string}>): Promise
return new Response(Hello, ${serverRequest.attributes.name}, {`
status: 200,
statusText: STATUS_CODES[200],
headers: {'content-type': 'text/plain'}
});
},
}),
]),
),
),
]);
#### node
Running the application via the standard node http implementation.
`sh`
npm i @chubbyts/chubbyts-undici-server-node@^1.0.1
Check the [Usage][10] section.
#### uWebSockets
Running the application via the uWebSockets http implementation.
`sh``
npm i @chubbyts/chubbyts-undici-server-uwebsockets@^1.0.0
Check the [Usage][11] section.
* [@chubbyts/chubbyts-undici-api][20]
* [@chubbyts/chubbyts-undici-cors][21]
* [@chubbyts/chubbyts-undici-multipart][22]
* [@chubbyts/chubbyts-undici-static-file][23]
* [chubbyts/chubbyts-framework-skeleton][30]
* [chubbyts/chubbyts-petstore][31]
2025 Dominik Zogg
[1]: https://www.npmjs.com/package/@chubbyts/chubbyts-framework
[2]: https://web-frameworks-benchmark.netlify.app/result
[3]: https://www.php-fig.org/psr/psr-15/#2-interfaces
[4]: https://www.npmjs.com/package/@chubbyts/chubbyts-dic-types
[5]: https://www.npmjs.com/package/@chubbyts/chubbyts-http-error
[6]: https://www.npmjs.com/package/@chubbyts/chubbyts-http-types
[7]: https://www.npmjs.com/package/@chubbyts/chubbyts-log-types
[8]: https://www.npmjs.com/package/@chubbyts/chubbyts-throwable-to-error
[9]: https://www.npmjs.com/package/@chubbyts/chubbyts-undici-server
[10]: https://www.npmjs.com/package/@chubbyts/chubbyts-undici-server-node#Usage
[11]: https://www.npmjs.com/package/@chubbyts/chubbyts-undici-server-uwebsockets#Usage
[20]: https://www.npmjs.com/package/@chubbyts/chubbyts-undici-api
[21]: https://www.npmjs.com/package/@chubbyts/chubbyts-undici-cors
[22]: https://www.npmjs.com/package/@chubbyts/chubbyts-undici-multipart
[23]: https://www.npmjs.com/package/@chubbyts/chubbyts-undici-static-file
[30]: https://github.com/chubbyts/chubbyts-framework-skeleton
[31]: https://github.com/chubbyts/chubbyts-petstore