WP Transformer

Converts WordPress MySQL dumps into self-contained static HTML sites β€” no live WordPress installation required. Multi-tenant dashboard with human-in-the-loop pipeline.

Stack

  • PHP 8.2+ β€” no framework, no Composer
  • MySQL (ALL-INKL managed) or PostgreSQL (Strato VPS / transformer.crumbforest.io)
  • Tailwind CSS v3 β€” pre-compiled, dark theme
  • nginx + PHP-FPM (VPS) or FastCGI (ALL-INKL managed)

Architecture

SQL Dump (Upload or crawl)
    β”‚
    β–Ό
WPParser          β€” pure-PHP tokenizer, no MySQL dependency
    β”‚
    β–Ό
wpt_posts         β€” editable intermediate layer in DB
    β”‚
    β–Ό
StaticBuilder     β€” index.html, per-post HTML, feed.json, .htaccess
    β”‚
    β”œβ”€β”€ ZIP Download
    └── FTP Deploy  β†’ Customer subdomain / server

Multi-Tenant Pipeline

Each tenant goes through four steps β€” with human review at each:

  1. SQL Upload β€” WordPress UpdraftPlus / mysqldump export
  2. Parse β€” extracts posts/pages/categories, auto-detects DB prefix
  3. Build β€” generates static HTML with per-tenant branding
  4. Deploy β€” ZIP download or direct FTP push

Two-Server Setup

WPTransformer uses two distinct hosting environments with different roles:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Strato Root VPS                    β”‚     β”‚  ALL-INKL Managed Hosting       β”‚
β”‚  transformer.crumbforest.io         β”‚     β”‚  wptransformer.org              β”‚
β”‚                                     β”‚     β”‚                                 β”‚
β”‚  β†’ The app runs here                β”‚     β”‚  β†’ Static output lands here     β”‚
β”‚    Admin dashboard                  β”‚     β”‚    Generated HTML sites         β”‚
β”‚    Pipeline engine                  β”‚     β”‚    Customer subdomains          β”‚
β”‚    PostgreSQL database              β”‚     β”‚    MySQL (managed)              β”‚
β”‚    nginx + PHP-FPM                  β”‚     β”‚    FastCGI (managed)            β”‚
β”‚    Full root access                 β”‚     β”‚    FTP deploy, .htaccess        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Strato VPS β€” App Deploy (primary)

./scripts/deploy_transformer.sh

Requires SSH access to root@87.106.12.97. Creates DB, sets up nginx vhost, syncs files.

config.local.php on server:

<?php
define('DB_TYPE',          'pgsql');
define('DB_HOST',          'localhost');
define('DB_NAME',          'wptransformer_db');
define('DB_USER',          'wptransformer');
define('DB_PASS',          'generated-by-deploy-script');
define('PASSWORD_PEPPER',  'generated-by-deploy-script');
define('MAIL_TYPE',        'file');
define('APP_ENV',          'production');

First deploy: run init_pg.sql to create schema. On updates: run migrate_103.php in browser (admin login required), then delete it.

ALL-INKL β€” Static Output Destination

The built static sites (ZIP or FTP deploy from StaticBuilder) land here.
wptransformer.org hosts the generated HTML β€” not the app itself.

FTP deploy target for finished tenant builds. No PHP pipeline runs here.

Pre-Deploy Health Check

bash wptransformer-doktor.sh [/var/www/app-dir]

Checks: system resources, PostgreSQL, nginx, PHP-FPM, SSL, app config. Run on target server before every deploy.

Security

  • .htaccess blocks .sql, .sh, .md, config.local.php (ALL-INKL managed)
  • nginx vhost blocks classes/, templates/, logs/, scripts/ directories
  • tenants/ blocked except tenants/*/public/
  • CSRF tokens on all POST forms (Csrf::verify())
  • bcrypt password hashing (cost 12)
  • Password reset via time-limited token (SHA-256 hashed, 1h TTL)
  • Slug whitelist: [^a-z0-9\-] stripped β€” no path traversal
  • display_errors = 0 in production

Version History

Version Date Notes
1.0.4 2026-05-22 PostgreSQL support, deploy pipeline, password reset, tour-star tenant
1.0.2 2026-05-20 Logger, contact form v2, CSRF hardening
1.0.1 2026-05-19 Contact form, corporate theme
1.0.0 2026-05-16 Initial production release

Repo

git remote: https://git.crumbforest.org/branko/wptransformeer-OZMv0.git