A modern desktop application for managing local development services (Apache, MySQL, etc.) built with Wails, React, TypeScript, and shadcn/ui.
- 🎛️ Service Management - Start/Stop Apache, MySQL, and more 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
- 🖥️ Cross-platform - Supports Linux (systemctl), macOS (brew), Windows (net)
- ⚡ 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.shFor passwordless service management on Linux:
sudo visudo
# Add these lines (replace 'username' with your username):
username ALL=(ALL) NOPASSWD: /bin/systemctl start *
username ALL=(ALL) NOPASSWD: /bin/systemctl stop *
username ALL=(ALL) NOPASSWD: /bin/systemctl status *
username ALL=(ALL) NOPASSWD: /bin/systemctl is-active *# Run service test script
./test-services.sh- QUICKSTART.md - Get started quickly
- SETUP.md - Detailed setup instructions
- IMPLEMENTATION_GUIDE.md - Complete implementation guide
| Service | Linux | macOS | Windows |
|---|---|---|---|
| Apache | apache2 | httpd | Apache2.4 |
| MySQL | mysql | mysql | MySQL80 |
| PostgreSQL | postgresql | postgresql | PostgreSQL |
| Redis | redis-server | redis | Redis |
| Nginx | nginx | nginx | nginx |
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# Setup sudoers (see Setup Permissions above)- Check service name matches your OS
- Check logs in UI for error details
- Test manually:
sudo systemctl status apache2
- GitHub: @Kocannn
- Repository: LocalValet
- Wails - Go + Web framework
- shadcn/ui - UI components
- Tailwind CSS - CSS framework
Made with ❤️ using Wails