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
SimpleXMLandDOMDocument. 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_rewriteor 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
| Feature | PluXml | Typical Flat‑File CMS (e.g., Grav, Jekyll) |
|---|---|---|
| No DB Required | ✅ | ✅ |
| Built‑in Multi‑user Grants | ✅ | ❌ (usually single‑user) |
| Plugin API | Extensive hooks | Limited or no plugin support |
| Portable via USB | ✅ | ✅ (but requires rebuild of static site) |
| License Freedom | MIT‑style | Varies (GPL, MIT) |
| Dynamic Content | Full PHP rendering, comments, RSS | Mostly 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
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
SimpleLogin
Protect your identity with email aliases
GoDoxy
Lightweight reverse proxy with web UI and auto‑SSL
Payload CMS
Next.js native headless CMS for full-stack apps
UpSnap
Instant Wake‑On‑LAN from your browser
MiroTalk P2P
Peer‑to‑peer web video conferencing, no download needed.
Plainpad
Secure, self‑hosted note taking for any device