Skip to content

danieleteti/delphimvcframework

Repository files navigation

Table of Contents

DelphiMVCFramework

GitHub All Releases Ask DeepWiki Mentioned in Awesome

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

Star History Chart

🚀 Quick Links

🎯 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 — 872 tests running against 5 server hosts (Classic / Indy Direct / HTTP.sys / Apache 2.4 / ISAPI). See docs/unit_tests.md for how to run them and the prerequisites.
  • 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.SQLGenerators in 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);

👉 See full Quick Start Guide

📚 Learning Resources

📖 Official Guide

The comprehensive "DelphiMVCFramework - The Official Guide" is available in multiple languages:

📘 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, ES)
  • Practical Guide to API and Webhooks with DelphiMVCFramework (IT, ES)
  • Understanding JSON-RPC: A Lightweight Remote Procedure Call Protocol (EN)
  • CRUD Web API with Delphi, DMVCFramework, and PostgreSQL (EN)
  • MVCActiveRecord Series - Complete ORM guide in 3 parts (EN, IT)
  • Pagination with RQL in DMVCFramework (EN)
  • Using Caddy as Reverse Proxy for DMVCFramework Applications (EN, IT, ES)
  • Localization in DMVCFramework Web Applications (Video)
  • Sessions in DMVCFramework (Video)
  • Bag of Words in Delphi - NLP guide (EN, IT) — Free for Patreon members

🎓 Training & Support

🤝 Community & Support

💬 Get Help

🎯 Support the Project

  • Star this repository - Help others discover DMVCFramework
  • 🐛 Report bugs - Help improve the framework
  • 📝 Contribute documentation - Share your knowledge
  • 💰 Become a Patron - Access to premium contents, videos, article etc. reserved to supporters

👥 Contributors

🏆 Success Stories

"DMVCFramework is a great framework. It's very intuitive, fast, easy to use, actually there is nothing more to ask for." - Samir

"I'm still amazed by the DelphiMVCFramework code and documentation. Thank you very much and I am amazed by your quick feedback." - Benjamin Yang, Director of SQLGate

"We started the process of migrating our systems to micro services and are loving the DMVCFramework." - E. Costa

🏢 Sponsors

DelphiMVCFramework is proudly sponsored by:

Gold Sponsors
bit Time Professionals
bit Time Software
Silver Sponsors
Centro Software
Delphi Studio ES
Orion Law
Vivaticket

📄 License

DelphiMVCFramework is released under the Apache License 2.0. See LICENSE file for details.

🔗 Quick Navigation

Documentation Community
Quick Start Facebook Group
Installation GitHub Discussions
Samples X
RQL Guide Blog
dotEnv

Made with ❤️ by Daniele Teti and the community