carnojs/carno.js

Performance-first framework object-oriented for Bun

108

stars

462

commits

TypeScript

primary language

Sep 2, 2026

updated

carnojs.github.io/carno.js/
bun
framework
orm

README

Carno.js logo

Carno.js

An opinionated application framework and ORM ecosystem for Bun and TypeScript.

Documentation · Getting started · GitHub

Bun native TypeScript first MIT license

Overview

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.

Why Carno.js

  • Enterprise-oriented structure: controllers, services, lifecycle hooks, modules, and dependency injection are first-class patterns for maintainable applications.
  • Inspired by proven ecosystems: brings a NestJS-like developer experience and Spring-style application architecture to Bun and TypeScript.
  • Fast by design: built around Bun's runtime and HTTP server, keeping performance intrinsic without making your architecture disposable.
  • TypeScript first: decorators, typed controllers, dependency injection, and DTO validation are core concepts.
  • Modular by default: install only the packages your application needs.
  • Application-ready: includes packages for ORM, queues, scheduling, static assets, WebSockets, testing, and logging.

Packages

PackagePurpose
@carno.js/coreHTTP framework, routing, dependency injection, middleware, validation, lifecycle hooks, and testing utilities.
@carno.js/ormLightweight SQL ORM for PostgreSQL and MySQL, including repositories, query builder, relationships, migrations, identity map, and sessions.
@carno.js/queueBackground job processing built around BullMQ.
@carno.js/scheduleCron, interval, and timeout scheduling.
@carno.js/staticStatic file serving for Bun applications.
@carno.js/viewsOptional MVC views with Handlebars, EJS, Pug, or a custom engine.
@carno.js/websocketWebSocket gateways, rooms, namespaces, and broadcasting.
@carno.js/loggerLogging utilities for Carno.js applications.
@carno.js/clientType-safe HTTP client generated from controllers.
@carno.js/cliCommand-line tools, including ORM migration workflows.

Getting Started

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:

Installation and setup

Documentation

The documentation site is the source of truth for usage examples and API guidance:

Repository Workflow

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

Documentation Site

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.

Contributing

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.

License

Carno.js is released under the MIT License. See LICENSE for details.

Contributors

mlusca

448 commits

dependabot[bot]

13 commits

Copilot

1 commits

carnojs/carno.js

Performance-first framework object-oriented for Bun

108

stars

462

commits

TypeScript

primary language

Sep 2, 2026

updated

carnojs.github.io/carno.js/
bun
framework
orm

README

Carno.js logo

Carno.js

An opinionated application framework and ORM ecosystem for Bun and TypeScript.

Documentation · Getting started · GitHub

Bun native TypeScript first MIT license

Overview

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.

Why Carno.js

  • Enterprise-oriented structure: controllers, services, lifecycle hooks, modules, and dependency injection are first-class patterns for maintainable applications.
  • Inspired by proven ecosystems: brings a NestJS-like developer experience and Spring-style application architecture to Bun and TypeScript.
  • Fast by design: built around Bun's runtime and HTTP server, keeping performance intrinsic without making your architecture disposable.
  • TypeScript first: decorators, typed controllers, dependency injection, and DTO validation are core concepts.
  • Modular by default: install only the packages your application needs.
  • Application-ready: includes packages for ORM, queues, scheduling, static assets, WebSockets, testing, and logging.

Packages

PackagePurpose
@carno.js/coreHTTP framework, routing, dependency injection, middleware, validation, lifecycle hooks, and testing utilities.
@carno.js/ormLightweight SQL ORM for PostgreSQL and MySQL, including repositories, query builder, relationships, migrations, identity map, and sessions.
@carno.js/queueBackground job processing built around BullMQ.
@carno.js/scheduleCron, interval, and timeout scheduling.
@carno.js/staticStatic file serving for Bun applications.
@carno.js/viewsOptional MVC views with Handlebars, EJS, Pug, or a custom engine.
@carno.js/websocketWebSocket gateways, rooms, namespaces, and broadcasting.
@carno.js/loggerLogging utilities for Carno.js applications.
@carno.js/clientType-safe HTTP client generated from controllers.
@carno.js/cliCommand-line tools, including ORM migration workflows.

Getting Started

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:

Installation and setup

Documentation

The documentation site is the source of truth for usage examples and API guidance:

Repository Workflow

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

Documentation Site

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.

Contributing

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.

License

Carno.js is released under the MIT License. See LICENSE for details.

Contributors

mlusca

448 commits

dependabot[bot]

13 commits

Copilot

1 commits

Languages

TypeScript

100.0%