A Drogon CMS built with C, Drogon, CMake, Adwaita and GTK4.
This is a Drogon Content Management System(CMS).
License
- GPL-3.0
Features and Strengths
- Faster than NginX, WordPress and Strapi
- Built on CMake/C/C++/GTK4/Drogon
- Built on Freedom Software
- Blazing Fast Website Architecture
- Headless CMS Ready for Site Generators
- Lightweight Security with serverless architecture, plus optional proxy securities and caching.
- Excellent Documentation
Community Plugins
- Proxy/Local Caching Support
- Website Builder
- Website Preview/Drafts
- WYSIWYG Editor
- Image Gallery
- ...
Benchmarks
An-toa test results of Drogon Server Only with 2 IO threads
wrk -c200 -d5 -t2 http://localhost:8848/hello
Running 5s test @ http://localhost:8848/hello
2 threads and 200 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 1.91ms 689.56us 7.56ms 72.86%
Req/Sec 52.72k 3.50k 63.00k 71.00%
524174 requests in 5.00s, 91.48MB read
Requests/sec: 104741.94
Transfer/sec: 18.28MB
An-toa test results of Drogon Server + Drogon Proxy with 2 IO threads
wrk -c200 -d5 -t2 http://localhost:8088/hello
Running 5s test @ http://localhost:8088/hello
2 threads and 200 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 3.95ms 0.94ms 8.80ms 67.84%
Req/Sec 25.39k 3.15k 29.20k 84.00%
252520 requests in 5.00s, 44.07MB read
Requests/sec: 50465.86
Transfer/sec: 8.81MB
oDinZu NodeJs Server Test with 2 IO threads
wrk -c200 -d5 -t2 http://localhost:3000
Running 5s test @ http://localhost:3000
2 threads and 200 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 51.58ms 159.51ms 1.43s 93.61%
Req/Sec 7.56k 1.00k 8.24k 94.00%
75277 requests in 5.01s, 11.56MB read
Requests/sec: 15033.66
Transfer/sec: 2.31MB
oDinZu Drogon Server Web Sockets with 2 IO threads
Running 5s test @ ws://localhost:8848/chat
2 threads and 200 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 4.70ms 9.94ms 258.14ms 99.17%
Req/Sec 25.20k 2.14k 30.09k 82.00%
250651 requests in 5.01s, 171.39MB read
Non-2xx or 3xx responses: 250651
Requests/sec: 50056.01
Transfer/sec: 34.23MB
Development & Contributing
Developer Dependency Requirements
- GCC (GNU C/C++ Compiler) >= 13.2.1
- CMake >= 3.28
- Drogon >= 1.9.1 [SEE REQUIREMENTS]
- Pkg-Config >= 1.8.1
- Gtk4 >= 4.0
- Adwaita >= 1.3.5
- OpenSSL >= 3.1.2
- Optional PostgreSQL Database(Default) >= 2.39
- Optional Cambalache >= 0.14 (Gtk4 Editor) [SEE REQUIREMENTS]
- Optional Geany IDE >= 1.38
- CLI Experience
Note: This has been built and tested on Arch Linux
Steps to Build DrogonCMS from Source Code
- Clone the repository
git clone https://git.sharpetronics.com/sharpetronics/DrogonCMSandcd DrogonCMS/ - optional checkout correct branch e.g.
git checkout drogonCMS-cmake - Run
cmake -D CMAKE_BUILD_TYPE=Release . - Then, to build the executable, we do
cmake --build . - Run the app with
./DrogonCMS
Requirements
Drogon framework compile/build dependencies.
- Drogon >= 1.9.1 https://github.com/drogonframework/drogon/wiki/ENG-02-Installation#System-Preparation-Examples
Recommendations
A GTK4 editor is a recommended tool for this project; all UI's and project files .cmb are stored in ./src/ui/.
- Cambalache >= 0.14 https://gitlab.gnome.org/jpu/cambalache
An optional recommendation is Geany IDE.
- Geany IDE https://www.geany.org/
IDE build commands via Geany Build -> Set Build Commands
This is what my build commands look like in Geany IDE with GNU Automake Tools.
| Name | Command | Working Directory |
|---|---|---|
| Configure | ../configure | /home/username/Desktop/Local-Development/cplusplus/drogon-dash/build |
| AutoReconf | autoreconf -vi | /home/username/Desktop/Local-Development/cplusplus/drogon-dash |
| Make | make | /home/username/Desktop/Local-Development/cplusplus/drogon-dash/build |
| Run | ./drogon_dashboard | /home/username/Desktop/Local-Development/cplusplus/drogon-dash/build |
| Make Bins | make dist | /home/username/Desktop/Local-Development/cplusplus/drogon-dash/build |
This is what my build commands look like in Geany IDE with BSD CMake Tools.
| Name | Command | Working Directory |
|---|---|---|
| Configure | cmake -D CMAKE_BUILD_TYPE=Release | /home/username/Desktop/Local-Development/cplusplus/DrogonCMS/ |
| Build | cmake --build . | /home/username/Desktop/Local-Development/cplusplus/DrogonCMS |
| Run GUI | ./DrogonCMS | /home/username/Desktop/Local-Development/cplusplus/DrogonCMS/ |
| Run API | ./local-drogon-server-api | /home/username/Desktop/Local-Development/cplusplus/DrogonCMS/vendors/drogon/local-api-server/ |
| Install | cmake --install | /home/username/Desktop/Local-Development/cplusplus/DrogonCMS/ |
Authors
- SharpeTronics, LLC
- oDinZu WenKi(Charles)
Financial Support & Donations
oDinZu WenKi(Charles) https://liberapay.com/oDinZu/
- Liberapay is a recurrent donations platform
- Run by a non-profit organization
- Source code is public
- No commission fee
- ~5% payment processing fee
Learning Resources
- Adawaita Documentation https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/index.html
- Cambalache https://gitlab.gnome.org/jpu/cambalache
- C References https://en.cppreference.com/w/c
- CMake Documentation https://cmake.org/cmake/help/book/mastering-cmake/index.html
- Drogon Web Server https://github.com/drogonframework/drogon
- Geany IDE https://www.geany.org/
- Gio Documentation https://docs.gtk.org/gio/index.html
- GLib Documentation https://docs.gtk.org/glib/index.html
- GObject Documentation https://docs.gtk.org/gobject/index.html
- GTK 4 Demos https://gitlab.gnome.org/GNOME/gtk/-/tree/main/demos
- GTK 4 Documentation https://docs.gtk.org/gtk4/
Notice: We focus implementation with the C programming language and only add various features of C ++ code.
Description
Languages
CMake
51.1%
C
48.9%