Skip to content

daryllundy/wp-migration-assistant

Repository files navigation

WP Migration Assistant

Version PHP Symfony MySQL License Status

Local-first WordPress migration CLI with provider presets, backup tooling, and migration bookkeeping.

Built as a practical prototype for local and self-managed WordPress migration workflows.

🚀 Features

Migration Management

  • Plan-driven migrations for local or self-managed workflows
  • Incremental file sync mode for repeated local sync passes
  • Automated rollback from local backup artifacts
  • Pre-flight compatibility checks based on local inspection and plugin heuristics
  • Step-based progress tracking with persisted logs and status files

Hosting Provider Support

  • Pressable - Provider preset and compatibility heuristics
  • Kinsta - Provider preset and compatibility heuristics
  • GoDaddy - Provider preset and compatibility heuristics
  • InMotion - Provider preset and compatibility heuristics
  • Custom - Extensible provider preset framework

Advanced Features

  • Local DNS manifest updates for planned cutovers
  • Local certificate issuance helpers using certbot or self-signed certs
  • Database optimization during migration process
  • Plugin compatibility analysis using provider-specific warning rules
  • Media file optimization for local uploads directories

🔄 Migration Process

Migration Demo

Prototype migration flow with step-based progress tracking

🛠️ Installation

Prerequisites

  • PHP 8.0+
  • Composer
  • MySQL 8.0+
  • WordPress 5.0+
  • Local filesystem access to the source and destination sites you want to migrate
  • Optional: rsync, mysql, certbot, and wkhtmltopdf

Quick Start

# Clone and install
git clone https://www.github.com/daryllundy/wp-migration-assistant
cd wp-migration-assistant
composer install

# Configure environment
cp .env.example .env
# Edit .env with your configuration

# Run initial setup
php wp-migrate setup

🎯 Usage

Common Migration Commands

# Analyze a local site or a remote URL
php wp-migrate analyze --source ./site
php wp-migrate analyze --source-url https://example.com

# Create a local migration plan
php wp-migrate plan --source ./site --destination ./site-copy

# Execute a migration from a saved plan
php wp-migrate migrate --plan migration-plan.json

# Monitor migration progress
php wp-migrate status --migration-id 12345

Provider Presets

Provider docs describe preset configuration, compatibility heuristics, and suggested flags. They do not provide direct hosted-provider API integration:

Provider Description Documentation
Pressable Preset for managed WordPress targets View Docs
Kinsta Preset for managed WordPress targets View Docs
GoDaddy Preset for shared or managed WordPress targets View Docs
InMotion Preset for VPS or dedicated WordPress targets View Docs
Custom Custom preset implementations View Docs

⚠️ Scope Notes

  • The CLI is strongest for local-to-local migrations and migration bookkeeping.
  • DNS and CDN commands write local manifests rather than calling provider APIs.
  • SSL helpers can invoke local certbot when available, otherwise they generate self-signed certificates.
  • Incremental and staging workflows are guided CLI flows, not managed zero-downtime orchestration.

🔧 Development

Local Development

# Install development dependencies
composer install --dev

# Run tests
php vendor/bin/phpunit

# Run code analysis
php vendor/bin/phpstan analyze

# Run code formatting
composer run cs-fix

About

Zero‑downtime WordPress migration CLI with hosting provider profiles, automated deployment, and rollback for enterprise‑scale sites.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors