Performance-first framework object-oriented for Bun
108
stars
462
commits
TypeScript
primary language
Sep 2, 2026
updated
An opinionated application framework and ORM ecosystem for Bun and TypeScript.
Documentation · Getting started · GitHub
Carno.js is an opinionated application framework for Bun, shaped for teams that want the familiar structure of NestJS and the enterprise patterns popularized by Spring in the Java ecosystem.
It combines a fast Bun-native HTTP core, dependency injection, decorators, validation, middleware, lifecycle hooks, and optional packages for data access, queues, scheduling, static files, views, WebSockets, and logging. The goal is to keep applications organized as they grow, with clear boundaries between controllers, services, modules, and infrastructure.
This repository is the monorepo for the Carno.js ecosystem. The README is intentionally concise; feature guides, examples, and API details live in the documentation site.
| Package | Purpose |
|---|---|
@carno.js/core | HTTP framework, routing, dependency injection, middleware, validation, lifecycle hooks, and testing utilities. |
@carno.js/orm | Lightweight SQL ORM for PostgreSQL and MySQL, including repositories, query builder, relationships, migrations, identity map, and sessions. |
@carno.js/queue | Background job processing built around BullMQ. |
@carno.js/schedule | Cron, interval, and timeout scheduling. |
@carno.js/static | Static file serving for Bun applications. |
@carno.js/views | Optional MVC views with Handlebars, EJS, Pug, or a custom engine. |
@carno.js/websocket | WebSocket gateways, rooms, namespaces, and broadcasting. |
@carno.js/logger | Logging utilities for Carno.js applications. |
@carno.js/client | Type-safe HTTP client generated from controllers. |
@carno.js/cli | Command-line tools, including ORM migration workflows. |
Install the core package:
bun install @carno.js/core
On Windows, wrap scoped package names in quotes:
bun install "@carno.js/core"
Then follow the full setup guide in the documentation:
The documentation site is the source of truth for usage examples and API guidance:
Install dependencies:
bun install
Run the TypeScript build:
npm run build
Run tests:
bun test
Run ORM tests against PostgreSQL or MySQL:
npm run test:postgres
npm run test:mysql
The site is built with Docusaurus and lives in docs/carno.
cd docs/carno
npm install
npm run start
Use the site for new guides, examples, and API explanations. Keep this README focused on project positioning, package discovery, and contributor orientation.
Issues, pull requests, bug reports, and documentation improvements are welcome. Before opening a large change, prefer starting with an issue or discussion so the scope and expected behavior are clear.
Carno.js is released under the MIT License. See LICENSE for details.
TypeScript
100.0%
Performance-first framework object-oriented for Bun
108
stars
462
commits
TypeScript
primary language
Sep 2, 2026
updated
An opinionated application framework and ORM ecosystem for Bun and TypeScript.
Documentation · Getting started · GitHub
Carno.js is an opinionated application framework for Bun, shaped for teams that want the familiar structure of NestJS and the enterprise patterns popularized by Spring in the Java ecosystem.
It combines a fast Bun-native HTTP core, dependency injection, decorators, validation, middleware, lifecycle hooks, and optional packages for data access, queues, scheduling, static files, views, WebSockets, and logging. The goal is to keep applications organized as they grow, with clear boundaries between controllers, services, modules, and infrastructure.
This repository is the monorepo for the Carno.js ecosystem. The README is intentionally concise; feature guides, examples, and API details live in the documentation site.
| Package | Purpose |
|---|---|
@carno.js/core | HTTP framework, routing, dependency injection, middleware, validation, lifecycle hooks, and testing utilities. |
@carno.js/orm | Lightweight SQL ORM for PostgreSQL and MySQL, including repositories, query builder, relationships, migrations, identity map, and sessions. |
@carno.js/queue | Background job processing built around BullMQ. |
@carno.js/schedule | Cron, interval, and timeout scheduling. |
@carno.js/static | Static file serving for Bun applications. |
@carno.js/views | Optional MVC views with Handlebars, EJS, Pug, or a custom engine. |
@carno.js/websocket | WebSocket gateways, rooms, namespaces, and broadcasting. |
@carno.js/logger | Logging utilities for Carno.js applications. |
@carno.js/client | Type-safe HTTP client generated from controllers. |
@carno.js/cli | Command-line tools, including ORM migration workflows. |
Install the core package:
bun install @carno.js/core
On Windows, wrap scoped package names in quotes:
bun install "@carno.js/core"
Then follow the full setup guide in the documentation:
The documentation site is the source of truth for usage examples and API guidance:
Install dependencies:
bun install
Run the TypeScript build:
npm run build
Run tests:
bun test
Run ORM tests against PostgreSQL or MySQL:
npm run test:postgres
npm run test:mysql
The site is built with Docusaurus and lives in docs/carno.
cd docs/carno
npm install
npm run start
Use the site for new guides, examples, and API explanations. Keep this README focused on project positioning, package discovery, and contributor orientation.
Issues, pull requests, bug reports, and documentation improvements are welcome. Before opening a large change, prefer starting with an issue or discussion so the scope and expected behavior are clear.
Carno.js is released under the MIT License. See LICENSE for details.
TypeScript
100.0%