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.
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();
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)
FIVE LAYERS.
ONE SYSTEM.
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.
30+ PACKAGES.
PICK WHAT YOU NEED.
CORE BUILDING BLOCKS
errors, types, constants, container, logger, crypto, validation, schema, config, middleware, serialization
RUNTIME INFRASTRUCTURE
events, messaging, lifecycle, transactions, cache, storage, queue, scheduler, adapters, database, observability
APP ARCHITECTURE
core, cqrs, auth, runtime, openapi, rpc, api
EXTERNAL INTERFACES
http, cli
SECURITY LAYER
security, crypto, auth, permissions
PLATFORM SERVICES
observability, tenancy, feature-flags, adapters
THREE STEPS.
THAT'S IT.
INSTALL THE CLI
CREATE YOUR PROJECT
$ cd my-app
START BUILDING
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 }, }), });
BUILT IN
THE OPEN.
Every package, every decision, every rule is public. Read the source, file an issue, or ship a fix.
GITHUB
One monorepo. 39 packages. Issues, discussions and pull requests are all in one place.
NPM
Every package is published under one scope, versioned together, and installable on its own.
PACKAGE RULES
The written standard every package is held to: structure, naming, errors, tests and docs.
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
STOP CHOOSING.
START BUILDING.
Zudo gives you the building blocks. You decide the architecture. No opinions imposed. No magic hidden.