Case study

Xamppify

ReactRustTauri

Overview

[In development] A Windows desktop workspace for local PHP/XAMPP work, deployments, config editing, logs, databases, SSL certs, file sync, and performance monitoring, all in one Tauri 2 app. Coming soon.

Problem

If you develop PHP on XAMPP in Windows, there's no single tool for the job. Deployments, config edits, logs, databases, SSL certs, and LAN file sync each pull in a different utility, a file explorer, phpMyAdmin, Notepad for configs, the Windows Services panel, and manual robocopy commands. It's a lot of context-switching.

Approach

I'm building one Tauri 2 app that folds every XAMPP task into a single workspace. React 19 on the front with TanStack Query and Zustand for state. The Rust side handles local system access, spawning hidden child processes (robocopy, mysqldump, OpenSSL, service commands), parsing Apache/MySQL logs with the notify crate, reading MySQL schemas via mysql_async, and editing configs in a CodeMirror 6 editor with syntax highlighting.

Architecture

React 19 SPA with react-router-dom for page-level routing. Rust backend exposes Tauri commands for each domain: deployments (create, import, hide, delete in htdocs), files (navigate, CRUD, upload), database (connect, query, browse, export), config (read/write Apache, PHP, MySQL, phpMyAdmin configs), SSL (list, inspect, generate certs), logs (filesystem watcher via notify crate with real-time streaming), services (start/stop/restart Apache, MySQL), file sync (robocopy /MIR to remote machines), and performance (WMI-based CPU, memory, disk, uptime every 5s). LAN IP auto-detected via local-ip-address crate. Command palette (Ctrl+K) for instant navigation.

Challenges

Parsing Apache's httpd.conf to pull the port for the LAN URL. Finding the right MySQL/MariaDB log path across XAMPP versions. The notify watcher needed careful start/stop lifecycle per selected log. Every child process runs with a hidden console window on Windows. File operations are validated to stay inside the configured XAMPP root. Live log streaming has to coexist with debounced filters and a responsive UI.

Results

One desktop app replacing six-plus separate tools for XAMPP work. Create, import, and manage projects; edit configs with highlighting; stream live Apache/MySQL logs with filters; browse and export MySQL; inspect and generate SSL certs; sync files to other machines over LAN; and watch system performance, without leaving the app. Hidden console windows keep the desktop clean.

Technology

React 19RustTauri 2TypeScriptTailwind CSS v4shadcn/uiCodeMirror 6TanStack QueryMySQL
Private repoDownload for Windows, soon
Email copied