This document consolidates the work plan for the Beta V1.0 phase. The goal is to ensure that all implemented features are documented, tested, and ready for production use.
⚠️ Document Under Construction: This roadmap is being actively updated. We are performing a complete audit of the source code and discovering already implemented functionalities that were not documented. New features may be added or moved between categories at any time.
For technical details and granular status of each module, check:
- Web Framework Roadmap (HTTP Abstractions, MVC, SignalR)
- ORM Roadmap (Dialects, Type System, Performance)
- Infra & CLI Roadmap (Hosting, DI, Logging)
| Feature | Status | Notes |
|---|---|---|
Minimal APIs (MapGet, MapPost) |
✅ Ready | Tested in Web.Dext.Starter.Admin |
| Controllers ([ApiController] / POCO) | ✅ Ready | High compatibility with ASP.NET Core patterns. No base class required. |
| Model Binding (JSON Body -> Record/Class) | ✅ Ready | Support for nesting, lists, and Mixed Binding (Header/Query/Route/Body) |
| Dependency Injection (Scoped/Singleton/Transient) | ✅ Ready | Full integration with HttpContext |
| Middleware Pipeline | ✅ Ready | Custom Middlewares supported |
| Static Files | ✅ Ready | MIME types support and caching |
| Cookies | ✅ Ready | Read/Write with security options |
| Multipart/Form-Data | ✅ Ready | File upload via IFormFile |
| Response Compression | ✅ Ready | Native GZip |
| HTTPS/SSL | 🟡 Needs Validation | Testing required for all supported versions (OpenSSL 1.0.2, 1.1, 3.0) and Taurus TLS integration |
| CORS | ✅ Ready | Middleware with Policy Builder |
| Rate Limiting | ✅ Ready | Token Bucket & Fixed Window |
| Health Checks | ✅ Ready | Extensible /health endpoint |
| API Versioning | ✅ Ready | Via URL, Header, or Query String |
| OpenAPI / Swagger | ✅ Ready | Automatic documentation generation |
| Stream Responses | ✅ Ready | Response.Write(TStream) |
| Response Caching | ✅ Ready | [ResponseCache] header control |
| Filters Pipeline | ✅ Ready | Action & Result Filters (LogAction, RequireHeader) |
| JWT Authentication | ✅ Ready | Token Generation and Validation (HS256) |
| Validation | ✅ Ready | Validation library with Attributes ([Required], [Email]) |
| Options Pattern | ✅ Ready | Configuration binding to classes (IOptions<T>) |
| Zero Alloc HTTP Context | ✅ Ready | HTTP Server/Context with zero allocations and on-demand consumption |
| Database as API | ✅ Ready | Zero-code REST endpoints from entities (TDataApiHandler<T>.Map) with filtering, pagination, security policies |
| RegisterForDisposal | ✅ Ready | Host-lifetime object management via IApplicationBuilder.RegisterForDisposal |
| Real-Time Hubs ⭐ NEW | ✅ Ready | SignalR-compatible real-time communication (Dext.Web.Hubs) - Groups, Clients, Broadcast |
| WebBroker Server Adapter ⭐ NEW | ✅ Ready | Support deployment as ISAPI/CGI via WebBroker (IIS/Apache) |
| Middleware | Class | Function |
|---|---|---|
| Exception Handler | TExceptionHandlerMiddleware |
Captures global exceptions and returns JSON/ProblemDetails or error page. |
| HTTP Logging | THttpLoggingMiddleware |
Logs requests, responses, headers, and body (configurable). |
| CORS | TCorsMiddleware |
Manages Cross-Origin Resource Sharing with flexible policies. |
| Rate Limiting | TRateLimitMiddleware |
Limits requests by IP, route, or custom key (Token Bucket, Fixed Window). |
| Static Files | TStaticFileMiddleware |
Serves static files with MIME type negotiation. |
| Multi-Tenancy | TMultiTenancyMiddleware |
Resolves current Tenant and populates the context. |
| Startup Lock | TStartupLockMiddleware |
Returns 503 if the application is in startup/migration state. |
| Compression | TCompressionMiddleware |
Compresses responses (GZip) if supported by the client. |
| Feature | Status | Notes |
|---|---|---|
| CRUD Operations (Add, Update, Remove, Find) | ✅ Ready | Basic functional |
Fluent Query API (Where, OrderBy, Take) |
✅ Ready | Robust SQL translation |
Smart Properties (u.Age > 18) |
✅ Ready | Type-safe expressions, IntelliSense, SQL Generation |
| Relationships (1:1, 1:N) | ✅ Ready | Include (Eager Loading) functional |
Attributes Mapping ([Table], [Column]) |
✅ Ready | |
| Migrations (CLI & Runtime) | ✅ Ready | migrate:up, down, generate |
| Multi-Tenancy | ✅ Ready | Schema-based, DB-based, Column-based |
| Advanced Types (UUID, JSON, Arrays) | ✅ Ready | Automatic serialization |
| Bulk Operations | ✅ Ready | Bulk Update/Delete |
| Advanced Querying | ✅ Ready | Join (Inner, Left, Right, Full) and GroupBy with full SQL generation |
| Inheritance Mapping (TPH) | ✅ Ready | Discriminator column supported |
| Lazy Loading | ✅ Ready | Lazy<T>, IList<T>, and ILazy<T> wrapper |
| Scaffolding (DB First) | ✅ Ready | Entity generation from Database Schema |
| Soft Delete | ✅ Ready | [SoftDelete] attribute |
| Optimistic Concurrency | ✅ Ready | [Version] attribute |
| FireDAC Phys Driver | ✅ Ready | Physical driver for transparent integration with FireDAC |
| Dialect Auto-Detection | ✅ Ready | Enum-based deterministic dialect identification (ddPostgreSQL, etc) |
| Field Mapping | ✅ Ready | Field-based mapping (in addition to properties) to avoid triggering setters when loading from database |
| Feature | Status | Notes |
|---|---|---|
CLI Tool (dext.exe) |
✅ Ready | Migrations, Tests & Code Coverage |
Async Tasks (TAsyncTask) |
✅ Ready | Modern concurrency primitives |
Logging (ILogger) |
✅ Ready | Log abstraction |
Configuration (IConfiguration) |
✅ Ready | JSON and YAML file providers |
| Binary JSON Parser | ✅ Ready | High-performance binary JSON parser |
AutoMapper (TMapper) |
✅ Ready | DTO ↔ Entity mapping with RTTI, custom member mapping and collections |
| Zero-Leak Record Facades | ✅ Ready | Use of Records for TDextServices and Builders to eliminate heap-captured memory leaks |
| Custom Constructors (DI) | ✅ Ready | [ServiceConstructor] attribute to specify which constructor to use in DI |
| TypeInfo Cache | ✅ Ready | Cache RTTI metadata for performance optimization |
| Feature | Status | Notes |
|---|---|---|
Mocking Engine (Mock<T>) |
✅ Ready | Dynamic proxies via TVirtualInterface |
Class Mocking (Mock<TClass>) |
✅ Ready | Virtual method interception |
Auto-Mocking (TAutoMocker) |
✅ Ready | Automatic dependency injection for tests |
Snapshot Testing (MatchSnapshot) |
✅ Ready | JSON/String snapshot verification |
Fluent Assertions (Should) |
✅ Ready | Expressive assertion library |
Global Syntax (Should()) |
✅ Ready | Clean API for tests |
Soft Asserts (Assert.Multiple) |
✅ Ready | Failure aggregation for multiple checks |
| Live Dashboard | ✅ Ready | Real-time Web UI with Timeline & History |
| Integration | ✅ Ready | Works with Dext DI and Core types |
| Attribute-Based Runner ⭐ NEW | ✅ Ready | [TestFixture], [Test], [Setup], [TearDown] - NUnit/xUnit style |
| Assembly Lifecycle Hooks ⭐ NEW | ✅ Ready | [AssemblyInitialize], [AssemblyCleanup] |
| Parameterized Tests | ✅ Ready | [TestCase(1, 2, 3)] data-driven testing |
| ITestContext Injection ⭐ NEW | ✅ Ready | Runtime info: Context.CurrentTest, Context.WriteLine |
| JUnit XML Report | ✅ Ready | CI integration (Jenkins, GitHub Actions, GitLab CI) |
| xUnit XML Report ⭐ NEW | ✅ Ready | .NET ecosystem compatibility |
| TRX Report ⭐ NEW | ✅ Ready | Azure DevOps / Visual Studio integration |
| HTML Report ⭐ NEW | ✅ Ready | Beautiful standalone dark-themed report |
| JSON Report | ✅ Ready | Custom tooling integration |
| SonarQube Report | ✅ Ready | Quality gates integration |
| Fluent API | ✅ Ready | TTest.Configure.Verbose.ExportToHtml('report.html').Run |
| Code Coverage | ✅ Ready | Automatic generation via dext test --coverage |
| Feature | Status | Notes |
|---|---|---|
Application State (IAppStateObserver) |
✅ Ready | States: Starting, Seeding, Running, Stopping |
Graceful Shutdown (IHostApplicationLifetime) |
✅ Ready | Tokens for Started, Stopping, Stopped |
Background Services (IHostedService) |
✅ Ready | Asynchronous background tasks with DI |
Startup Lock (TStartupLockMiddleware) |
✅ Ready | Blocks requests with 503 during boot |
The focus now is to create one example for each feature and unify the documentation.
- Create "The Dext Book": A comprehensive multi-file documentation covering all framework aspects. English | Português
- [/] API Reference: Custom solution in progress using DelphiAST. Tool:
Tools/DextASTParser- generates AST XML from Delphi sources.
- Dext.Examples.Streaming: Demonstrate large file download and upload (Stream Writing + Multipart). ✅ Ready (Pending Tests)
- Dext.Examples.MultiTenancy: Demonstrate complete SaaS implementation (Schema per Tenant). ✅ Ready (Pending Tests)
- Dext.Examples.ComplexQuerying: Demonstrate advanced ORM queries with JSON, Arrays, and reports. ✅ Ready (Pending Tests)
- Update
Web.TaskFlowAPIto use new Cookie and Compression features. ✅ Ready (Pending Tests) - Review
Web.Dext.Starter.Adminto ensure use of current best practices. ✅ Ready (Pending Tests)
- Installation Automation: Automate framework installation/setup (possibly exploring Boss and TMS Smart Setup).
- Package Versioning Strategy: Improve installation and versioning of packages using
LIBSUFFIX AUTOor fixed suffixes per IDE version to support side-by-side installations. - Generics Optimization: Review intensive use of Generics to avoid "code bloat" and improve compilation time.
- General Code Review: Focused review on consistency, memory leaks, and unhandled exceptions.
- Formatting & Style: Standardize alignment and formatting (Object Pascal Style Guide).
- Agent Guidelines: Create technical documentation (
.agent/rules.mdorCONTRIBUTING_AI.md) detailing design patterns, architecture rules, and instructions for configuring/guiding AI agents in Dext development. - Setup SSL Conditionally: In
TWebApplication.Setup, only load the SSLHandler section ifFServerFactoryis not assigned, as WebBroker (IIS/Apache) handles SSL offloading natively.
Implement integration tests running the ORM test suite against Docker containers for each database.
| Database | Dialect Implemented? | Automated Tests? | Status |
|---|---|---|---|
| SQLite | ✅ Yes | ✅ Yes | 🟢 Stable |
| PostgreSQL | ✅ Yes | ✅ Yes | 🟢 Stable |
| SQL Server | ✅ Yes | ✅ Yes | 🟢 Stable |
| Firebird | ✅ Yes | ✅ Yes | 🟢 Stable |
| MySQL / MariaDB | ✅ Yes | ✅ Yes | 🟢 Stable |
| Oracle | ✅ Yes | ❌ No (Manual) | 🟡 Beta (Needs Validation) |
| InterBase | ✅ Yes | ❌ No (Manual) | 🟡 Beta (Needs Validation) |
Immediate Action: Create
Docker-Composeenvironment to spin up all databases and unified test script.
- Create HTTP integration tests (run real server and make real requests) to validate:
- Cookie persistence/reading.
- Binary file uploads.
- Compression (verify Content-Encoding header).
- Concurrency (Apache Bench / k6).
Establish a performance baseline for V1.
-
Web Framework (Requests/sec):
- Hello World (Plain Text).
- JSON Serialization (Small and large objects).
- DB Read (1 simple query).
- Tool:
wrkork6. - Comparison: vs DataSnap, vs Horse (if applicable), vs ASP.NET Core (as a target reference).
-
ORM (Op/sec):
- Bulk Insert (10k records).
- Select with Hydration (10k records).
- Comparison: vs Pure FireDAC.
Features moved to v1.1 or v2.0:
-
MediatR Pattern: Implementation of the Mediator pattern for CQRS (Command/Query Responsibility Segregation), facilitating separation of business logic and handlers. Support for
IRequest<TResponse>,IRequestHandler<TRequest, TResponse>, and pipeline behaviors for validation, logging, and transactions. -
WebSockets: Native support for bidirectional real-time communication (needed for Dext Forum).
-
Server-Sent Events (SSE): Lightweight alternative to WebSockets for unidirectional pushes.
-
Background Jobs/Queues: Robust queue system for asynchronous processing (Redis/RabbitMQ integration).
-
Scheduled Jobs (CRON): Scheduling recurrent tasks (e.g., daily reports, data cleanup).
-
Developer Experience (DevX):
- CLI REST Runner: ✅ IMPLEMENTED - Support for parsing and executing
.http/.restfiles. Parser (THttpRequestParser) and Executor (THttpExecutor) are ready. Fluent REST Client: ✅ IMPLEMENTED - High-performance HTTP Client with fluent API (TRestClient).- IDE Integration: Future plugin to run requests directly from the Delphi IDE editor.
- CLI REST Runner: ✅ IMPLEMENTED - Support for parsing and executing
-
Docker Tooling:
Dockerfiletemplates anddext docker initcommand to simplify deployment. (Priority) -
Telemetry & Observability: Support for OpenTelemetry (Tracing/Metrics) and native dashboards.
-
Advanced Resilience: Retry, Circuit Breaker, and Timeout patterns in Async API.
-
CancellationToken Timeout: Automatic timeout support in
CancellationTokenfor async operations (CancellationToken.WithTimeout(Duration)). -
Immutable Data Structures:
ImmutableList<T>,ImmutableDictionary<K,V>, andNullable<T>(ReadOnly) for thread-safe concurrency (Scalability). -
Kestrel NativeAOT: High-performance driver via bridge with .NET (Experimental).
-
View Engine: ✅ IMPLEMENTED - Integration with WebStencils (Delphi 12.2+) and agnostic SSR support with fluent DSL.
-
Server Adapters: ✅ IMPLEMENTED - Support deployment in WebBroker (ISAPI/Apache/IIS) in addition to Indy. -
Native Integration: Explore optional integration with LiveBindings for RAD scenarios and adapters for DataSnap.
-
JSON Columns (JSONB Support): Real ORM support implementation for
[JsonColumn]attribute. -
NoSQL Support (MongoDB in ORM).
-
Distributed Caching (Redis implementation - In Progress).
-
SQL Statement Caching: Cache generated SQL strings for specifications to skip generation overhead (Compiled Queries).
-
Feature Toggle: Feature management system (flags) to dynamically enable/disable functionalities.
-
SNI / Virtual Hosts: Support for multiple domains and certificates on the same IP (Taurus TLS).
- Debug Visualizers: Create custom visualizers for Dext types (Prop, Smart Types) to show easy-to-read values (e.g., 'Text' instead of internal record structure) during debugging.