Skip to content

Repository files navigation

DevWP

Build StatusLicense: MITKo-fi

A pure-Rust desktop application (Dioxus) for simplified local WordPress development using Docker, Nginx, and PHP-FPM.

What changed in the Dioxus migration

DevWP was previously a Tauri app (Rust backend + React/TypeScript renderer). It is now a single Rust binary built with Dioxus desktop:

  • All React components became Dioxus RSX components; there is no Node/TypeScript toolchain (no Vite, bun, vitest, biome) and no IPC — the UI calls the backend functions directly.
  • The window is frameless with a custom in-app title bar (drag to move, minimize/maximize/close) instead of the native window toolbar.
  • All shared state lives in process-wide SyncSignals so background threads (docker streaming, certificate regeneration) can safely mutate it.
  • The Tailwind v4 CSS bundle is prebuilt and committed (src/assets/style.css); rebuild with scripts/build-css.sh after changing classes.
  • All fonts are embedded in the binary (no external asset loading, identical behaviour in dev and packaged builds).
  • Packaging uses cargo-packager instead of Tauri bundling.
image

Features

  • Easy Site Management: Create and manage local WordPress sites with a simple GUI
  • Docker Integration: Isolated environments with Nginx, PHP-FPM, MariaDB, and Redis
  • WP-CLI Support: Run WP-CLI commands directly from the interface
  • Development Tools: Mailpit for email testing
  • Xdebug Support: Toggle PHP debugging on/off
  • Multisite Support: WordPress multisite configurations
  • Cross-Platform: Windows, macOS, and Linux support
  • ARM Support: Native ARM builds for Apple Silicon and Linux (ARM64)

Prerequisites

For Using the App

  • Docker Desktop (or any Docker daemon) - the app talks to the Docker Engine API directly via Bollard; the docker/docker compose CLI is not required

For Development (Building from Source)

  • A running Docker daemon (the docker compose CLI is only needed to provision the stack for integration tests and CI)
  • Rust - stable toolchain
  • Linux: libwebkit2gtk-4.1-dev (and libappindicator3-dev, librsvg2-dev, patchelf for packaging)

Installation

Pre-built Binaries

Download from GitHub Releases. See the release notes for platform-specific installation instructions.

Arch Linux (AUR)

# Using yay
yay -S devwp
# Manual installation
git clone https://aur.archlinux.org/devwp.git
cd devwp
makepkg -si

Development Setup

Quick Start

git clone https://github.com/SpiZeak/DevWP.git
cd DevWP
# Set up trusted SSL certificates with mkcert (eliminates browser warnings)
./scripts/setup-certs.sh
# Run the app (starts Docker services on launch)
cargo run

Commands

TaskCommand
Run (dev)cargo run
Build (release)cargo build --release
Testcargo test
Integration testscargo test --test integration (needs Docker)
Lintcargo clippy --all-targets -- -D warnings
Formatcargo fmt --all -- --check / cargo fmt
Rebuild CSSscripts/build-css.sh
Package installerscargo install cargo-packager --locked && cargo packager --release

Architecture

┌────────────────────────────┐
│ Dioxus RSX UI (Rust) │
│ custom title bar, │
│ components/ (site_list, │
│ create_site, services, …) │
│ reads/writes SyncSignals │
└─────────────┬──────────────┘
│ direct function calls (no IPC)
┌─────────────┴──────────────┐
│ backend/ (pure Rust fns) │
│ docker, lifecycle, │
│ settings, site, system, │
│ utils, wp_cli, xdebug │
└─────────────┬──────────────┘
│ docker / filesystem
┌─────────────┴──────────────┐
│ compose stack (nginx/php/ │
│ mariadb/redis/mailpit) │
└────────────────────────────┘

State files live in .devwp-tauri/ (sites.json, settings.json); the webroot defaults to ~/www.

Packaging

cargo-packager produces the release artifacts; configuration lives in [package.metadata.packager] in Cargo.toml. Artifact naming (single devwp name everywhere):

  • Linux: devwp_<version>_x86_64.AppImage, devwp_<version>_amd64.deb (+ _aarch64/_arm64 variants)
  • Windows: devwp_<version>_x64-setup.exe, devwp_<version>_x64_en-US.msi
  • macOS: DevWP_<version>_aarch64.dmg, DevWP_<version>_x86_64.dmg

Usage

Command Line

The same binary doubles as a CLI: run it without arguments for the GUI, or with a subcommand to script everything the GUI can do (sites, services, WP-CLI, Xdebug, settings).

devwp init # set up state, webroot, start the stack
devwp site create shop --wp-title Shop # create a site + install WordPress
devwp wp shop.test plugin list # WP-CLI inside the site's container
devwp services status # container/health/version table
devwp xdebug on # enable Xdebug, restart php
devwp doctor # environment health report

See docs/cli-reference.md for the full command reference (syntax, options, exit codes, and scripting recipes).

Creating a Site

  1. Launch DevWP and click "New Site"
  2. Enter a domain name (.test is added automatically)
  3. Configure options like web root and multisite settings
  4. Click "Create" - DevWP handles the rest!

Managing Sites

  • Access: Click site URLs to open in browser
  • WP-CLI: Use the terminal icon to run WordPress commands
  • Delete: Remove sites completely (includes cleanup)

Available Services

ServicePortURLPurpose
Nginx80https://site.testWeb server
Mailpit8025http://localhost:8025Email testing

Troubleshooting

Common Issues

  • App won't start: Ensure Docker Desktop is running
  • Sites not loading: Check ports 80/443 aren't in use by other services
  • Permission errors: Run DevWP as administrator for hosts file modifications
  • Container issues: Use the container status panel to restart services
  • UI doesn't reflect CSS changes: run scripts/build-css.sh and commit src/assets/style.css

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

CI runs cargo fmt --check, cargo clippy -- -D warnings and cargo test (unit + integration against the real compose stack).

Ko-fi

License

MIT License - see LICENSE file for details.

About

DevWP is a desktop application for managing local WordPress development. Built with Tauri, React, and TypeScript, it provides a graphical interface for spinning up and managing WordPress sites in a Docker-powered environment including Nginx, PHP-FPM, MariaDB, Redis, and Mailpit.

Topics

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages