Sep 2026 Alpha · 39 packages on npm

Pick the packages.
Own the architecture.

ZudoJS is a modular TypeScript framework for Node.js. Dependency injection, HTTP, events, auth, queues and more, split into 39 packages that share one set of contracts. Install one, or all of them.

Build your install

2 of 39
$ npm install @zudojs/core @zudojs/http
Browse all 39 packages →
src/main.ts ▶ RUN
import { createApplication } from "@zudojs/core";
import { createNodeHttpAdapter, createResponseContext } from "@zudojs/http";

const app = await createApplication({
  modules: [UsersModule, OrdersModule],
  runtime: { name: "shop" },
});

const http = createNodeHttpAdapter({
  port: 3000,
  handler: () => createResponseContext().json({ message: "Hello from Zudo" }),
});

await app.start();
await http.start();
$ npx tsx src/main.ts
{"level":"info","message":"Application startup completed",…}
{"level":"info","message":"Runtime bootstrap completed.",…,"modules":["users","orders"]}
$ curl http://127.0.0.1:3000
{"message":"Hello from Zudo"}
Why Zudo

THE FRAMEWORK
YOU ACTUALLY NEED

MODULAR

Use only what you need. 30+ independent packages. No bloat. No forced dependencies. Each package solves one problem.

npm install @zudojs/core

TYPE SAFE

End-to-end type safety. From request input to database output. Branded types. Discriminated unions. No any.

strict: true

EXPLICIT DI

Token-based dependency injection. Singleton, scoped, transient lifecycles. Circular dependency detection. Interface-first design.

container.resolve(Token)
Architecture

FIVE LAYERS.
ONE SYSTEM.

Layer 5 — Developer Experience
testing, docs, observability
Layer 4 — Transport
http, cli
Layer 3 — Application Architecture
core, cqrs, auth, runtime
Layer 2 — Runtime Primitives
events, messaging, lifecycle, transactions
Layer 1 — Foundation
errors, types, constants, container, logger

DEPENDENCIES FLOW INWARD

Foundation packages have no internal dependencies. Higher-level packages depend on lower-level ones. No package depends on a higher tier. This prevents circular dependencies and ensures changes never break foundation code.

INTERFACE FIRST

Interfaces are defined before implementations. Consumers depend on abstractions, not concrete classes. Swap implementations without changing consumers.

EXPLICIT LIFECYCLE

Every component follows a strict lifecycle: register → install → initialize → start → running → stop → dispose. Coordinated by the runtime, not left to chance.

Full Architecture →
Quick Start

THREE STEPS.
THAT'S IT.

1

INSTALL THE CLI

$ npm install -g zudojs-cli
2

CREATE YOUR PROJECT

$ zudojs create my-app
$ cd my-app
3

START BUILDING

$ npm run dev
src/modules/users.module.ts
import { defineModule } from "@zudojs/core";

export const UsersModule = defineModule({
  id: "users",
  name: "Users",
  dependencies: ["database"],

  factory: () => ({
    id: "users",
    name: "Users",

    async onInitialize() {
      // open connections, warm caches
    },
    async onShutdown() {
      // release everything you opened
    },
  }),
});
Sponsorship

SUPPORT THE ECOSYSTEM

ZudoJS is built in the open and supported by developers and organizations who believe in a better framework ecosystem. Your sponsorship helps maintain core development, documentation, security updates, and community infrastructure.

Ecosystem Structure

ZudoJS Ecosystem
├── ZudoJS Core
├── ZudoJS CLI
├── Official Packages
├── Plugins
├── Integrations
├── Documentation
├── Developer Tools
└── Community

STOP CHOOSING.
START BUILDING.

Zudo gives you the building blocks. You decide the architecture. No opinions imposed. No magic hidden.