OPEN SOURCE / THE .NET FLOW ENGINE
Control
the flow.
Make intent explicit.
A focused family of .NET packages for request dispatch, object mapping, diagnostics and testing. Compose only what your application needs.
02 / FOLLOW THE ENGINE
The whole path.
In plain sight.
Walk through a documented AstraFlow capability. Switch flows, select any stage plinth, and inspect the synchronized C# lines. Conceptual shapes grounded in verified 2.3.0 packages.
A request, intentionally routed.
Read Mediator guideDeclare the request and response contract
A typed IRequest<OrderCreated> record states the input and single response type up front without coupling domain contracts to a DI container.
using AstraFlow.Mediator;public sealed record CreateOrder(string Number) : IRequest<OrderCreated>;public sealed record OrderCreated(Guid Id, string Number);services.AddAstraFlowMediator(validateRequestCoverage: true,assemblyMarkerTypes: typeof(CreateOrderHandler));services.AddScoped(typeof(IPipelineBehavior<,>), typeof(LoggingBehavior<,>));public sealed class CreateOrderHandler : IRequestHandler<CreateOrder, OrderCreated>{public Task<OrderCreated> Handle(CreateOrder request, CancellationToken ct)=> Task.FromResult(new OrderCreated(Guid.NewGuid(), request.Number));}// Inject ISender where code only dispatches requestsOrderCreated created = await sender.Send(new CreateOrder("ORD-1042"), ct);
Every stage represents a documented responsibility, not measured execution timing.
Read the getting started guide03 / ENGINEERED TO CONNECT
Three layers. One contract spine.
Every package occupies an explicit plane: shared abstractions sit above dispatch and mapping, grounded by static analyzers and deterministic test harnesses.
Select Architectural Tier
Up / Down arrows or click01 / INPUT · OWNING BOUNDARY
Exploded viewDeclare intent
Application boundaries start with light, serializable request and notification interfaces. Projects share AstraFlow.Contracts across domain, client, and worker assemblies without pulling in mediator or runtime engines.
Owning NuGet Packages (1)
Key Type Contracts
IRequest<T>IRequestINotificationIStreamRequest<T>IRequestContext
04 / MODULAR BY CHOICE
Focused by design.
Built to compose.
Explore the focused packages without installing an entire stack. Every capability has a documented boundary.
Mediator
Typed requests, handlers, and pipelines.02 / MAPPINGMapper
Declared mapping rules and projections.03 / INSPECTIONDiagnostics
Findings, reports, and CLI exports.04 / CONFIDENCETesting
Fakes, harnesses, and focused assertions.05 / BUILD TIMEGenerators
Opt-in generated registration and mapping.06 / TOOLINGCLI & more
Reports, graphs, validation, integrations.05 / THE DETAILS MATTER
Geometry with meaning.
Isometric relationships, connected systems, and precise motion — quietly supporting the engineering architecture, never replacing it.
Isolates IRequest<T> and INotification DTO boundaries so shared assemblies remain dependency-free.
Figure caption: Exploded isometric architecture ready — move pointer across figure to inspect strata.
06 / READY WHEN YOU ARE
Begin with one
responsibility.
Read the guide. Choose the smallest useful dependency. Stay in control.