# ZudoJS > ZudoJS (Zudo) is a modular TypeScript framework for Node.js. It is split into 39 independent @zudojs/* packages (dependency injection, configuration, HTTP, events, messaging, CQRS, auth, permissions, database, cache, queues, observability and more) that share one set of contracts, so an application installs only the packages it uses. Facts an agent needs before writing ZudoJS code: - Runtime: Node.js 24 or newer. Packages are ESM only, so the consuming project needs `"type": "module"`. Written for TypeScript in strict mode. - Install only the packages you use: `npm install @zudojs/core @zudojs/http`. Each package page ends with a complete export index generated from the package source. - Scaffold a new project: `npx zudojs-cli create my-app`. - Every docs page has a Markdown copy at the same URL with `.md` appended (for example [packages-http.md](https://zudojs.oyinlola.site/docs/packages-http.md)). [llms-full.txt](https://zudojs.oyinlola.site/llms-full.txt) is all of them in one file. - Source code: https://github.com/oyinlola-tech/zudo. npm org: https://www.npmjs.com/org/zudojs. - Logo and brand assets: [/brand](https://zudojs.oyinlola.site/brand.md) is the page; [brand.json](https://zudojs.oyinlola.site/assets/brand/brand.json) is the same kit as data (every file's URL, format, pixel size and intended background, plus the palette, the usage rules and the licence). The mark is [zudo-mark.svg](https://zudojs.oyinlola.site/assets/zudo-mark.svg); use the `-dark` files on dark backgrounds. ## Learn (course, in order) - [Learn ZudoJS — from JavaScript to production backends](https://zudojs.oyinlola.site/learn/index.md): A free, hands-on path from your first line of JavaScript to Node.js, backend fundamentals, TypeScript and production ZudoJS applications. Every example runs in your browser or on your computer, with the real output shown. - [Welcome to the learning path](https://zudojs.oyinlola.site/learn/welcome.md): What this free course is, who it is for, what you will build, and how the lessons and the terminal on each page work. - [Your developer environment](https://zudojs.oyinlola.site/learn/dev-environment.md): Meet the tools a developer uses every day, the terminal, a code editor and the browser's developer tools, and learn to move around your files by typing commands. - [How programs run](https://zudojs.oyinlola.site/learn/how-programs-run.md): What happens between the code you type and the result on the screen, what JavaScript engines and runtimes are, and the difference between a syntax error and a runtime error. - [How the web works](https://zudojs.oyinlola.site/learn/how-the-web-works.md): Follow a request from your browser to a server and back, and learn what clients, servers, IP addresses, DNS, ports, HTTP, HTTPS, APIs and databases are. - [Set up your computer](https://zudojs.oyinlola.site/learn/setup.md): Install Node.js, try JavaScript in the Node.js REPL, write and run your first program, and turn its folder into a project. - [Values, variables and types](https://zudojs.oyinlola.site/learn/js-values.md): Store values in variables with const and let, meet the seven primitive types, and learn how JavaScript handles text, numbers, true and false, and "no value". - [Operators](https://zudojs.oyinlola.site/learn/js-operators.md): Calculate, compare and combine values with JavaScript's operators, give missing values safe defaults with ?? and ?., and avoid the classic precedence traps. - [Making decisions](https://zudojs.oyinlola.site/learn/js-conditions.md): Let your program choose what to do with if, else if and else, the ternary operator and switch, and keep decisions readable with guard clauses. - [Loops](https://zudojs.oyinlola.site/learn/js-loops.md): Repeat work with for, while, do...while, for...of and for...in, control a loop with break and continue, and build a number guessing game. - [Functions](https://zudojs.oyinlola.site/learn/js-functions.md): Package logic into reusable functions, pass values in and get results out, pass functions to other functions, and meet scope, closures and recursion. - [Arrays](https://zudojs.oyinlola.site/learn/js-arrays.md): Keep ordered lists in arrays, add and remove items, search them, and transform them with map, filter, reduce and sort, then build a small student management system. - [Objects and JSON](https://zudojs.oyinlola.site/learn/js-data.md): Group related values into objects, read and change their properties, copy and take them apart safely, and turn them into JSON, the text format every API speaks. - [Modern JavaScript](https://zudojs.oyinlola.site/learn/js-modern.md): Take a piece of old-style JavaScript and rewrite it step by step with the modern syntax a backend uses every day, fixing real bugs on the way. - [Scope and how code runs](https://zudojs.oyinlola.site/learn/js-scope.md): Learn where a name can be used, how closures remember values, why some names exist before their line runs, and how the call stack and the heap work, so you can read error messages and debug real programs. - [this, prototypes and classes](https://zudojs.oyinlola.site/learn/js-classes.md): Understand what this means inside a method and why it gets lost, how objects share methods through prototypes, and how to write classes with private fields, getters, static methods and inheritance. - [Handling errors](https://zudojs.oyinlola.site/learn/js-errors.md): Tell syntax, runtime and logic errors apart, throw and catch errors, read an Error object's name, message, cause and stack, write your own error classes, and turn errors into safe API answers. - [Asynchronous JavaScript](https://zudojs.oyinlola.site/learn/js-async.md): Learn why a backend waits without blocking, how callbacks, promises and async/await work, how errors travel through asynchronous code, and how to run work in sequence or in parallel. - [Modules](https://zudojs.oyinlola.site/learn/js-modules.md): Split a program into files with ES modules, understand the older CommonJS require, choose between named and default exports, and avoid circular dependencies. - [What Node.js is](https://zudojs.oyinlola.site/learn/node-runtime.md): Learn what Node.js adds to JavaScript, how its event loop decides what runs next, and how a program talks to the computer through process, exit codes and environment variables. - [Files, paths and your computer](https://zudojs.oyinlola.site/learn/node-apis.md): Use Node.js's built-in modules to build safe file paths, read and write files and folders, learn about the computer, make random ids and hashes, and announce events. Then save tasks to a JSON file. - [Streams and buffers](https://zudojs.oyinlola.site/learn/node-streams.md): Learn what the bytes behind text really are, then handle data piece by piece with readable, writable and transform streams, pipeline and readline, so a program can process files far bigger than its memory. - [npm and packages](https://zudojs.oyinlola.site/learn/npm-packages.md): Install, update and remove packages with npm, read package.json and package-lock.json, understand version ranges, write npm scripts, share code with workspaces, see what publishing would send, and keep the packages you install safe. - [An HTTP server with no framework](https://zudojs.oyinlola.site/learn/node-http.md): Build a web server with nothing but Node.js's node:http module. Read the method, path, headers, query and body of each request, send JSON back with the right status code, and route requests by hand. - [Build a plain Node.js Task API](https://zudojs.oyinlola.site/learn/node-task-api.md): Finish a complete Task API with no framework, split into modules, with middleware, centralized error handling, API-key protection and configuration from the environment. Then look honestly at what hurts when it grows to 20,000 lines. - [HTTP in depth](https://zudojs.oyinlola.site/learn/http-deep.md): See the exact bytes of an HTTP request and response, then learn the parts every backend developer uses daily: headers, cookies, content types, methods and status codes. - [Designing a REST API](https://zudojs.oyinlola.site/learn/rest-design.md): Turn the Task API into a well-designed REST API: resources and URLs, a written contract, filtering, sorting, offset and cursor pagination, versioning and one consistent error format. - [How databases work](https://zudojs.oyinlola.site/learn/databases.md): Why a backend keeps its data in a database, how relational databases organise it into tables and relationships, and what keys, constraints, indexes, transactions and migrations do, with real PostgreSQL running inside Node.js. - [SQL with PostgreSQL](https://zudojs.oyinlola.site/learn/sql-basics.md): Install PostgreSQL with an installer or with Docker, talk to it with psql, and learn the SQL every backend uses: create, insert, select, update and delete, with filters, sorting and paging, and parameterized queries that stop SQL injection. - [Joins, grouping and transactions](https://zudojs.oyinlola.site/learn/sql-advanced.md): Combine tables with joins, summarise data with group by and aggregates, filter groups with having, nest queries, control transactions yourself, measure queries with explain analyze, and connect Node.js to a real PostgreSQL server. - [Git and GitHub](https://zudojs.oyinlola.site/learn/git.md): Track every change to your code with Git, work on branches, merge them and resolve a real conflict, keep node_modules and secrets out of your repository, and share your work through GitHub with remotes and pull requests. - [Testing fundamentals](https://zudojs.oyinlola.site/learn/testing-basics.md): Why automated tests matter, the difference between unit, integration and end-to-end tests, and how to write them with node:assert and Node's built-in test runner, including mocks, spies, isolated tests and a fresh test database. Then the same tests in Vitest. - [Why TypeScript exists](https://zudojs.oyinlola.site/learn/ts-setup.md): See a bug that JavaScript runs without complaint, install TypeScript, write a tsconfig.json, and learn the three ways to run TypeScript on Node.js 24. - [Basic types](https://zudojs.oyinlola.site/learn/ts-types.md): The everyday types of TypeScript - strings, numbers, booleans, arrays, tuples and object types - plus any vs unknown, null and undefined under strict mode, void, and never for exhaustive checks. - [Typing functions](https://zudojs.oyinlola.site/learn/ts-functions.md): Give functions parameter and return types, use optional, default and rest parameters, describe functions and callbacks as types, type async functions with Promise, and meet overloads. - [Interfaces, unions and literal types](https://zudojs.oyinlola.site/learn/ts-objects.md): Name object shapes with interfaces and type aliases, mark properties optional or readonly, extend and combine shapes, and model data that can take several forms with unions, literal types and discriminated unions. - [Generics](https://zudojs.oyinlola.site/learn/ts-generics.md): Write one function, interface or class that works for many types without losing type safety, set rules with constraints and keyof, give type parameters defaults, and build a Result type and a generic repository. - [Advanced and utility types](https://zudojs.oyinlola.site/learn/ts-advanced.md): Build new types from existing ones with keyof, typeof, indexed access, mapped, conditional and template literal types, and use the built-in utility types (Partial, Pick, Omit, Record, ReturnType, Awaited and more) to keep one source of truth. - [Classes in TypeScript](https://zudojs.oyinlola.site/learn/ts-classes.md): Declare typed class properties, use parameter properties and access modifiers, compare private with #private, write abstract classes and classes that implement interfaces, and wire classes together with constructor injection. - [Modules in TypeScript](https://zudojs.oyinlola.site/learn/ts-modules.md): Split a TypeScript project into files, import types with import type, see why verbatimModuleSyntax exists, write .js in import paths, and understand how NodeNext resolution, "type" - "module" and the "exports" field fit together. - [TypeScript and JavaScript together](https://zudojs.oyinlola.site/learn/ts-runtime.md): See exactly what TypeScript becomes when it runs, why types cannot check outside data, and how to close that gap by hand with type guards, assertion functions and a validator that returns a Result. - ["BookStore API: HTTP and routing"](https://zudojs.oyinlola.site/learn/bookstore-http.md): Start a TypeScript backend with no framework at all. Set up the folder, read configuration from the environment, write a small typed router, JSON helpers and error responses, and serve books and authors over HTTP. - ["BookStore API: validation and PostgreSQL"](https://zudojs.oyinlola.site/learn/bookstore-data.md): Check every request body by hand with type guards, move the BookStore data into PostgreSQL with PGlite, write repositories with parameterized SQL, and map typed errors to 400, 404 and 409. - ["BookStore API: authentication and tests"](https://zudojs.oyinlola.site/learn/bookstore-auth.md): Add users to the BookStore. Hash passwords with scrypt, issue signed log-in tokens with a secret from the environment, protect the order routes, test it all with node:test, and then look honestly at what this hand-built backend now gets wrong. - [Backend architecture](https://zudojs.oyinlola.site/learn/backend-architecture.md): Give backend code a shape. Learn controllers, services, repositories, models and DTOs, middleware, dependency injection and configuration, the difference between domain, application and infrastructure code, and which way dependencies must point. Then refactor the BookStore's orders into those layers. - [What a framework does](https://zudojs.oyinlola.site/learn/frameworks.md): The difference between a library and a framework, inversion of control, and the jobs a backend framework takes over: lifecycle, dependency injection, routing, configuration, validation, database access, testing and application structure. Build a tiny framework to see how it works inside. - [Welcome to ZudoJS](https://zudojs.oyinlola.site/learn/zudo-welcome.md): What ZudoJS is, how its packages are layered, what each of its packages is for, what the zudojs command-line tool does, and the three application shapes it can create. Then run three ZudoJS packages together in your browser. - [Your first Zudo code](https://zudojs.oyinlola.site/learn/zudo-first-code.md): Install your first ZudoJS packages, check untrusted data at runtime with @zudojs/schema, and report failures with the ready-made errors in @zudojs/errors. - [Create the Task API project](https://zudojs.oyinlola.site/learn/zudo-create-project.md): Install the ZudoJS command-line tool, create the Task API project with flags or by answering its questions, start it in development, find your way around the files, use every CLI command, and build and run it for production. - [The application runtime and lifecycle](https://zudojs.oyinlola.site/learn/zudo-runtime.md): Learn how the ZudoJS runtime starts the parts of your application in dependency order, rolls back when startup fails, reports readiness, and shuts everything down gracefully. - [Dependency injection with @zudojs/container](https://zudojs.oyinlola.site/learn/zudo-container.md): Let a container build and share your services. Learn tokens, class, factory and value providers, the singleton, scoped and transient lifetimes, circular dependency detection, disposal, and swapping real services for fakes in tests. - [Routes, requests and responses](https://zudojs.oyinlola.site/learn/zudo-http.md): Serve the Task API over HTTP with @zudojs/http. Start a server, add routes with parameters, read query strings, headers, cookies and JSON bodies safely, and answer with the right status codes. - [Middleware, CORS, security headers and graceful shutdown](https://zudojs.oyinlola.site/learn/zudo-middleware.md): Wrap every Task API route in middleware. Learn how a middleware pipeline runs, then add security headers, a CORS allow-list, rate limits with @zudojs/security, and a graceful shutdown that lets requests in progress finish. - [Configuration](https://zudojs.oyinlola.site/learn/zudo-config.md): Keep settings out of the code with @zudojs/config. Layer defaults, a config file and environment variables by priority, validate the result with a schema, keep secrets out of logs, and make the Task API's generated configuration stricter in production than in development. - [Schemas and validation in depth](https://zudojs.oyinlola.site/learn/zudo-validation.md): Validate everything that crosses the Task API's boundary with @zudojs/schema. Read issues, coerce query strings, transform and refine values, block unknown fields, validate requests in routes and responses on the way out, and guard against hostile JSON with @zudojs/validation. - [The ZudoJS error system](https://zudojs.oyinlola.site/learn/zudo-errors.md): Handle failures the ZudoJS way. Tell expected errors from bugs, use and extend the error classes in @zudojs/errors, choose codes and categories, serialize errors safely for clients and fully for logs, and turn every error in the Task API into the right HTTP response. - [Databases with @zudojs/database](https://zudojs.oyinlola.site/learn/zudo-database.md): Connect the Task API to PostgreSQL through @zudojs/database, with migrations, seeds, a repository, a query builder, pagination, transactions and health checks, all running against real PostgreSQL. - [Storage abstractions](https://zudojs.oyinlola.site/learn/zudo-storage.md): Use @zudojs/storage's driver-independent contracts for databases, files, serialization, locks, connection pools and start-up and shutdown, with a PostgreSQL adapter and local file storage for the Task API. - [Transactions](https://zudojs.oyinlola.site/learn/zudo-transactions.md): Coordinate transactions across many functions with @zudojs/transactions, with context that follows your code through AsyncLocalStorage, rollbacks, savepoints, after-commit hooks, retries, timeouts and rollback-only state, against real PostgreSQL. - [Authentication](https://zudojs.oyinlola.site/learn/zudo-auth.md): Let users log in to the Task API. Hash passwords, issue and check JWTs, keep server-side sessions with a real logout, protect routes in @zudojs/http, and stop password guessing with lockouts and rate limits, using @zudojs/auth and @zudojs/crypto. - [Sign in with OAuth](https://zudojs.oyinlola.site/learn/zudo-oauth.md): Add "Sign in with Google" to the Task API with @zudojs/auth-oauth. Learn the OAuth 2 authorization code flow, state and PKCE, the provider presets, and the callback, all tested offline against a stand-in provider. - [Permissions](https://zudojs.oyinlola.site/learn/zudo-permissions.md): Decide what each logged-in user may do with @zudojs/permissions. Roles, resource:action permissions, wildcards, role hierarchy, owner rules, deny rules, policies and explain mode, and the mistakes that let a normal user become an admin. - [Security for every public API](https://zudojs.oyinlola.site/learn/zudo-security.md): Protect the Task API from the open internet with @zudojs/security and the security helpers in @zudojs/http. Rate limiting, CORS, CSRF, security headers, HSTS and CSP, secure cookies, body limits, SSRF protection and input checks, each shown blocking a real attack. - [Caching](https://zudojs.oyinlola.site/learn/zudo-cache.md): Keep copies of slow results so the Task API can answer again fast. Learn keys, TTL, namespaces, tags and invalidation, stampede protection, locks and cache metrics with @zudojs/cache. - [Events](https://zudojs.oyinlola.site/learn/zudo-events.md): Announce that something happened and let other parts of the Task API react, without the code that announces it knowing who listens. Handlers, wildcards, priorities, dispatch modes, middleware and handler errors with @zudojs/events. - [Messaging](https://zudojs.oyinlola.site/learn/zudo-messaging.md): Ask another part of the Task API to do something and get an answer back, without importing it. Messages, handlers, middleware, correlation and causation ids, timeouts and cancellation with @zudojs/messaging. - [Commands and queries (CQRS)](https://zudojs.oyinlola.site/learn/zudo-cqrs.md): Split the Task API's operations into commands that change data and queries that only read it. Command and query buses, handlers, middleware, execution context, results, and when CQRS is worth it, with @zudojs/cqrs. - [Background jobs](https://zudojs.oyinlola.site/learn/zudo-queue.md): Move slow and unreliable work out of the request and into a job queue. Queues, jobs, processors, workers, concurrency, retries with exponential backoff, delayed jobs, dead letters and graceful shutdown with @zudojs/queue. - [Scheduled tasks](https://zudojs.oyinlola.site/learn/zudo-scheduler.md): Run work on the clock, not on a request. Intervals, one-off runs and cron expressions, time zones, retries and failed runs, overlapping runs, restarts, and running a schedule on one instance only, with @zudojs/scheduler. - [Serialization](https://zudojs.oyinlola.site/learn/zudo-serialization.md): Turn values into text and back without losing what they were. See exactly what plain JSON loses, keep Dates, BigInts, Maps, Sets, bytes and Errors with @zudojs/serialization, add your own types, read untrusted input safely, and version your payloads with envelopes. - [Calling services with RPC](https://zudojs.oyinlola.site/learn/zudo-rpc.md): Call a function that runs in another service as if it were local. Define procedures with @zudojs/rpc, call them through a client and a transport, and handle validation, errors, identity, timeouts and retries. - [One operation, many transports](https://zudojs.oyinlola.site/learn/zudo-api.md): Write your business logic once as an operation with @zudojs/api, then run it from HTTP, RPC and a queue with the same validation, errors, interceptors and timeouts. - [OpenAPI documents](https://zudojs.oyinlola.site/learn/zudo-openapi.md): Describe the Task API in an OpenAPI document with @zudojs/openapi. Turn your schemas into components, choose between OpenAPI 3.0 and 3.1, validate the document, save it as JSON or YAML, and serve a documentation page. - [Testing a ZudoJS app](https://zudojs.oyinlola.site/learn/zudo-testing.md): Test the Task API with Vitest and @zudojs/testing. Control time with a test clock, replace services with mocks and recording buses, wire fakes through a test container, clean up in the right order, and run integration tests against a real HTTP server. - [Structured logging](https://zudojs.oyinlola.site/learn/zudo-logging.md): Replace console.log with structured log entries that a program can search. Levels, child loggers, request ids, request and error logging, secret redaction and JSON logs for production with @zudojs/logger. - [Observability](https://zudojs.oyinlola.site/learn/zudo-observability.md): See inside a running Task API. Metrics count what happens, traces show where the time goes, and logs, metrics and traces share one trace id across requests and services, with @zudojs/observability. - [Feature flags](https://zudojs.oyinlola.site/learn/zudo-feature-flags.md): Turn features on and off without deploying. Rules, evaluation context, percentage rollouts, A/B variants, kill switches and browser snapshots with @zudojs/feature-flags. - [Multi-tenancy](https://zudojs.oyinlola.site/learn/zudo-tenancy.md): Serve many companies from one Task API without ever mixing their data. Tenant ids, resolvers and trust levels, resolver chains, AsyncLocalStorage context and tenant-scoped queries with @zudojs/tenancy. - [Plugins](https://zudojs.oyinlola.site/learn/zudo-plugins.md): Let other code extend the Task API without editing it. Write plugins, declare dependencies, run their lifecycle, give each one a scoped context, roll back failed starts, read diagnostics and publish a plugin to npm with @zudojs/plugins. - [From monolith to modular monolith](https://zudojs.oyinlola.site/learn/zudo-modular-monolith.md): Split one growing application into modules with clear boundaries. Each module has a small public API, owns its data, and talks to the others through that API, events and commands, all inside one deployable app. - [Microservices](https://zudojs.oyinlola.site/learn/zudo-microservices.md): Why some teams split one application into many services, why you should not start that way, and how services find and call each other, stay consistent without distributed transactions, survive failures and stay observable. - [Production engineering](https://zudojs.oyinlola.site/learn/production-engineering.md): What changes when real users depend on your app. A checklist for configuration, secrets, logs, metrics, traces, health and readiness checks, graceful shutdown, timeouts, rate limits, caching and database performance, with a small runnable proof for each item. - [Deploying a ZudoJS app](https://zudojs.oyinlola.site/learn/deployment.md): Take the Task API from your computer to a server. Build it for production, run it under systemd or in Docker, add PostgreSQL and Redis with Docker Compose, put Caddy in front for HTTPS, run migrations during a deployment, read the logs and back up the database. - [Capstone: ShopFlow](https://zudojs.oyinlola.site/learn/capstone-shopflow.md): The final project. Plan and build ShopFlow, a small online shop, with ZudoJS. A complete, runnable core for accounts, products and a checkout that never oversells, followed by milestones with acceptance criteria that take it to a modular monolith and then to services. - [Final production challenge](https://zudojs.oyinlola.site/learn/final-challenge.md): Someone else's gift-card feature works in the demo and fails everything else. Find its architectural problems, then make it production-ready step by step, with acceptance criteria, hints and worked solutions for the key fixes. ## Getting started - [Getting Started](https://zudojs.oyinlola.site/docs/getting-started.md): Install ZudoJS on Node.js 24, run a first module by hand, then scaffold a working API with the zudo CLI. Prerequisites, quick start and troubleshooting. - [Your First App](https://zudojs.oyinlola.site/docs/getting-started-first-app.md): Build your first ZudoJS API with the zudo CLI: create a project, call /api/v1/examples, generate a users resource and run its tests. Real output throughout. - [Project Structure](https://zudojs.oyinlola.site/docs/getting-started-project-structure.md): What the zudo CLI writes for a ZudoJS project: folders, server.ts to repository request flow, .env config, integrations and the zudojs markers. ## Concepts - [Core Concepts](https://zudojs.oyinlola.site/docs/concepts.md): Understand the fundamental building blocks of the Zudo framework — application architecture, configuration, contexts, dependency injection, lifecycle, and modules. - [Configuration](https://zudojs.oyinlola.site/docs/concepts-configuration.md): Layered configuration system with sources, resolvers, and schema validation. Environment variables, files, memory, and remote config sources with priority ordering. - [Contexts](https://zudojs.oyinlola.site/docs/concepts-contexts.md): Execution context propagation using AsyncLocalStorage for request-scoped data across async call chains in Zudo applications. - [Lifecycle](https://zudojs.oyinlola.site/docs/concepts-lifecycle.md): State machine pattern for predictable component lifecycle management with dependency ordering, hooks, and graceful shutdown. - [Modules](https://zudojs.oyinlola.site/docs/concepts-modules.md): Composable units of functionality with dependency management, registration, and lifecycle integration for Zudo applications. - [Dependency Injection](https://zudojs.oyinlola.site/docs/concepts-dependency-injection.md): Dependency injection in ZudoJS: a token-based container with singleton, transient and scoped lifetimes and circular dependency detection. ## Architecture - [Architecture](https://zudojs.oyinlola.site/docs/architecture.md): How Zudo's modular, layered architecture enables scalable TypeScript applications. DI container, lifecycle management, module system, and event-driven design. - [Adapters](https://zudojs.oyinlola.site/docs/architecture-adapters.md): Platform-agnostic boundary layer between Zudo and external systems. Adapter pattern, registration, capabilities, transport abstractions, and custom adapter creation. - [Runtime](https://zudojs.oyinlola.site/docs/architecture-runtime.md): The ZudoJS runtime orchestrates startup and shutdown: lifecycle state machine, dependency ordering, signal handling and graceful shutdown. - [Dependency Direction](https://zudojs.oyinlola.site/docs/architecture-dependency-direction.md): Dependency rules that keep ZudoJS packages free of circular imports: the package graph, allowed and forbidden import patterns, and how they are enforced. - [Module System](https://zudojs.oyinlola.site/docs/architecture-module-system.md): How ZudoJS modules work: defining composable, dependency-aware modules, registering them, lifecycle hooks, and best practices for structuring an app. ## Packages - [Packages — @zudojs/*](https://zudojs.oyinlola.site/docs/packages.md): Browse all 39 @zudojs packages by category: foundation, runtime, application, transport, security and platform. Search by name and pick a version. - [@zudojs/adapters — Boundary Layer Documentation](https://zudojs.oyinlola.site/docs/packages-adapters.md): Complete documentation for @zudojs/adapters — the boundary layer between Zudojs and external platforms. - [@zudojs/api — Transport-agnostic API layer](https://zudojs.oyinlola.site/docs/packages-api.md): @zudojs/api for ZudoJS: define an operation once and serve it over HTTP, RPC, queues and the CLI with shared validation and interceptors. - [@zudojs/auth — JWT, Sessions, RBAC, Password Hashing](https://zudojs.oyinlola.site/docs/packages-auth.md): @zudojs/auth reference: JWT access and refresh tokens, scrypt password hashing, sessions, RBAC and brute-force lockout for ZudoJS apps. - [@zudojs/cache — Caching, Adapters & Invalidation](https://zudojs.oyinlola.site/docs/packages-cache.md): @zudojs/cache reference: CacheService, memory adapter, tag-based invalidation, distributed locking, metrics and middleware for ZudoJS apps. - [zudojs-cli — Command-Line Interface Framework](https://zudojs.oyinlola.site/docs/packages-cli.md): zudojs-cli 2.1 reference for ZudoJS: install as zudojs or zudo, create wired APIs, generate CRUD resources, add Prisma, Redis or Docker, exit codes. - [@zudojs/config — Layered Configuration System](https://zudojs.oyinlola.site/docs/packages-config.md): @zudojs/config reference: layered configuration with sources, stores, resolvers, schema validation and lifecycle management for ZudoJS apps. - [@zudojs/constants — Shared Constants, Enums & Type-Safe Literals](https://zudojs.oyinlola.site/docs/packages-constants.md): @zudojs/constants docs: branded ID types, HTTP constants, lifecycle states, validation patterns, cache strategies and serialization limits for ZudoJS. - [@zudojs/container — Token-Based Dependency Injection Container](https://zudojs.oyinlola.site/docs/packages-container.md): @zudojs/container docs: token-based dependency injection for TypeScript with scopes, lifecycle management, circular dependency detection and auto-disposal. - [@zudojs/core — Application Lifecycle, Context & Runtime](https://zudojs.oyinlola.site/docs/packages-core.md): @zudojs/core docs: application lifecycle, execution context propagation, modules, configuration, logging and runtime orchestration for ZudoJS apps. - [@zudojs/cqrs — Command Query Responsibility Segregation](https://zudojs.oyinlola.site/docs/packages-cqrs.md): @zudojs/cqrs docs: CQRS for TypeScript. Command and query buses, typed handlers, middleware and event extensions for separating reads from writes in ZudoJS. - [@zudojs/crypto — Cryptographic Primitives Documentation](https://zudojs.oyinlola.site/docs/packages-crypto.md): @zudojs/crypto docs: hashing, encryption, password hashing, tokens, signatures, key derivation and secure random generation for ZudoJS apps. - [@zudojs/database — Database Infrastructure Documentation](https://zudojs.oyinlola.site/docs/packages-database.md): Complete documentation for @zudojs/database — database clients, repositories, transactions, migrations, seeding, caching, and connection management. - [@zudojs/docs — Documentation Infrastructure](https://zudojs.oyinlola.site/docs/packages-docs.md): Complete documentation for @zudojs/docs — structured document model, registry, validation, navigation, frontmatter parsing, and output generation. - [@zudojs/errors — Shared Error Hierarchy Documentation](https://zudojs.oyinlola.site/docs/packages-errors.md): Complete documentation for @zudojs/errors — shared error base class, error codes, error categories, and error handling utilities for the ZudoLib framework. - [@zudojs/events — Event Bus Documentation](https://zudojs.oyinlola.site/docs/packages-events.md): Complete documentation for @zudojs/events — the event bus, emitter, middleware, and registry for Zudojs. - [@zudojs/http — HTTP Server, Routing & Middleware](https://zudojs.oyinlola.site/docs/packages-http.md): @zudojs/http docs for ZudoJS: server, router, middleware, client, CORS and security headers, OpenAPI from routes, and fetch handler mounting. - [@zudojs/lifecycle — Lifecycle Orchestration Documentation](https://zudojs.oyinlola.site/docs/packages-lifecycle.md): @zudojs/lifecycle docs: state machine, component hooks, dependency ordering, graceful shutdown, signal handling and rollback for ZudoJS apps. - [@zudojs/logger — Structured Logging Documentation](https://zudojs.oyinlola.site/docs/packages-logger.md): Complete documentation for @zudojs/logger — structured logging with transports, formatters, context propagation, and lifecycle management for the Zudojs framework. - [@zudojs/messaging — Messaging Documentation](https://zudojs.oyinlola.site/docs/packages-messaging.md): Complete documentation for @zudojs/messaging — the in-process message bus infrastructure for Zudojs. - [@zudojs/middleware — Composable Middleware Pipeline Documentation](https://zudojs.oyinlola.site/docs/packages-middleware.md): @zudojs/middleware docs: composable middleware pipelines with composition, timing, error handling and built-in middleware for ZudoJS apps. - [@zudojs/observability — Structured Logging, Metrics & Tracing](https://zudojs.oyinlola.site/docs/packages-observability.md): Complete documentation for @zudojs/observability — structured logging, metrics, distributed tracing, context propagation, and telemetry exporters. - [@zudojs/openapi — OpenAPI Specification Engine](https://zudojs.oyinlola.site/docs/packages-openapi.md): Complete documentation for @zudojs/openapi — the OpenAPI specification generation, validation, and serialization engine for Zudojs. - [@zudojs/permissions — Authorization Engine Documentation](https://zudojs.oyinlola.site/docs/packages-permissions.md): Complete documentation for @zudojs/permissions — RBAC, ABAC, resource authorization, wildcards, role hierarchy, policies, and abilities. - [@zudojs/plugins — Plugin System Documentation](https://zudojs.oyinlola.site/docs/packages-plugins.md): Complete documentation for @zudojs/plugins — the controlled extension system for Zudojs applications. - [@zudojs/queue — Background Job Infrastructure](https://zudojs.oyinlola.site/docs/packages-queue.md): Complete documentation for @zudojs/queue — background job processing with retry, backoff, dead letter, workers, and middleware. - [@zudojs/rpc — Remote Procedure Call Documentation](https://zudojs.oyinlola.site/docs/packages-rpc.md): @zudojs/rpc docs for ZudoJS: typed procedures, middleware, retries, typed errors, and built-in in-memory and HTTP (Fetch API) transports. - [@zudojs/runtime — Runtime Orchestration Documentation](https://zudojs.oyinlola.site/docs/packages-runtime.md): @zudojs/runtime docs: application lifecycle orchestration, dependency-ordered startup and shutdown, rollback, signal handling and readiness. - [@zudojs/scheduler — Time & Recurring Execution Engine](https://zudojs.oyinlola.site/docs/packages-scheduler.md): Complete documentation for @zudojs/scheduler — the time and recurring execution engine for the Zudojs framework. - [@zudojs/schema — Schema Definition & Parsing Engine](https://zudojs.oyinlola.site/docs/packages-schema.md): Complete documentation for @zudojs/schema — type-safe schema definition, runtime validation, parsing, and transformation engine. - [@zudojs/security — Security Primitives Documentation](https://zudojs.oyinlola.site/docs/packages-security.md): Complete documentation for @zudojs/security — input validation, CORS, CSRF, rate limiting, security headers, and more. - [@zudojs/serialization — Data Translation Layer](https://zudojs.oyinlola.site/docs/packages-serialization.md): Complete documentation for @zudojs/serialization — JSON serialization with type preservation, transformer registry, envelopes, and encoding utilities. - [@zudojs/storage — Storage Infrastructure Documentation](https://zudojs.oyinlola.site/docs/packages-storage.md): Complete documentation for @zudojs/storage — database, object storage, repository, serialization, locking, and lifecycle abstractions. - [@zudojs/tenancy — Multi-Tenant Context & Isolation Documentation](https://zudojs.oyinlola.site/docs/packages-tenancy.md): Complete documentation for @zudojs/tenancy — multi-tenant context propagation, resolver chains, trust levels, and guard middleware for the Zudojs framework. - [@zudojs/testing — Testing Utilities Documentation](https://zudojs.oyinlola.site/docs/packages-testing.md): @zudojs/testing docs for ZudoJS: mocks, spies, fixtures, assertions, a test clock, and a supertest-style HTTP test client for your app. - [@zudojs/transactions — Transaction Lifecycle Documentation](https://zudojs.oyinlola.site/docs/packages-transactions.md): @zudojs/transactions docs: transaction lifecycle, async context propagation, adapter abstraction, savepoints, hooks and rollback for ZudoJS. - [@zudojs/types — Type Guards, Utility Types & Converters](https://zudojs.oyinlola.site/docs/packages-types.md): @zudojs/types docs: type guards (isPlainObject, isDate, isEmail), utility types (Maybe, DeepReadonly, Prettify) and converters for ZudoJS. - [@zudojs/validation — Schema Validation Documentation](https://zudojs.oyinlola.site/docs/packages-validation.md): Complete documentation for @zudojs/validation — schema validation with Zod, constraints, parsers, composers, normalizers, transformers, and registries. - [@zudojs/auth-oauth](https://zudojs.oyinlola.site/docs/packages-auth-oauth.md): @zudojs/auth-oauth: OAuth 2.0 sign-in with PKCE, timing-safe state checks, code exchange and presets for Google, GitHub, Microsoft, Apple and Discord. - [@zudojs/feature-flags — Feature Flag System Documentation](https://zudojs.oyinlola.site/docs/packages-feature-flags.md): Complete documentation for @zudojs/feature-flags — deterministic rollouts, rule engine, providers, variants, and evaluation context for the Zudojs framework. ## Project - [Brand & logo](https://zudojs.oyinlola.site/brand.md): Download the ZudoJS logo, wordmark and app icon as SVG and PNG, with the brand colours, clear-space rules and usage guidelines. - [Sponsors](https://zudojs.oyinlola.site/sponsors.md): Support the ZudoJS ecosystem. View sponsors and learn how your sponsorship helps maintain and improve the framework. ## Optional - [Changelog](https://zudojs.oyinlola.site/docs/changelog.md): What changed in each Zudo release: per-package release notes generated from the packages' own changelogs, newest first. - [Contributing](https://zudojs.oyinlola.site/docs/contributing.md): Help build the Zudo framework. Guidelines for contributions, development setup, code style, testing, and PR review process. - [Roadmap](https://zudojs.oyinlola.site/docs/roadmap.md): Where Zudo is headed. Features, milestones, and vision. Current releases, near-term, mid-term, and long-term goals. - [Package Rules](https://zudojs.oyinlola.site/docs/rules.md): Conventions and constraints that all @zudojs packages must follow. File naming, folder organization, code style, imports, testing, and dependency direction.