Skip to content

DMVCFramework (for short) is a popular and powerful framework for WEB API in Delphi. Supports RESTful and JSON-RPC WEB APIs development.

License

Notifications You must be signed in to change notification settings

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.

🚀 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
  • 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

  • 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)

📊 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)

🔒 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:

🎓 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