Skip to content

Repository files navigation

VonCMS Banner

VonCMS

VonCMS is a lightweight PHP and React CMS not only for shared hosting, but on many levels that suite your needs. It is built for publishers who want a modern admin dashboard, clean public themes, SEO-friendly output, and extensibility without running a heavy plugin stack.

Current release: v1.27.4 "OverDrive". You can install the Deploy ZIP on hosting, or fork the source repository to build your own themes, plugins, extensions, fixes, and release packages.

Website | Live Demo | Releases | Sponsor

Project Status

VonCMS is open-source software under active development. Review, test, and back up your site before using any CMS release in production.

Note

Before updating a production site, back up its files and database, review the release notes, and test the Deploy ZIP on a local or staging installation when possible. After updating, verify the homepage, one post, one page, and the admin dashboard.

The OverDrive release line uses a slower update cadence so larger changes receive clearer scope, isolated development, deeper verification, and longer canary testing. Exact changes belong in CHANGELOG.md; version-specific upgrade and repair instructions belong in docs/UPGRADE.md.

126

Why VonCMS?

Traditional CMS platforms are easy to host but often become slow, plugin-heavy, and hard to maintain. Modern headless stacks are powerful but usually add paid hosting assumptions, build pipelines, and too many moving parts for ordinary publishing sites.

VonCMS keeps the runtime simple:

  • PHP and MySQL for shared-hosting deployment.
  • React 19 for the admin dashboard, editor, media tools, settings, comments, and extensions.
  • Server-rendered public metadata for SEO, social cards, sitemaps, feeds, and crawlers.
  • Built-in publishing tools so common site features do not require a pile of third-party plugins.
  • Source-level customization for developers, designers, agencies, and AI-assisted coding workflows.

What Is Included

Content: posts, pages, drafts, Writer review submissions, scheduled publishing, rich TipTap editor, media manager, categories, excerpts, metadata, keywords, responsive images, and quick edit.

Admin: dashboard, reviewer queue, settings, users, fixed-role boundaries, comments moderation, contact forms, newsletter tools, database utilities, audit logs, and repair tools.

Public site: bundled themes, navigation menus, profiles, category views, search, comments, feeds, sitemap, robots output, llms.txt, JSON-LD, canonical URLs, Open Graph, and Twitter cards.

Extensions: built-in SEO, analytics, gift widget, related posts, promo bar, and AI summary plugins with activation controls.

Developer surface: theme registry, plugin registration, PHP APIs, smoke tests, release packaging, source documentation, and GPL-3.0-only licensing.

Requirements

Layer Requirement
PHP 8.2 or newer
Database MySQL 5.7 or newer
Web server Apache or LiteSpeed with .htaccess
Local PHP checks Laragon, XAMPP, WAMP, or PHP on PATH
Source development Node.js 22.22 or newer and npm

Production hosting does not need Node.js, Vite, npm, or a separate frontend server. Source development does.

For source work, install Node.js 22.22 or newer from https://nodejs.org/. The installer includes npm. After installing, open a terminal and confirm:

node --version
npm --version

On Windows, Laragon is the easiest PHP/MySQL stack for local checks. XAMPP, WAMP, native PHP, Docker, or a remote dev server also work as long as PHP and MySQL meet the requirements.

Choose Your Path

Goal Start here
Install VonCMS on shared hosting Download the current published Deploy ZIP from Releases
Study the code or build custom features Fork or clone the repository
Build a custom theme, plugin, or extension Read Extension Development
Work on APIs, installer, routing, or updater Read API, Security, and Routing
Upgrade an existing website Read Upgrade

Install A Website From Deploy ZIP

Use this path for normal site owners and shared-hosting installs.

  1. Download the current published Deploy ZIP from Releases.
  2. Extract it into your hosting web root.
  3. Create a MySQL database and database user.
  4. Open https://yourdomain.com/install.
  5. Complete the installer wizard.
  6. Sign in at /admin.
  7. Publish or import content, choose a theme, and configure settings.

See Installation, Upgrade, and VPS Deployment for hosting notes.

Use The Open-Source Repository

Use this path for developers, designers, agencies, advanced users, and AI-assisted workflows.

Fork the repository on GitHub, clone it, and install dependencies:

git clone https://github.com/YOUR-USERNAME/VonCMS.git
cd VonCMS
npm install

You can also download the Source ZIP from Releases and extract it locally. A Git fork is better when you plan to contribute changes back. Open the project folder directly in any editor you prefer:

  • Cursor
  • Visual Studio Code
  • Antigravity-style AI IDEs
  • PhpStorm or another PHP IDE
  • Claude CLI, Codex CLI, or another terminal-based coding agent
  • Plain terminal plus your editor of choice

The workflow is flexible. VonCMS does not require one official IDE. Keep the terminal at the repository root so commands resolve package.json, vite.config.ts, public/, src/, and docs/ correctly.

Common source checks:

npm run typecheck
npm run build

For PHP linting with Laragon on Windows, set PHP_BIN to your local php.exe first:

$env:PHP_BIN='C:\laragon\bin\php\php-8.4.22-Win32-vs17-x64\php.exe'
npm run lint:php

The Vite dev server is useful while editing React themes, admin screens, plugins, and components:

npm run dev

If you need PHP APIs, point the dev proxy at your local PHP host with VITE_PROXY_TARGET, or test the production build through Apache/LiteSpeed after:

npm run build

For contributor expectations, formatting, audits, release gates, and pull request rules, read CONTRIBUTING.md.

How It Works

VonCMS is built as a compiled React application plus a PHP API/runtime.

Browser
  -> public/index.php
  -> built React assets
  -> public/api/*.php
  -> MySQL

The public entry point handles routing, crawler metadata, installation checks, maintenance mode, canonical URLs, redirects, and hydration data. The React app owns the interactive dashboard and public theme rendering after boot. PHP APIs handle authentication, settings, posts, pages, media, comments, newsletters, analytics, imports, backups, and repair tools.

Repository Structure

src/
  App.tsx                              Public/admin routing shell
  hooks/                               Shared React data hooks
  components/                          Editor, layout, renderer, UI components
  plugins/von-core/features/           Core admin features and built-in plugins
  themes/                              Bundled public themes

public/
  index.php                            PHP public entry and hydration bridge
  api/                                 PHP API endpoints
  install.sql                          Fresh install schema/settings seed
  .htaccess                            Public routing and hardening rules
  fonts/                               Local web fonts used by bundled themes

docs/                                  Developer and operator documentation
server/test-integration.cjs            Integration smoke gate
create_release.cjs                     Deploy and Source ZIP packaging
remove-bom.cjs                         UTF-8 BOM cleanup utility

Bundled Themes

VonCMS ships with Default, TechPress, Digest, Portfolio, Prism, and Corporate Pro themes. Theme registration lives in src/plugins/von-core/features/themes/themeRegistry.ts, while theme implementations live in src/themes/.

Fresh installs use Inter, sans-serif by default. VonCMS does not load Google Fonts at runtime; Inter is shipped locally as variable WOFF2 files under public/fonts/inter/ and wired through the bundled CSS. The bundled Inter files include a font license notice at public/fonts/inter/LICENSE.txt. If a custom theme needs another branded font, add the licensed font files to that theme and reference them from the theme CSS. For a practical font workflow, read Custom Fonts.

Theme Development

Start with Extension Development. Themes are for presentation and public UX. A compiling layout is not automatically VonCMS-compatible: it must satisfy the documented route/state, shared data, settings, base-path link, SEO/SSR, media, accessibility, performance, and verification contracts. Themes should use shared props and hooks, render post and page content through the shared renderer, and avoid duplicating runtime ownership that the core already provides.

Common files:

  • src/themes/<theme>/Layout.tsx
  • src/themes/types.ts
  • src/plugins/von-core/features/themes/themeRegistry.ts
  • src/plugins/von-core/features/extensions/components/DefaultThemeSettings.tsx

Plugin And Extension Development

Start with Extension Development. Plugins and extensions are for optional behavior: SEO helpers, analytics, widgets, article blocks, campaign bars, integrations, and admin tools. Built-in plugin code lives under src/plugins/von-core/features/plugins/built-in/. Follow the documented system, Custom HTML/CSS, or backend-integrated plugin boundary; keep settings ownership explicit, sanitize public HTML, use the shared activation decision, clean up runtime work, and verify inactive, active, route-change, and subfolder behavior.

Useful docs:

Installer, Routing, And Updates

The installer uses public/install.sql and the PHP installer endpoints under public/api/. The public runtime uses public/index.php and .htaccess for install checks, maintenance mode, crawler metadata, canonical URL handling, and SPA hydration.

If you work on install, routing, updater, or .htaccess behavior, read:

Dependency Upgrades

Use npm outdated as a review list, not as an automatic upgrade command. Upgrade packages in small batches and rerun the relevant verification after each batch. For the full command set and pull request standard, read CONTRIBUTING.md.

Release Checks

Before creating release ZIPs:

npm run typecheck
npx prettier --check .
node remove-bom.cjs
npm run build
npm run test:integration
npm run lint:php
node create_release.cjs

create_release.cjs creates:

  • VonCMS_v<version>_Deploy.zip
  • VonCMS_v<version>_Source.zip

No checksum sidecar files are generated by the release script.

Run this full sequence for release preparation, not for ordinary first-time source reading.

Documentation Map

Contributing

Before changing code, inspect the existing implementation and read the focused docs for the area you are touching. Keep changes scoped, preserve backwards compatibility unless the issue requires otherwise, and run the relevant checks before opening a pull request.

For public contribution rules, issue guidance, pull request expectations, and security reporting notes, read CONTRIBUTING.md.

If you find a serious security issue, do not open a public issue with exploit details. Contact the maintainer privately first so the issue can be verified and patched responsibly.

Updating Existing Sites

Read Upgrade before changing a production installation. It contains the supported version-specific database, configuration, routing, OTA, manual-update, and rollback instructions.

The safe manual-update baseline is:

  1. Back up files and database.
  2. Delete the old assets/ and docs/ folders. Both contain release-managed files; neither stores uploads, posts, settings, or database content.
  3. Upload and extract the complete new Deploy ZIP, allowing its application files to replace the old release.
  4. Keep von_config.php, data/, uploads/, backups/, and the live .htaccess file protected from manual replacement or deletion.
  5. Visit the site and admin dashboard, then confirm the Dashboard shows the expected release version.
  6. Follow any Database Repair, .htaccess repair, or configuration migration instruction shown for the installed starting version in Upgrade.
  7. Verify one homepage, one post, one page, and /admin before ending maintenance.

After a site is already on the fixed updater baseline, the dashboard updater can be used for later patches when the host allows outbound release downloads. OTA activation replaces the release-managed assets/ and docs/ directories as complete rollback-protected units, so retired fingerprinted bundles and guides cannot remain beside the current release.

Release History

Current shipped release truth lives in CHANGELOG.md. Public developer guidance lives in CONTRIBUTING.md and the focused files under docs/.

License

VonCMS is released under the GPL-3.0-only license. See LICENSE.md.

Releases

Sponsor this project

Packages

Used by

Contributors

Languages