drogonframework/drogon

Drogon: A C++14/17/20 based HTTP web application framework running on Linux/macOS/Unix/Windows

View on GitHub ↗Jump to charts ↓

Summary Information

Updated 23 minutes ago
Added to GitGenius on September 4th, 2026
Created on April 27th, 2018
Open Issues & Pull Requests: 430 (+0)
GitHub issues: Enabled
Number of forks: 1,379
Total Stargazers: 14,258 (+0)
Total Subscribers: 233 (+0)

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Issue API getrepoissuespagesummary failed: 429 Rate limit exceeded. Please try again later.

Detailed Description

Drogon is a C++17/20 based HTTP web application framework that runs on Linux, macOS, FreeBSD, OpenBSD, HaikuOS, and Windows.

Drogon addresses the need to build high-performance web servers in C++ with a focus on asynchronous, non-blocking I/O. It uses epoll on Linux and kqueue on macOS/FreeBSD to handle high concurrency efficiently. The framework decouples controllers and views from the main program through a template-based reflection mechanism, allowing routing to be configured via macros or configuration files rather than requiring explicit setup in the application entry point. It supports HTTP 1.0/1.1, HTTPS, WebSocket, and JSON-based REST APIs, with additional capabilities including filter chains for cross-cutting concerns, CSP template views with dynamic compilation, gzip and brotli compression, and pipelining.

Drogon suits teams building performance-critical web services in C++ who want to avoid manual socket management and networking boilerplate. It is particularly well-suited for applications requiring asynchronous database operations, as it provides non-blocking drivers for PostgreSQL, MySQL, MariaDB, and SQLite3, along with Redis support. The framework includes a lightweight ORM for object-to-database mapping and a command-line tool for scaffolding controllers and views. Projects needing WebSocket support, file upload and download, or plugin-based extensibility will find these features built in. The framework's approach to decoupling makes it accessible for developers who want to keep their main program simple while organizing complex application logic.

The project maintains active development with regular commits addressing bug fixes, feature additions, and cross-platform compatibility. Pull requests receive timely review and integration. The codebase shows consistent attention to performance optimization and expanding platform support. Documentation is actively maintained across multiple languages. The maintainers respond to issues and incorporate community feedback into the framework's evolution.