PnyxCMS is a modular PHP content management system built for speed. Flat-file pages render in a few milliseconds using 2 MB of memory, and a heavily formatted 70 KiB Markdown article from the database averages 28 ms on a low-power Celeron box. It runs comfortably on the cheapest shared hosting or VPS.
  • PHP 83.6%
  • CSS 12.1%
  • Go Template 4.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-29 21:57:47 +03:00
configs library/sql - sql library library 2026-09-29 21:57:47 +03:00
content Honour Global Privacy Control in payload/do-not-track 2026-09-27 04:10:20 +03:00
images Add logo and icons in images/, add og:image to templates 2026-09-27 05:40:00 +03:00
includes library/sql - sql library library 2026-09-29 21:57:47 +03:00
languages library/sql - sql library library 2026-09-29 21:57:47 +03:00
modules module/simple-pages - bugfixes; module/posts - bugfixes, cache support, post weights (ordering) and optional category support through frontmatter 2026-09-29 21:04:16 +03:00
templates module/simple-pages - bugfixes; module/posts - bugfixes, cache support, post weights (ordering) and optional category support through frontmatter 2026-09-29 21:04:16 +03:00
.htaccess module/simple-pages - bugfixes; module/posts - bugfixes, cache support, post weights (ordering) and optional category support through frontmatter 2026-09-29 21:04:16 +03:00
index.php Initial public release 2026-09-27 02:46:59 +03:00
LICENSE Initial public release 2026-09-27 02:46:59 +03:00
manifest.php library/sql - sql library library 2026-09-29 21:57:47 +03:00
README.md Honour Global Privacy Control in payload/do-not-track 2026-09-27 04:10:20 +03:00
robots.txt Initial public release 2026-09-27 02:46:59 +03:00

PnyxCMS

A small, fast, modular PHP CMS. Server-rendered, no client-side JavaScript, comfortable on the cheapest shared hosting or VPS.

Why PnyxCMS

  • Fast. Flat-file pages render in 1.5–5.2 ms with 2 MB peak RAM; a 70 KiB Markdown article from the database averages 28 ms (Celeron N5105).
  • Modular. Everything beyond a small core is a component you enable in one manifest file.
  • Lean. No framework, no Composer dependencies, no build step.
  • Trusts its operator. No auto-escaping or other fool-proofing in the core; components that take user input handle its security.
  • Privacy-friendly. No client-side JavaScript; honours Do Not Track and Global Privacy Control.

Installation

Requires PHP 8.1+ and Apache 2.4 with mod_rewrite and AllowOverride (other servers work if you translate the .htaccess rules).

  1. Copy the repository into your web root.
  2. Create logs/ one level above it, writable by the web server. Paths for configs, logs and content are set in manifest.php.
  3. Set at least url (with a trailing slash), domain, title and server-timezone in configs/config.php.
  4. Enable components in manifest.php and add content to content/.

See https://pnyxcms.eu/self-hosting.html for details.

Architecture

Inspired by Linux and Gentoo: manifest.php is make.conf, includes/boot/core.php is the kernel, and includes/boot/init.php is OpenRC, bringing components up in three runlevels: S (start), T (template) and E (end).

Type Location Loaded when
Library includes/libraries/<name>/ every request, at the start of S
Payload includes/payloads/<name>/ at the runlevels it is enabled for (-s, -t, -e)
Signal includes/signals/<name>/ on ?signal=<name>
Module modules/<name>/ on ?action=<name>, or as the main module
Snippet includes/snippets/ on demand, via $main -> load_snippet()
$enabled_libraries = array("dependency-resolver", "date", "text-processor");
$enabled_payloads  = array("do-not-track -s", "page-tags -st");
$enabled_signals   = array("error-codes");
$enabled_modules   = array("main", "simple-pages", "posts");

Each component has its own config in configs/<type>-<name>.php and its own language file in languages/<language>/. Full documentation: https://pnyxcms.eu/posts/.

In production

firebo.lt, a tabletop RPG matchmaking site in five languages, runs on PnyxCMS: about 300 PHP files across 11 modules, 9 libraries, 10 payloads and 7 signals. Its components will be gradually migrated into mainline PnyxCMS and released as open source.

Contributing

The main repository is https://git.chunkybastard.com/flavius/pnyxcms. Pull requests are welcome on the Codeberg mirror.

House style: $object -> method() with spaces around ->; lowercase true, false, null and new; tabs; the standard header in every PHP file. Components are versioned individually; the CMS is a rolling release, with BUILD in index.php as the build number.

Licensing

PnyxCMS is licensed under the European Union Public Licence 1.2, except modules/main/, which is under the MIT Licence. This is deliberate: module/main is a reference for building your own modules, under any licence, proprietary included.

Written by Konstantinas F. Pacevičius. Started in 2010, refactored in 2024, public in 2026.