A modern, cross-platform local web development stack
Caddy + HTTP(S) + Adminer / phpmyAdmin + MySQL + PHP
Features β’ Installation β’ Usage β’ Keyboard Shortcuts β’ Developer Experience β’ Development β’ Configuration
CHAMP is a self-contained desktop application that provides a complete local web development environment. Unlike traditional solutions like XAMPP, CHAMP is designed to run without administrator privileges by keeping all runtime binaries, configurations, logs, and data in the user's writable app data folder.
Note: This project is a fork of CAMPP by KarnYong, with enhancements and modifications by Thirawat27.
Key Highlights:
- π No Admin Required - Runs entirely in user space with non-default ports
- π¦ Self-Contained - All binaries bundled, no external dependencies
- π― Cross-Platform - Windows, macOS, and Linux support
- π Version Management - Switch between multiple PHP, MySQL, and PostgreSQL versions, plus optional Node.js, Python, Go, and Ruby runtimes
- π¨ Modern UI - Built with React and Tauri for a native experience
- β‘ Fast & Lightweight - Rust-powered backend for optimal performance
| Component | Version | Description |
|---|---|---|
| Caddy | 2.11.4 | Modern web server with HTTPS |
| PHP | 8.5.7 | Latest PHP runtime (switchable) |
| MySQL | 9.7.1 | LTS database server |
| PostgreSQL | 18.4 | Stable database server |
| phpMyAdmin | 5.2.3 | Database management interface |
| Adminer | 5.4.2 | Lightweight database interface |
- PHP: 7.4.33 (EOL), 8.5.7 (Latest)
- Database UI: phpMyAdmin 5.2.3 or Adminer 5.4.2
- Databases: MySQL 9.7.1 or PostgreSQL 18.4
- β One-Click Service Management - Start/stop/restart all services with a single click
- β System Tray Integration - Minimize to tray and control services from the system tray
- β Auto-Start Services - Optionally start services automatically on app launch
- β Real-Time Status Monitoring - Live service status updates and system metrics
- β Port Configuration - Customize ports to avoid conflicts
- β Project Management - Organize and access your web projects easily
- π Multi-Version Support - Install and switch between different PHP, MySQL, and PostgreSQL versions
- π¦ Package Selection - Choose which components and optional runtimes to install during first run
- π Secure by Default - Isolated user environment, no system-wide changes
- π System Metrics - Monitor CPU, memory, and disk usage
- ποΈ Custom Configuration - Advanced users can customize runtime configs
- π Debug Mode - Developer menu with runtime folder access and reset options
- β¨οΈ Keyboard Shortcuts - Control the app without touching the mouse
| Service | URL |
|---|---|
| Web Server | http://localhost:8080 |
| Database Tool | http://localhost:8080/phpmyadmin or http://localhost:8080/adminer |
| MySQL | 127.0.0.1:3306 |
| PostgreSQL | 127.0.0.1:5432 |
| PHP-FPM | 127.0.0.1:9000 (internal) |
Note: All ports can be customized in the Settings panel to avoid conflicts with other services.
Download the latest release for your platform from the Releases page:
- Windows:
CHAMP_x.x.x_x64_en-US.msior.exe - macOS:
CHAMP_x.x.x_aarch64.dmg(Apple Silicon) orCHAMP_x.x.x_x64.dmg(Intel) - Linux:
CHAMP_x.x.x_amd64.AppImageor.deb
- Launch CHAMP
- The First-Run Wizard will guide you through:
- System dependency checks
- Package selection (choose which components to install)
- Runtime binary downloads
- Initial configuration
- Once complete, you're ready to start developing!
- Open CHAMP
- Click Start All to launch all services
- Access your projects at http://localhost:8080
- Manage your database at http://localhost:8080/phpmyadmin or http://localhost:8080/adminer, depending on the selected tool
- Individual Control: Start/stop/restart each service independently
- Bulk Operations: Use "Start All" or "Stop All" for convenience
- Auto-Start: Enable in Settings to start services on app launch
CHAMP provides comprehensive keyboard shortcuts for efficient workflow:
| Shortcut | Action |
|---|---|
Ctrl / Cmd + S |
Start all services |
Ctrl / Cmd + R |
Restart all services |
Ctrl / Cmd + X |
Stop all services |
| Shortcut | Action |
|---|---|
Ctrl / Cmd + W |
Open website (localhost) |
Ctrl / Cmd + D |
Open database tool (phpMyAdmin/Adminer) |
Ctrl / Cmd + O |
Open projects folder |
Ctrl / Cmd + L |
Open logs folder |
Ctrl / Cmd + T |
Open a terminal with CHAMP runtimes on PATH |
| Shortcut | Action |
|---|---|
Ctrl / Cmd + , |
Toggle Settings panel |
? |
Show keyboard shortcuts help |
Esc |
Dismiss notification or close Settings |
Language-Independent: All shortcuts use physical key positions (
e.code) so they work regardless of keyboard language (Thai, English, etc.).
π View Complete Keyboard Shortcuts Documentation
- Minimize to Tray: Close the window to minimize to system tray
- Quick Access: Right-click the tray icon for quick actions
- Background Operation: Services continue running when minimized
- Open Settings panel
- Navigate to PHP Version section
- Select desired version from dropdown
- Click Switch Version (downloads if not installed)
- Restart PHP-FPM service
- Node.js 18+ and pnpm 11+
- Rust 1.70+ (for Tauri backend)
- Platform-specific requirements:
- Windows: WebView2 Runtime
- macOS: Xcode Command Line Tools
- Linux: webkit2gtk, libssl-dev
# Clone the repository
git clone https://github.com/thirawat27/CHAMP.git
cd CHAMP
# Install dependencies
pnpm install
# Run in development mode
pnpm tauri devpnpm dev # Start Vite dev server (http://localhost:1420)
pnpm build # Build frontend for production
pnpm preview # Preview production build
pnpm test # Run tests with Vitest
pnpm test:ui # Run tests with UI
pnpm lint # Lint TypeScript files
pnpm lint:fix # Fix linting issues
pnpm format # Format code with Prettiercd src-tauri
cargo build # Build Rust backend
cargo test # Run Rust tests
cargo clippy # Lint Rust code
cargo fmt # Format Rust codepnpm tauri dev # Run full app in dev mode
pnpm tauri build # Build production app with installersCHAMP/
βββ src/ # React frontend
β βββ components/ # UI components
β β βββ Dashboard.tsx # Main dashboard
β β βββ ServiceCard.tsx # Service control cards
β β βββ FirstRunWizard.tsx # Setup wizard
β β βββ SettingsPanel.tsx # Settings UI
β βββ hooks/ # Custom React hooks
β βββ types/ # TypeScript definitions
β βββ App.tsx # Main app component
βββ src-tauri/ # Rust backend
β βββ src/
β β βββ commands.rs # Tauri IPC commands
β β βββ process/ # Service process management
β β βββ config/ # Configuration generation
β β βββ runtime/ # Binary download & locator
β β βββ lib.rs # Main library entry
β βββ runtime-config.json # Runtime binary definitions
β βββ tauri.conf.json # Tauri app configuration
βββ package.json # Node.js dependencies
Frontend (React + TypeScript)
- Modern React 19 with TypeScript
- Tailwind CSS for styling
- Lucide React for icons
- Tauri IPC for backend communication
Backend (Rust + Tauri)
- Modular architecture with clear separation of concerns
- Process management for service lifecycle
- Configuration generation with Mustache templates
- Runtime binary download and verification
- Cross-platform path handling
CHAMP stores all data in platform-specific user directories:
Windows:
%LOCALAPPDATA%\CHAMP\
βββ config\ # Generated service configs
βββ logs\ # Service logs
βββ mysql\data\ # MySQL database files
βββ projects\ # Your web projects
βββ runtime\ # Downloaded binaries
macOS/Linux:
~/.campp/
βββ config/
βββ logs/
βββ mysql/data/
βββ projects/
βββ runtime/
Advanced users can customize binary versions and download URLs by editing:
runtime-config.json- Default configuration (bundled with app)runtime-config.user.json- User overrides (optional)
See runtime-config.schema.json for the full configuration schema.
Accessible via the Settings panel in the app (or press Ctrl/Cmd + ,):
- Ports: Customize service ports
- Auto-Start: Enable/disable automatic service startup
- Project Folder: Set default project directory
- PHP Version: Switch between installed PHP versions
- MySQL Version: Switch between installed MySQL versions
- PostgreSQL Version: Switch between installed PostgreSQL versions
- Additional Runtimes: Install and manage Node.js, Python, Go, and Ruby versions
- Check if ports are already in use
- Review service logs in
logs/directory - Verify runtime binaries are installed
- Try "Reset Installation" from Debug menu (dev mode)
- Open Settings panel
- Change conflicting ports
- Restart affected services
In development mode:
- Open Debug menu
- Select "Reset Installation"
- Re-run First-Run Wizard
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
License Holder: Thirawat Sinlapasomsak
- Original Project: CAMPP by KarnYong - The foundation and inspiration for this project
- Tauri - Desktop app framework
- Caddy - Modern web server
- PHP - Server-side scripting
- MySQL - Database server
- phpMyAdmin - Database management
- React - UI framework
- Issues: GitHub Issues
- Repository: github.com/thirawat27/CHAMP
Made with β€οΈ by Thirawat27