Delphimvcframework
DMVCFramework (for short) is a popular and powerful framework for Web API and Web Applications in Delphi. Supports RESTful and JSON-RPC WEB APIs development.
Install / Use
/learn @danieleteti/DelphimvcframeworkREADME
Table of Contents
- DelphiMVCFramework
DelphiMVCFramework
The most popular Delphi RESTful framework on GitHub
DelphiMVCFramework is a powerful, open-source framework for building RESTful services, JSON-RPC APIs, and web applications with Object Pascal. It provides a complete MVC architecture with built-in ORM, authentication, TLS 1.3 support and extensive middleware support.
Star History
<a href="https://www.star-history.com/?repos=danieleteti%2Fdelphimvcframework&type=date&legend=top-left"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/image?repos=danieleteti/delphimvcframework&type=date&theme=dark&legend=top-left" /> <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/image?repos=danieleteti/delphimvcframework&type=date&legend=top-left" /> <img alt="Star History Chart" src="https://api.star-history.com/image?repos=danieleteti/delphimvcframework&type=date&legend=top-left" /> </picture> </a>🚀 Quick Links
- 📖 Official Guide - Comprehensive documentation and tutorials
- ⚡ Quick Start Guide - Get up and running in 5 minutes
- 📦 Installation - Step-by-step installation instructions
- 🎯 Samples - 40+ examples covering all features
- 📝 Changelog - Version history and release notes
🎯 Key Features
🏗️ Architecture & Framework
- RESTful compliant (Richardson Maturity Model Level 3)
- JSON-RPC 2.0 support with automatic object remotization
- MVC pattern implementation with controller inheritance
- Middleware system for request/response processing
- Dependency injection support
- Domain modeling first approach
🔐 Security & Authentication
- JWT (JSON Web Token) authentication and authorization
- HTTP Basic Authentication support
- Custom authentication mechanisms
- CORS (Cross-Origin Resource Sharing) handling
- TLS 1.3 support for secure communications
- JWT Blacklist middleware for token revocation
💾 Data Access & ORM
- MVCActiveRecord - Powerful ORM with full CRUD operations
- Multi-database support: PostgreSQL, MySQL, MariaDB, Firebird, InterBase, SQLite, Microsoft SQL Server, Oracle
- RQL (Resource Query Language) for flexible querying
- Named queries support for optimized database access
- Connection pooling and transaction management
- Automatic entity generation from database schema
🌐 Web & API Features
- WebSocket support for real-time bidirectional communication (server & client)
- Content negotiation with multiple MIME types
- Server-Side Views with Mustache and TemplatePro support
- Static file serving middleware
- File upload/download handling
- Server-Sent Events (SSE) for real-time updates
- HATEOAS (Hypermedia as the Engine of Application State) support
- OpenAPI/Swagger documentation generation
- Compression support (gzip, deflate)
- Rate limiting with in-memory and Redis-backed implementations
📊 Data Serialization
- Flexible JSON serialization/deserialization
- Custom serializers for complex types
- Nullable types support
- Dataset to JSON conversion
- Multiple naming conventions (camelCase, PascalCase, snake_case, etc.)
- Attribute-based field mapping
🛠️ Development & Deployment
- IDE Wizard for project creation
- Comprehensive logging with LoggerPro integration
- Built-in profiler for performance monitoring
- Unit testing framework (250+ tests)
- dotEnv configuration support
- Multiple deployment options: Standalone, Apache module, IIS ISAPI, Linux daemon
🖥️ Platform Support
Delphi Versions
- Delphi 13 Florence ✅
- Delphi 12.x Athens ✅
- Delphi 11.x Alexandria ✅
- Delphi 10.4 Sydney ✅
- Delphi 10.3 Rio ✅
- Delphi 10.2 Tokyo ✅
- Delphi 10.1 Berlin ✅
- Delphi 10 Seattle ✅
Operating Systems
- Windows (32-bit and 64-bit)
- Linux (64-bit)
- Android (experimental support)
Deployment Targets
- Console Applications
- Windows Services
- Linux Daemons
- Windows VCL Applications
- Windows or Linux FMX Applications
- Apache Modules (Windows/Linux)
- IIS ISAPI Extensions (Windows)
Supported Databases (MVCActiveRecord)
MVCActiveRecord works with any database supported by FireDAC. The RQL (Resource Query Language) compiler and SQL generator are available for the following databases:
| Database | Minimum Version | Notes | |----------|----------------|-------| | PostgreSQL | 9.6+ | RETURNING clause, native UUID. Recommended: 13+ | | Microsoft SQL Server | 2012+ | OFFSET/FETCH pagination requires 2012. Recommended: 2019+ | | MySQL | 5.7+ | LAST_INSERT_ID, backtick quoting. MariaDB 10.2+ also supported | | Firebird | 1.5+ | gen_id sequences, ROWS pagination. RETURNING clause requires 2.0+. Recommended: 3.0+ (IDENTITY columns) | | InterBase | XE3+ | No RETURNING clause, uses gen_id sequences for auto-generated keys | | SQLite | 3.8+ | last_insert_rowid, no sequences. Recommended: 3.30+ | | Oracle | 12c (12.1)+ | OFFSET/FETCH pagination, RETURNING clause, sequences via DUAL |
Tip: Include
MVCFramework.SQLGeneratorsin your project's uses clause to register all database backends at once. Alternatively, include only the specific generator you need (e.g.MVCFramework.SQLGenerators.PostgreSQL).
🔒 Security & TLS 1.3 Support
DelphiMVCFramework provides enterprise-grade security features including full TLS 1.3 support. The framework automatically negotiates the highest available TLS version and provides:
- Perfect Forward Secrecy with modern cipher suites
- Certificate validation and custom certificate handling
- SNI (Server Name Indication) support for multiple SSL certificates
- HTTP Strict Transport Security (HSTS) headers
- Secure cookie handling with SameSite attributes
- CSRF protection mechanisms
TLS 1.3 brings significant security and performance improvements, including faster handshakes and stronger encryption algorithms. DelphiMVCFramework leverages these improvements automatically when deployed in compatible environments.
🏁 Quick Start
Here's how a simple DMVCFramework controller looks like:
// 1. Create a controller
[MVCPath('/api/hello')]
TMyController = class(TMVCController)
public
[MVCPath('/world')]
[MVCHTTPMethod([httpGET])]
function HelloWorld: TMyObject;
end;
// 2. Implement the action
function TMyController.HelloWorld: TMyObject;
begin
Result := TMyObject.Create('Hello World!');
end;
// 3. Register and start server elsewhere
FMVC := TMVCEngine.Create(Self);
FMVC.AddController(TMyController);
📚 Learning Resources
📖 Official Guide
The comprehensive "DelphiMVCFramework - The Official Guide" is available in multiple languages:
- 🇬🇧 English (eBook & Hardcover)
- 🇧🇷 Portuguese
- 🇪🇸 Spanish
📘 Technical Guides & Papers
Premium guides and video tutorials available at the DMVCFramework Patreon Shop:
- TemplatePro 1.1 - The Definitive Guide (EN, IT, ES, DE)
- A Practical Guide to Managing Complex Configurations with .env (EN, IT)
- Prompt Engineering - Mastering AI Communication (EN, IT, ES, DE)
- Building a Robust Job Queue System with FirebirdSQL (EN, IT, E
