graph TD
Cli[Cli]
CommandLine[CommandLine]
Commons[Commons]
Configuration[Configuration]
ConfigurationAbstractions[Configuration.Abstractions]
DependencyInjection[DependencyInjection]
DependencyInjectionAbstractions[DependencyInjection.Abstractions]
FMX[FMX]
Hosting[Hosting]
HostingAbstractions[Hosting.Abstractions]
Linq[Linq]
Logging[Logging]
LoggingAbstractions[Logging.Abstractions]
MediatR[MediatR]
MediatRAbstractions[MediatR.Abstractions]
MiniSpec[MiniSpec]
NNLog[NNLog]
SQLCute[SQLCute]
SQLCuteAbstractions[SQLCute.Abstractions]
SQLCuteInMemory[SQLCute.InMemory]
SQLCuteSpecification[SQLCute.Specification]
Specification[Specification]
SystemProcess[SystemProcess]
VCL[VCL]
Web[Web]
RTIndy[("IndyCore · IndyProtocols · IndySystem")]
RTRESTComponents[("RESTComponents")]
RTfmx[("fmx")]
RTinet[("inet")]
RTinetstn[("inetstn")]
RTvcl[("vcl")]
Cli --> CommandLine
Cli --> Hosting
CommandLine --> Commons
Configuration --> ConfigurationAbstractions
Configuration --> DependencyInjectionAbstractions
Configuration --> LoggingAbstractions
ConfigurationAbstractions --> Commons
DependencyInjection --> DependencyInjectionAbstractions
DependencyInjectionAbstractions --> Commons
FMX --> Hosting
Hosting --> Configuration
Hosting --> DependencyInjection
Hosting --> HostingAbstractions
Hosting --> Logging
HostingAbstractions --> ConfigurationAbstractions
HostingAbstractions --> DependencyInjectionAbstractions
HostingAbstractions --> LoggingAbstractions
Linq --> Commons
Logging --> DependencyInjectionAbstractions
Logging --> LoggingAbstractions
LoggingAbstractions --> Commons
MediatR --> MediatRAbstractions
MediatRAbstractions --> DependencyInjectionAbstractions
NNLog --> HostingAbstractions
NNLog --> Logging
SQLCute --> SQLCuteAbstractions
SQLCuteInMemory --> Linq
SQLCuteInMemory --> SQLCute
SQLCuteSpecification --> SQLCuteInMemory
SQLCuteSpecification --> Specification
Specification --> Commons
SystemProcess --> Commons
VCL --> Hosting
Web --> Hosting
FMX --> RTfmx
MiniSpec --> RTIndy
NNLog -->|IndyCore · IndySystem| RTIndy
VCL --> RTvcl
Web --> RTIndy
Web --> RTRESTComponents
Web --> RTinet
Web --> RTinetstn
classDef abs stroke-dasharray:4 3;
class ConfigurationAbstractions,DependencyInjectionAbstractions,HostingAbstractions,LoggingAbstractions,MediatRAbstractions,SQLCuteAbstractions abs;
classDef rt stroke-dasharray:2 2,stroke-width:2px;
class RTIndy,RTRESTComponents,RTfmx,RTinet,RTinetstn,RTvcl rt;
Modules
DAFce ships 25 packages in independent search paths — add only what you need. The table below lists the nineteen with a page of their own; the other six are the .Abstractions contract packages. Where a module ports a design from another community, the table says which.
| Module | Package | Description |
|---|---|---|
| Cli | Daf.Cli |
The CLI member of the application family — ports the shape of .NET’s Host.CreateApplicationBuilder, and Run returns the exit code |
| CommandLine | Daf.CommandLine |
A port of .NET’s System.CommandLine, the library the dotnet CLI itself is built on: commands, subcommands, options and arguments |
| Commons | Daf.Commons |
Smart pointers, RTTI, threading, arrays, nullable values |
| Configuration | Daf.Configuration |
JSON / env / in-memory config, typed binding |
| DependencyInjection | Daf.DependencyInjection |
Full DI container with scopes and lifetimes |
| Hosting | Daf.Hosting |
IHost / IHostApplicationBuilder lifecycle model |
| Logging | Daf.Logging |
Structured logging with scopes |
| MediatR | Daf.MediatR |
CQRS: commands, queries, notifications, pipelines |
| MiniSpec | Daf.MiniSpec |
BDD testing: Gherkin specs, expectations, live dashboard |
| NNLog | Daf.NNLog |
NLog-inspired logging engine integrated with DAF |
| SQLCute | Daf.SQLCute |
Fluent SQL builder after SqlKata: IQuery as a public AST, one compiler per dialect |
| SQLCute.InMemory | Daf.SQLCute.InMemory |
A second back-end: runs the same IQuery over loaded collections, ANSI NULL semantics. No analogue — SqlKata only compiles to text |
| SQLCute.Specification | Daf.SQLCute.Specification |
The seam: lowers a whole specification — filter, order and paging — onto an IQuery |
| Linq | Daf.Linq |
LINQ-to-Objects: lazy sequences over IEnumerable<T>, closures, no SQL |
| Specification | Daf.Specification |
Specification pattern — filter, order and paging over a deliberately bounded predicate tree, narrower than System.Linq.Expressions so that what cannot be translated is unrepresentable |
| Web | Daf.Web |
Lightweight HTTP server, attribute routing and action results — and no remoting stack: it links neither DataSnap nor DBX |
| VCL | Daf.VCL |
The VCL member of the application family: the same startup as the CLI and Web variants, up to the point where the platform takes over the loop |
| SystemProcess | Daf.SystemProcess |
TSystemProcess — run external processes synchronously or asynchronously, with callbacks for output, error, completion and failure. The .NET analogue is System.Diagnostics.Process |
| FMX | Daf.FMX |
What leans on FireMonkey, isolated so no other package links it: today the bootstrap destination that writes through the platform’s own log service. It is there so the startup report is not lost in silence outside Windows — not platform support |
Six modules also ship a Daf.X.Abstractions package containing only interfaces, for cleaner compile-time dependencies: Configuration, DependencyInjection, Hosting, Logging, MediatR and SQLCute.
What depends on what
Install only the modules you want — but a module brings the packages it requires, and some of them bring a runtime package from the RAD Studio installation. Both are below; the arrows read requires.
Drawn as a transitive reduction: only the edges that do not already arrive by another path. rtl is left out because all 25 packages require it; the third-party runtimes are drawn one node per family — Indy, RESTComponents, fmx, inet, inetstn and vcl — with the real names in the label.
Dotted border marks a contract package (.Abstractions); the dashed rounded nodes are third-party runtimes.
Installable on their own, with no dependency on another DAF package: Commons, MiniSpec, SQLCute.Abstractions.
| Package | Runtime packages it pulls in |
|---|---|
Cli |
rtl |
CommandLine |
rtl |
Commons |
rtl |
Configuration |
rtl |
Configuration.Abstractions |
rtl |
DependencyInjection |
rtl |
DependencyInjection.Abstractions |
rtl |
FMX |
fmx · rtl |
Hosting |
rtl |
Hosting.Abstractions |
rtl |
Linq |
rtl |
Logging |
rtl |
Logging.Abstractions |
rtl |
MediatR |
rtl |
MediatR.Abstractions |
rtl |
MiniSpec |
IndyCore · IndyProtocols · IndySystem · rtl |
NNLog |
IndyCore · IndySystem · rtl |
SQLCute |
rtl |
SQLCute.Abstractions |
rtl |
SQLCute.InMemory |
rtl |
SQLCute.Specification |
rtl |
Specification |
rtl |
SystemProcess |
rtl |
VCL |
rtl · vcl |
Web |
IndyCore · IndyProtocols · IndySystem · RESTComponents · inet · inetstn · rtl |
20 of 25 need nothing beyond rtl.