MCPSERV.CLUB
PluXml

PluXml

Self-Hosted

Lightweight flat‑file CMS for portable websites

Active(70)
228stars
0views
Updated Aug 26, 2025

Overview

Discover what makes PluXml powerful

PluXml is a **flat‑file CMS** written in PHP that eschews traditional relational databases entirely. All content—articles, pages, media metadata, and configuration—is stored in a set of well‑structured XML files under the `data/` directory. This design makes the application inherently portable: a simple copy of the root folder (or even a USB stick) is enough to move an entire site between servers or hosting environments. The architecture is intentionally lightweight, targeting developers who prefer a minimalistic stack that can run on any LAMP/LEMP server with PHP 7.2+ and the GD library for image manipulation.

Language

Core Framework

Data Layer

Template System

Overview

PluXml is a flat‑file CMS written in PHP that eschews traditional relational databases entirely. All content—articles, pages, media metadata, and configuration—is stored in a set of well‑structured XML files under the data/ directory. This design makes the application inherently portable: a simple copy of the root folder (or even a USB stick) is enough to move an entire site between servers or hosting environments. The architecture is intentionally lightweight, targeting developers who prefer a minimalistic stack that can run on any LAMP/LEMP server with PHP 7.2+ and the GD library for image manipulation.

Technical Stack & Architecture

  • Language: PHP 7.2–8.1 (backwards compatible with older releases).
  • Core Framework: Custom MVC‑ish pattern built from scratch; no external framework dependencies.
  • Data Layer: XML files parsed with PHP’s native SimpleXML and DOMDocument. The system implements a simple caching layer to avoid re‑parsing on every request.
  • Template System: PHP templates with a minimal templating syntax (variables injected via include/require). Themes are just directories containing .php, .css, and optional assets; the engine automatically resolves theme files.
  • Routing: URL rewriting handled by Apache’s mod_rewrite or Nginx rewrite rules; fallback to query‑string routing when rewrites are disabled.
  • Security: Multi‑user support with five predefined grant levels (admin, editor, author, contributor, subscriber). Passwords are hashed with PHP’s password_hash().

Core Capabilities & APIs

  • REST‑like Endpoints: While PluXml does not expose a formal REST API, the back‑office internally uses JSON over AJAX for CRUD operations. Developers can hook into these endpoints via custom plugins or by extending the core/ classes.
  • Plugin System: Plugins are PHP files placed in plugins/. They register callbacks (e.g., on_init, on_post_save) and can add new admin pages or modify content rendering. The plugin API is documented in the wiki, providing hooks for almost every lifecycle event.
  • RSS & Atom Feeds: Built‑in feed generation for posts, comments, tags, and categories. The feed output can be customized via theme overrides or plugin filters.
  • Media Manager: Supports image uploads, thumbnail generation (via GD), and generic file handling. Media metadata is stored in XML alongside the files, enabling rich search queries.

Deployment & Infrastructure

Because PluXml has no database dependency, deployment is as simple as placing the archive on any web‑accessible directory. It scales horizontally by adding more PHP workers; however, due to its file‑based nature, high write concurrency can lead to race conditions. For production workloads with frequent content updates, developers often pair PluXml with a read‑replica strategy: write operations occur on the primary instance, while static assets are served via a CDN or Nginx reverse proxy. Docker images exist in the community, simplifying CI/CD pipelines and ensuring consistent runtime environments.

Integration & Extensibility

  • Webhooks: Plugins can register webhook listeners to external services (e.g., Slack, GitHub).
  • OAuth & SSO: While not built‑in, the plugin architecture allows developers to integrate OAuth providers for single sign‑on.
  • Custom Themes: Themes can override core templates, CSS, and JavaScript. The theming system supports responsive layouts for mobile devices out of the box.
  • Translation: PluXml ships with 11 language packs; developers can add custom translations via the lang/ directory without touching core code.

Developer Experience

The documentation on the official wiki is comprehensive, covering installation, theme development, plugin APIs, and advanced configuration. The community forum remains active for troubleshooting and feature requests. Configuration is primarily file‑based (config.php), with clear comments explaining each option. Because the codebase is relatively small (< 30 k lines), developers can quickly audit security and performance. The licensing (MIT‑style) permits commercial use without royalties, which is attractive for enterprise or open‑source projects.

Use Cases

  • Personal Blogs & Portfolios: Zero database setup, instant portability to a USB stick or static hosting service.
  • Small Business Sites: Multi‑user roles allow teams to manage content without a full CMS stack.
  • Documentation Sites: XML storage and flat‑file nature make it ideal for versioned documentation that can be exported to static generators.
  • Educational Projects: Students learn PHP and CMS fundamentals without complex database migrations.

Advantages Over Alternatives

FeaturePluXmlTypical Flat‑File CMS (e.g., Grav, Jekyll)
No DB Required
Built‑in Multi‑user Grants❌ (usually single‑user)
Plugin APIExtensive hooksLimited or no plugin support
Portable via USB✅ (but requires rebuild of static site)
License FreedomMIT‑styleVaries (GPL, MIT)
Dynamic ContentFull PHP rendering, comments, RSSMostly static output

Developers who value a lightweight, portable, and highly extensible blogging platform will find PluXml an attractive choice. Its flat‑file architecture eliminates database migrations,

Open SourceReady to get started?

Join the community and start self-hosting PluXml today