Case study
Xamppify
Overview
[Under development] Windows desktop workspace for local PHP/XAMPP development — deployments, config editing, logs, databases, SSL certificates, file sync, and performance monitoring in one Tauri 2 app. Will be published soon.
Problem
Local PHP developers using XAMPP have no integrated tool for managing deployments, editing configs, viewing logs, browsing databases, handling SSL certificates, or syncing files across the LAN. Each task requires a separate tool — file explorer, phpMyAdmin, notepad for configs, Windows Services panel, and manual robocopy commands — wasting time and context-switching.
Approach
Built a single Tauri 2 desktop app that wraps every XAMPP management task into a cohesive workspace. React 19 frontend with TanStack Query and Zustand for state. Rust backend handles local system access — spawning hidden child processes (robocopy, mysqldump, OpenSSL, service commands), parsing Apache/MySQL logs via the notify crate, reading MySQL schemas via mysql_async, and editing config files with a CodeMirror 6 editor with language-specific 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 extract the port number for LAN URL generation. Reading MySQL/MariaDB logs requires finding the correct log file path across XAMPP versions. The notify crate's filesystem watcher needed careful lifecycle management — starting/stopping per selected log file. All child processes must execute with hidden console windows on Windows. Path traversal safety required validating all file operations stay within the configured XAMPP root. Balancing real-time log streaming with debounced filter controls and a responsive UI.
Results
A single desktop app replacing 6+ separate tools for XAMPP development. Developers create, import, and manage projects; edit configs with syntax highlighting; stream live Apache/MySQL logs with filter controls; browse and export MySQL databases; inspect and generate SSL certificates; sync files to remote machines over LAN; and monitor system performance — all without leaving the app. Hidden console windows keep the desktop clean.