---
title: "ZudoJS fundamentals — ZudoJS Academy"
description: "Enter ZudoJS knowing what it abstracts: its package architecture, the CLI, the anatomy of a project, the core, runtime and lifecycle, shared types and constants, dependency injection, configuration, errors, HTTP, middleware, schemas and validation."
source: https://zudojs.oyinlola.site/learn/zudo-fundamentals
---

LEVEL 12 · ZUDOJS

Course Core

# ZudoJS fundamentals

Enter ZudoJS knowing what it abstracts: its package architecture, the CLI, the anatomy of a project, the core, runtime and lifecycle, shared types and constants, dependency injection, configuration, errors, HTTP, middleware, schemas and validation.

- **14 lessons**
- **11 h** to read and try
- **Before this:** [Software design and architecture](https://zudojs.oyinlola.site/learn/software-architecture)

0 of 14 lessons done

[Start lesson 1 →](https://zudojs.oyinlola.site/learn/zudo-welcome)

## When you finish, you can

- Explain what each ZudoJS package does and when not to use it
- Create, generate and run a project with the zudojs CLI
- Trace a request from the entry point through the container to a handler
- Wire services with @zudojs/container
- Configure an application in layers and handle errors the ZudoJS way
- Serve a validated HTTP API with routes and middleware

**You build:** The Task API rebuilt with ZudoJS

MODULE 1

## Entering ZudoJS

1. [1**Welcome to ZudoJS**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.25 min](https://zudojs.oyinlola.site/learn/zudo-welcome)
2. [2**Your first Zudo code**Install your first ZudoJS packages, check untrusted data at runtime with @zudojs/schema, and report failures with the ready-made errors in @zudojs/errors.35 min](https://zudojs.oyinlola.site/learn/zudo-first-code)
3. [3**Create the Task API project**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.50 min](https://zudojs.oyinlola.site/learn/zudo-create-project)
4. [4**The ZudoJS CLI in depth**Use every command and option of the zudojs CLI, learn how it finds your project and names and wires generated files, and read its errors before they cost you time.50 min](https://zudojs.oyinlola.site/learn/zudo-cli)
5. [5**Anatomy of a ZudoJS project**Trace a generated ZudoJS project from src/server.ts through config, runtime and composition root to a controller, service and repository, running the real generated files.55 min](https://zudojs.oyinlola.site/learn/zudo-project-anatomy)

MODULE 2

## Core, runtime and lifecycle

1. [6**The core: applications, modules and context**Build an application with @zudojs/core, compose it from modules, and carry each request's identity through async code with the execution context.50 min](https://zudojs.oyinlola.site/learn/zudo-core)
2. [7**The application runtime and lifecycle**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.45 min](https://zudojs.oyinlola.site/learn/zudo-runtime)
3. [8**Components with @zudojs/lifecycle**Start and stop a database, a job queue and an HTTP server in the right order with @zudojs/lifecycle, with retries, timeouts, priorities, optional parts, rollback and graceful shutdown.55 min](https://zudojs.oyinlola.site/learn/zudo-lifecycle)

MODULE 3

## Dependency injection

1. [9**Dependency injection with @zudojs/container**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.40 min](https://zudojs.oyinlola.site/learn/zudo-container)

MODULE 4

## HTTP

1. [10**Routes, requests and responses**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.50 min](https://zudojs.oyinlola.site/learn/zudo-http)
2. [11**Middleware, CORS, security headers and graceful shutdown**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.50 min](https://zudojs.oyinlola.site/learn/zudo-middleware)

MODULE 5

## Configuration, validation and errors

1. [12**Configuration**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.45 min](https://zudojs.oyinlola.site/learn/zudo-config)
2. [13**Schemas and validation in depth**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.50 min](https://zudojs.oyinlola.site/learn/zudo-validation)
3. [14**The ZudoJS error system**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.45 min](https://zudojs.oyinlola.site/learn/zudo-errors)

## Course checkpoint

Prove you can move on. The checkpoint picks 20 questions at random from every lesson in this course. Get 16 right to pass. Your result is saved in this browser only.
