---
title: Dependency Injection
description: Declare services, assign scopes, and let the compiler wire them into your handlers at build time.
---

Nooh's dependency injection system is purely compile-time. You declare services in containers, the compiler builds a dependency graph and validates it, and the generated route modules wire exactly the right dependencies into each handler — nothing more.

**[Concepts](/docs/dependency-injection/concepts)**

How containers, references, and the resolution context work.

**[Providers](/docs/dependency-injection/providers)**

The four provider functions: singleton, request, transient, and value.

**[Scopes](/docs/dependency-injection/scopes)**

Scope rules, the lifetime hierarchy, and scope validation.

**[Advanced](/docs/dependency-injection/advanced)**

Circular dependency detection, cross-container sharing, and edge cases.
