A modern desktop application for managing local development services (Apache, MySQL, etc.) built with Wails, React, TypeScript, and shadcn/ui.
- 🎛️ Service Management - Start/Stop local services with toggle switches
- 📊 Real-time Monitoring - Auto-refresh service status every 5 seconds
- 📝 Integrated Logging - Color-coded logs with timestamps and log levels
- 🎨 Modern UI - Built with shadcn/ui components and Tailwind CSS
- 🧱 Isolated Runtime - Services run from app-managed
runtime/binaries and configs - ⚡ Fast & Lightweight - Native performance with Go backend and React frontend
# Install dependencies
go mod download
cd frontend && npm install && cd ..
# Run development server
wails dev
# Or use the helper script
chmod +x dev.sh test-services.sh
./dev.shLocalValet now uses app-isolated runtimes defined by config/runtime.json.
config/runtime.json
runtime/linux/php/8.2/
runtime/linux/php/8.3/
runtime/pids/
runtime/logs/To switch PHP version, update activeVersion for php-fpm in config/runtime.json
or use Settings page in the app.
# Run service test script
./test-services.sh- QUICKSTART.md - Get started quickly
- SETUP.md - Detailed setup instructions
- IMPLEMENTATION_GUIDE.md - Complete implementation guide
| Service | Canonical Key |
|---|---|
| Apache | apache |
| MySQL | mysql |
| PostgreSQL | postgresql |
| Redis | redis |
| Nginx | nginx |
| PHP-FPM | php-fpm |
app.go # Main application logic
├── GetServiceStatus() # Check service status
├── StartService() # Start a service
├── StopService() # Stop a service
└── ToggleService() # Toggle service on/off
service_utils.go # Helper functions
service_config.go # Service configurations
src/
├── App.tsx # Main app with service management
├── components/
│ ├── app-layout.tsx # Layout wrapper with sidebar
│ ├── app-sidebar.tsx # Navigation sidebar
│ └── ui/ # shadcn/ui components
Update App.tsx:
const [modules, setModules] = useState<ServiceModule[]>([
{
name: "Apache",
serviceName: "apache2",
isRunning: false,
isLoading: false,
},
{ name: "MySQL", serviceName: "mysql", isRunning: false, isLoading: false },
// Add new service here
]);wails buildwails generate module
# Or restart: wails dev- Ensure binary paths in
config/runtime.jsonexist - Check logs in
runtime/logs/ - Verify active version and runtime config for the service
- GitHub: @Kocannn
- Repository: LocalValet
- Wails - Go + Web framework
- shadcn/ui - UI components
- Tailwind CSS - CSS framework
Made with ❤️ using Wails