# ImmediatePlatform > Source-generated .NET libraries for Vertical Slice Architecture, CQRS, validation, APIs, dependency injection, caching, and background jobs. This file provides an overview of all documentation pages for LLM consumption. For full documentation content, see: https://immediateplatform.dev/llms-full.txt ## Getting Started - [Introduction](https://immediateplatform.dev/docs/getting-started/introduction): ImmediatePlatform is a suite of source-generated .NET libraries for Vertical Slice Architecture, CQRS, validation, minimal APIs, caching and dependency injection. - [Installation](https://immediateplatform.dev/docs/getting-started/installation): Install the ImmediatePlatform packages, and understand which ones depend on which. - [Quickstart](https://immediateplatform.dev/docs/getting-started/quickstart): Build and run a working Immediate.Handlers endpoint in about five minutes. - [What we're building](https://immediateplatform.dev/docs/getting-started/tutorial/overview): A tour of the Todo API this tutorial builds, and which package contributes what. - [Your first handler](https://immediateplatform.dev/docs/getting-started/tutorial/first-handler): Write a [Handler] class, register it, and call the generated Handler type from an entry point. - [Adding validation](https://immediateplatform.dev/docs/getting-started/tutorial/adding-validation): Validate a command with [Validate] and IValidationTarget, run through ValidationBehavior. - [Exposing an HTTP endpoint](https://immediateplatform.dev/docs/getting-started/tutorial/exposing-endpoints): Turn handlers into minimal-API endpoints with the verb attributes, TransformResult and ProblemDetails. - [Caching a query](https://immediateplatform.dev/docs/getting-started/tutorial/caching): Cache a handler's responses with [CacheFor], and invalidate them from the write handler. - [Wiring up dependency injection](https://immediateplatform.dev/docs/getting-started/tutorial/dependency-injection): Replace hand-written service registrations with [RegisterSingleton] and AddTodoServices(). - [Where to go next](https://immediateplatform.dev/docs/getting-started/tutorial/next-steps): The finished tutorial app, and where to read further on each package. ## Platform Concepts - [How source generation works](https://immediateplatform.dev/docs/concepts/source-generation): Why ImmediatePlatform generates code at compile time instead of using reflection, and how to inspect what it produces. - [Handlers and the behavior pipeline](https://immediateplatform.dev/docs/concepts/handlers-and-behaviors): The request-to-response mental model that Immediate.Validations and Immediate.Cache both build on. - [The assembly identifier](https://immediateplatform.dev/docs/concepts/assembly-identifier): How the Xxx in generated registration and mapping methods is derived, and how to override it. - [Tags and conditional registration](https://immediateplatform.dev/docs/concepts/tags): Register or map only part of an assembly by tagging items and filtering at the call site. - [Package compatibility](https://immediateplatform.dev/docs/concepts/package-compatibility): Which packages require which, the supported target frameworks, and the documentation's versioning policy. ## Immediate.Handlers - [Introduction](https://immediateplatform.dev/docs/Immediate.Handlers/introduction): Immediate.Handlers is a compile-time mediator for .NET, built entirely on source generation. - [Creating handlers](https://immediateplatform.dev/docs/Immediate.Handlers/creating-handlers): Define a handler with the [Handler] attribute and a private Handle or HandleAsync method. - [Handler dependencies](https://immediateplatform.dev/docs/Immediate.Handlers/handler-dependencies): Choose between a static handler with method parameters and a sealed handler with a primary constructor. - [Creating behaviors](https://immediateplatform.dev/docs/Immediate.Handlers/creating-behaviors): Build cross-cutting pipeline steps with the Behavior base class, and control which handlers they attach to. - [Streaming handlers](https://immediateplatform.dev/docs/Immediate.Handlers/streaming-handlers): Return IAsyncEnumerable from a handler to stream results, and wrap them with streaming behaviors. - [Registering with IServiceCollection](https://immediateplatform.dev/docs/Immediate.Handlers/registration): Wire handlers and behaviors into Microsoft.Extensions.DependencyInjection, and control their lifetimes. - [Tagged registration](https://immediateplatform.dev/docs/Immediate.Handlers/tagged-registration): Register a subset of an assembly's handlers per host by tagging them and filtering at the call site. - [OpenAPI and Swashbuckle](https://immediateplatform.dev/docs/Immediate.Handlers/openapi-and-swashbuckle): Fix the duplicate schemaId error Swashbuckle throws when handlers nest their Query, Command and Response types. - [Attributes and interfaces](https://immediateplatform.dev/docs/Immediate.Handlers/attributes-and-interfaces): The complete public surface of Immediate.Handlers.Shared, with signatures and examples. - [How it works](https://immediateplatform.dev/docs/Immediate.Handlers/how-it-works): The exact files and members the generator emits, and how to read them when DI resolution fails. - [Diagnostics](https://immediateplatform.dev/docs/Immediate.Handlers/diagnostics): Every IHR diagnostic Immediate.Handlers reports, what triggers it, and how to fix it. - [Normal](https://immediateplatform.dev/docs/Immediate.Handlers/samples/normal): A minimal ASP.NET Core application using Immediate.Handlers. ## Immediate.Validations - [Introduction](https://immediateplatform.dev/docs/Immediate.Validations/introduction): Compile-time generated validation for your requests, with no runtime rule registration. - [Creating validators](https://immediateplatform.dev/docs/Immediate.Validations/creating-validators): Mark a type with Validate, implement IValidationTarget, and let the generator write the checks. - [Nested and collection validation](https://immediateplatform.dev/docs/Immediate.Validations/nested-and-collection-validation): How child objects and collections are walked, and exactly how error property paths are named. - [Custom validation messages](https://immediateplatform.dev/docs/Immediate.Validations/custom-messages): Override the wording of any validator with the Message property, and template it with tokens. - [Additional validations](https://immediateplatform.dev/docs/Immediate.Validations/additional-validations): Write imperative validation logic on the type itself with an AdditionalValidations method. - [Building custom validators](https://immediateplatform.dev/docs/Immediate.Validations/custom-validators): Write your own validator attribute β€” the contract, the analyzer rules, and TargetType. - [Localization](https://immediateplatform.dev/docs/Immediate.Validations/localization): Built-in English and French messages, and how to supply your own IStringLocalizer. - [Validating instances](https://immediateplatform.dev/docs/Immediate.Validations/validating-instances): Call Validate directly, inspect the result, or throw with ThrowIfInvalid. - [Integrating with Immediate.Handlers](https://immediateplatform.dev/docs/Immediate.Validations/immediate-handlers-integration): Register ValidationBehavior so every request that can be validated is validated. - [Handling validation failures](https://immediateplatform.dev/docs/Immediate.Validations/handling-failures): Turn a ValidationException into a 400 response with ProblemDetails. - [Built-in validators](https://immediateplatform.dev/docs/Immediate.Validations/built-in-validators): All fifteen validator attributes, with constructor signatures, applicable types and default messages. - [API reference](https://immediateplatform.dev/docs/Immediate.Validations/api-reference): The runtime types in Immediate.Validations.Shared β€” results, errors, exceptions, attributes and configuration. - [How it works](https://immediateplatform.dev/docs/Immediate.Validations/how-it-works): What the generator emits for a Validate type, in what order it runs, and how error paths are built. - [Diagnostics](https://immediateplatform.dev/docs/Immediate.Validations/diagnostics): Every IV diagnostic with its severity and trigger, plus the code fixes, refactoring and suppressors. ## Immediate.Apis - [Introduction](https://immediateplatform.dev/docs/Immediate.Apis/introduction): Immediate.Apis turns Immediate.Handlers handlers into ASP.NET Core minimal API endpoints at compile time. - [Creating endpoints](https://immediateplatform.dev/docs/Immediate.Apis/creating-endpoints): Turn a handler into a minimal API endpoint with a Map attribute, and register the lot with MapXxxEndpoints. - [Binding request data](https://immediateplatform.dev/docs/Immediate.Apis/binding-request-data): How the generator infers the binding attribute for your request type, and how to override it. - [Authorization](https://immediateplatform.dev/docs/Immediate.Apis/authorization): Apply [Authorize] and [AllowAnonymous] to generated endpoints, and why only policy-based authorization is supported. - [Customizing endpoints](https://immediateplatform.dev/docs/Immediate.Apis/customizing-endpoints): Add endpoint metadata with attributes or CustomizeEndpoint, and reshape the response with TransformResult. - [Route groups](https://immediateplatform.dev/docs/Immediate.Apis/route-groups): Share a route prefix and endpoint conventions across a set of endpoints with [RouteGroup] and [MapGroup]. - [Tagged registration](https://immediateplatform.dev/docs/Immediate.Apis/tagged-registration): Tag endpoints and route groups, then register only the ones you want at startup. - [OpenAPI and Swagger](https://immediateplatform.dev/docs/Immediate.Apis/openapi): Fix duplicate schema IDs caused by nested request types, in both Swashbuckle and Microsoft.AspNetCore.OpenApi. - [Attributes reference](https://immediateplatform.dev/docs/Immediate.Apis/attributes-reference): Every attribute Immediate.Apis defines or recognises, with its exact shape and effect. - [How it works](https://immediateplatform.dev/docs/Immediate.Apis/how-it-works): The files and members the generator emits per endpoint, per route group and per assembly. - [Diagnostics](https://immediateplatform.dev/docs/Immediate.Apis/diagnostics): Every IAPI diagnostic Immediate.Apis reports, what triggers it, and how to fix it. ## Immediate.Cache - [Introduction](https://immediateplatform.dev/docs/Immediate.Cache/introduction): Immediate.Cache generates in-memory caches for Immediate.Handlers handlers, with request coalescing, invalidation and read-modify-write built in. - [Creating a cache](https://immediateplatform.dev/docs/Immediate.Cache/creating-a-cache): Declare a cache class, implement TransformKey, and register the generated caches with the service collection. - [Reading and writing cached data](https://immediateplatform.dev/docs/Immediate.Cache/reading-and-writing): Read cached responses with GetValue, invalidate with SetValue and RemoveValue, and apply read-modify-write updates with TransformValue. - [Configuring cache entries](https://immediateplatform.dev/docs/Immediate.Cache/cache-entry-options): Override GetCacheEntryOptions to control expiration, priority, size and eviction callbacks; the default is a five-minute sliding expiration. - [Testing caches](https://immediateplatform.dev/docs/Immediate.Cache/testing-caches): Compose a real service collection with AddMemoryCache, the generated caches and the generated handlers, then resolve and exercise the cache class. - [API reference](https://immediateplatform.dev/docs/Immediate.Cache/api-reference): Every public and protected member of ApplicationCache, CacheForAttribute, Owned and OwnedScope. - [How it works](https://immediateplatform.dev/docs/Immediate.Cache/how-it-works): What the generator emits, why caches are registered as Singletons, and how Owned mints a fresh DI scope for each handler execution. - [Diagnostics](https://immediateplatform.dev/docs/Immediate.Cache/diagnostics): The IC0001–IC0003 analyzer errors, the CA2000 suppressor, and the compile failures that have no IC diagnostic at all. ## Immediate.Injections - [Introduction](https://immediateplatform.dev/docs/Immediate.Injections/introduction): Source-generated Microsoft.Extensions.DependencyInjection registrations declared with attributes. - [Registering services](https://immediateplatform.dev/docs/Immediate.Injections/registering-services): Mark a class with a lifetime attribute and call the generated AddXxxServices extension. - [Registration strategies](https://immediateplatform.dev/docs/Immediate.Injections/registration-strategies): Choose which service types a class is registered as, and what happens when a registration already exists. - [Keyed services](https://immediateplatform.dev/docs/Immediate.Injections/keyed-services): Register several implementations of one interface under distinct keys and resolve them with GetRequiredKeyedService. - [Open generics](https://immediateplatform.dev/docs/Immediate.Injections/open-generics): Register a generic class once and let the container close it for every type argument. - [Factories and proxies](https://immediateplatform.dev/docs/Immediate.Injections/factories-and-proxies): Construct a service yourself with Factory, or forward one registration to another with UseProxyFactory. - [Tagged registration](https://immediateplatform.dev/docs/Immediate.Injections/tagged-registration): Tag registrations and pass tags to AddXxxServices to register only part of an assembly. - [Manual registration](https://immediateplatform.dev/docs/Immediate.Injections/manual-registration): Hook hand-written registration code into the generated AddXxxServices method with [RegisterServices]. - [Assembly-wide defaults](https://immediateplatform.dev/docs/Immediate.Injections/assembly-defaults): Set the default registration strategy, duplicate strategy and proxy behavior once for a whole assembly. - [Migrating from other libraries](https://immediateplatform.dev/docs/Immediate.Injections/migrating-from-other-libraries): Mapping Injectio and AutoRegisterInject attributes and defaults onto Immediate.Injections. - [Attributes reference](https://immediateplatform.dev/docs/Immediate.Injections/attributes-reference): Every attribute, property and enum member in Immediate.Injections, with defaults and constraints. - [How it works](https://immediateplatform.dev/docs/Immediate.Injections/how-it-works): The files Immediate.Injections generates, the partial-method structure of AddXxxServices, and the language-version shim. - [Diagnostics](https://immediateplatform.dev/docs/Immediate.Injections/diagnostics): Every INJ diagnostic Immediate.Injections reports, what triggers it, and how to fix it. ## Immediate.Jobs - [Introduction](https://immediateplatform.dev/docs/Immediate.Jobs/introduction): Build, schedule and operate source-generated background jobs with Immediate.Handlers. - [Creating jobs](https://immediateplatform.dev/docs/Immediate.Jobs/creating-jobs): Declare payload and payloadless jobs, choose stable names, and configure execution and retry policy. - [Enqueueing and scheduling](https://immediateplatform.dev/docs/Immediate.Jobs/enqueueing-and-scheduling): Use generated schedulers for immediate, delayed, absolute and fair-group work. - [Recurring jobs](https://immediateplatform.dev/docs/Immediate.Jobs/recurring-jobs): Create recurring schedules, run them on demand and control overlapping runs. - [NodaTime](https://immediateplatform.dev/docs/Immediate.Jobs/nodatime): Use NodaTime values for scheduling, recurring time zones, job payloads and propagated context. - [Queues and fairness](https://immediateplatform.dev/docs/Immediate.Jobs/queues-and-fairness): Define queues, limit concurrency, set priority and share capacity across groups. - [Batches and continuations](https://immediateplatform.dev/docs/Immediate.Jobs/batches-and-continuations): Create batches, continuations, parallel branches and workflows that add jobs while running. - [Execution context and behaviors](https://immediateplatform.dev/docs/Immediate.Jobs/execution-context-and-behaviors): Run jobs through Immediate.Handlers pipelines and propagate selected scoped context safely. - [Registration and hosting](https://immediateplatform.dev/docs/Immediate.Jobs/registration-and-hosting): Register handlers, jobs, storage and the worker service. - [Choosing storage](https://immediateplatform.dev/docs/Immediate.Jobs/choosing-storage): Choose storage by durability, worker count and supported job features. - [Configuring storage providers](https://immediateplatform.dev/docs/Immediate.Jobs/configuring-storage-providers): Configure built-in storage providers and manage their database schemas. - [Delivery guarantees](https://immediateplatform.dev/docs/Immediate.Jobs/delivery-guarantees): Design idempotent jobs and understand states, retries, leases, shutdown and retention. - [Dashboard and monitoring](https://immediateplatform.dev/docs/Immediate.Jobs/dashboard-and-monitoring): Secure the dashboard and monitor or manage jobs through its UI, API and JobMonitor. - [Observability and health](https://immediateplatform.dev/docs/Immediate.Jobs/observability-and-health): Export traces, metrics and logs, and add scheduler health checks. - [Testing jobs](https://immediateplatform.dev/docs/Immediate.Jobs/testing-jobs): Test scheduling and execution with a controllable clock, captured storage writes and workflow assertions. - [API reference](https://immediateplatform.dev/docs/Immediate.Jobs/api-reference): Public APIs for defining, scheduling, monitoring, managing, storing and testing jobs. - [How it works](https://immediateplatform.dev/docs/Immediate.Jobs/how-it-works): See how Immediate.Jobs finds, saves and runs a job. - [Diagnostics](https://immediateplatform.dev/docs/Immediate.Jobs/diagnostics): Look up Immediate.Jobs analyzer errors, warnings and common runtime failures. - [Basic](https://immediateplatform.dev/docs/Immediate.Jobs/samples/basic): A minimal ASP.NET Core application using Immediate.Jobs. - [Native AOT](https://immediateplatform.dev/docs/Immediate.Jobs/samples/native-aot): Run Immediate.Jobs in a Native AOT console application. - [.NET Aspire](https://immediateplatform.dev/docs/Immediate.Jobs/samples/aspire): Compose Immediate.Jobs, PostgreSQL, and observability with .NET Aspire. - [Distributed .NET Aspire](https://immediateplatform.dev/docs/Immediate.Jobs/samples/distributed-aspire): Split Immediate.Jobs across an API, a CLI and a worker that share PostgreSQL storage. - [Migration overview](https://immediateplatform.dev/docs/Immediate.Jobs/migration/overview): Plan a move to Immediate.Jobs from Hangfire, Quartz.NET, Coravel or hand-written background services. - [From Hangfire](https://immediateplatform.dev/docs/Immediate.Jobs/migration/hangfire): Move Hangfire fire-and-forget, delayed, recurring and continuation jobs to Immediate.Jobs. - [From Quartz.NET](https://immediateplatform.dev/docs/Immediate.Jobs/migration/quartz): Move Quartz.NET jobs, triggers, JobDataMap values and clustered schedulers to Immediate.Jobs. - [From Coravel](https://immediateplatform.dev/docs/Immediate.Jobs/migration/coravel): Move Coravel invocables, scheduled tasks and queued work to durable Immediate.Jobs. - [From BackgroundService](https://immediateplatform.dev/docs/Immediate.Jobs/migration/background-service): Replace hand-written timer loops, Channel queues and retry code with Immediate.Jobs. ## Immediate.Skills - [Introduction](https://immediateplatform.dev/docs/Immediate.Skills/introduction): Agent skills that teach Claude Code, Codex and other coding agents to build with the Immediate.Platform libraries. - [Installation](https://immediateplatform.dev/docs/Immediate.Skills/installation): Add the Immediate.Skills marketplace to Claude Code or Codex, install plugins, and share them with a team. - [Skills catalog](https://immediateplatform.dev/docs/Immediate.Skills/skills-catalog): Every Immediate.Skills plugin and skill, with what each one does. - [Contributing](https://immediateplatform.dev/docs/Immediate.Skills/contributing): Add or update an Immediate.Skills skill, keep both plugin manifests in sync, and validate the marketplace. ## Cookbook - [The Cookbook](https://immediateplatform.dev/docs/cookbook/the-cookbook): Ready to use examples showcasing common use cases for ImmediatePlatform libraries - [FluentValidation Integration](https://immediateplatform.dev/docs/cookbook/fluent-validation): Learn how to integrate Immediate.Handlers and Immediate.Apis with FluentValidation - [Web API](https://immediateplatform.dev/docs/cookbook/web-api): Web API cookbook example - [Blazor Server](https://immediateplatform.dev/docs/cookbook/blazor): Blazor Server cookbook example - [CLI App](https://immediateplatform.dev/docs/cookbook/cli): CLI App cookbook example - [Full-Stack VSA App](https://immediateplatform.dev/docs/cookbook/fullstack-vsa): Full-Stack VSA App cookbook example - [Publish-Subscribe pattern](https://immediateplatform.dev/docs/cookbook/pub-sub): Cookbook example showing how to implement the publish-subscribe pattern ## Benchmarks - [Performance comparisons](https://immediateplatform.dev/docs/benchmarks/performance-comparisons): Benchmark results comparing Immediate.Handlers against MediatR and other mediator implementations.