Skip to content

JeffGepiga/DevBoxPro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

288 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Electron React Vite TailwindCSS

πŸš€ DevBox Pro

Run legacy and modern PHP and Node.js apps side by side with isolated runtimes, bundled services, and zero Docker setup.

Maintaining an old PHP 7.4 project while building a new Laravel 11 app on PHP 8.5? Running a Next.js frontend alongside a PHP backend? DevBox Pro is built for exactly that workflow. It lets you run multiple PHP, Node.js, database, and web server versions at the same time, with per-project configuration, automatic local domains, compatibility warnings, and bundled tooling.

DevBox Pro is an Electron desktop app with a React renderer and a Node.js main process. It manages PHP, Node.js, MySQL, MariaDB, Redis, Nginx, Apache, PostgreSQL, MongoDB, MinIO, Memcached, Mailpit, phpMyAdmin, Composer, Git, and more from one local interface.

Version 1.0.6: This release focuses on web server hardening and the new Share on Internet option powered by Cloudflare Tunnel and zrok.

Important: DevBox Pro is built for local development, testing, demos, and temporary preview links. It is not intended for production hosting or production traffic.


✨ Features

🐘 Multi-PHP Version Support

  • PHP 7.4, 8.0, 8.1, 8.2, 8.3, 8.4, 8.5 - Run multiple versions side by side
  • Per-project PHP version selection with compatibility validation
  • Easy extension management per version with php.ini editor
  • Pre-configured for optimal performance

🟒 Node.js Project Support

  • Node.js 16, 18, 20, 22, 24 - Run pure Node.js applications
  • Per-project Node.js version selection
  • Automatic proxy through Nginx/Apache for .test domains
  • Run Express, Next.js, Nuxt, or any Node.js framework

🌐 Web Server Options

  • Nginx 1.24, 1.26, 1.28 - High-performance, low memory footprint (recommended)
  • Apache 2.4 - Full .htaccess support, mod_rewrite included
  • Front-door ownership and automatic proxying between Nginx and Apache
  • Automatic virtual host creation
  • HTTP & HTTPS support for every project

πŸ“¦ Embedded Services

Service Versions Description
MySQL 5.7, 8.0, 8.4 Powerful relational database
MariaDB 10.6, 10.11, 11.4 MySQL-compatible, open source
Redis 6.2, 7.2, 7.4 In-memory cache & session storage
PostgreSQL 14, 15, 16, 17 Advanced relational database
MongoDB 6.0, 7.0, 8.0 Document database
Memcached 1.6 Distributed memory caching
MinIO Latest S3-compatible object storage
Mailpit Latest Email testing with SMTP server
phpMyAdmin Latest Web-based database management
Node.js 16, 18, 20, 22, 24 (LTS) JavaScript runtime for projects & tooling
Python 3.10, 3.11, 3.12, 3.13 Runtime for project tooling and workers
SQLite 3 Embedded database runtime
Composer Latest PHP dependency manager

πŸ’Ύ Database Management

  • Multi-engine support - MySQL, MariaDB, PostgreSQL, and MongoDB workflows
  • Per-version data isolation - Each version has its own data directory
  • Database import/export with .sql, .gz, PostgreSQL, and MongoDB flows
  • Progress tracking for import/export operations
  • phpMyAdmin integration for web-based management
  • Automatic database creation per project

πŸ” SSL & Security

  • Automatic SSL certificate generation
  • Wildcard certificate support
  • One-click certificate trust
  • .test domain support (e.g., myproject.test)

🌍 Public Internet Sharing

  • Share a running project publicly with Cloudflare Tunnel or zrok
  • Per-project Share on Internet toggle with optional auto-start tunnel when the project starts
  • Works with both Nginx and Apache projects, including mixed front-door proxy setups
  • Tunnel proxy rewrites redirects, cookies, and absolute local .test URLs so public sessions stay on the tunnel hostname
  • Cloudflare Quick Tunnels use random *.trycloudflare.com URLs
  • zrok requires a one-time app-wide enable token in Binary Manager β†’ Tools
  • Built for previews and reviews, not for production deployment

🎯 Framework Support

  • Laravel - Full support with Artisan, Queue Workers, Scheduler
  • Symfony - Console commands, Doctrine integration
  • WordPress - WP-CLI ready, Multisite support
  • Custom PHP - Works with any PHP application
  • Node.js - Express, Next.js, Nuxt, Fastify, or any Node.js app

πŸ”§ Binary Manager

  • Download individual components - Only install what you need
  • Multi-version management - Keep multiple versions installed
  • One-click updates - Easy version upgrades
  • Import custom binaries - Use your own compiled versions
  • Remote definitions - Binary metadata and compatibility rules can be updated without shipping a new app build

☁️ Cloud Configuration Updates

  • Remote binary definitions - New versions available without app update
  • Compatibility rules sync - Updated version compatibility warnings
  • One-click update check - Check for new binaries and rules from Settings
  • Offline fallback - Built-in defaults when offline
  • Version tracking - Only download when updates are available

πŸ’» Terminal Commands

  • Direct command access - Use php, npm, node, composer, mysql, mysqldump, and related tools directly from any terminal
  • Automatic version detection - Detects your project and uses the correct PHP/Node.js version
  • Works everywhere - VS Code, Windows Terminal, PowerShell, or any terminal emulator
  • No prefix needed - Just run php artisan migrate instead of complex paths
  • Prevents version conflicts - No more "wrong PHP version" issues

πŸ“Š Logging & Monitoring

  • Real-time log streaming per project and service
  • Color-coded log levels (info, warning, error)
  • Log file rotation and cleanup
  • Service resource monitoring

βš™οΈ Project Configuration

  • Service version selection per project
  • Compatibility validation - Warns about incompatible combinations
  • Binary validation - Checks required binaries before project start
  • php.ini editor - Customize PHP settings per version

πŸš€ Quick Start

Installation

  1. Download the latest release for your platform:
  • Windows: DevBox-Pro-Setup-1.0.6.exe
  • macOS: DevBox-Pro-1.0.6.dmg
  1. Install the application

  2. Download binaries from the Binary Manager:

    • Click "Download All" for the full stack, or
    • Select individual components as needed

Creating Your First Project

  1. Click "+ New Project" on the Dashboard
  2. Select your project type (Laravel, Symfony, WordPress, Custom PHP, or Node.js)
  3. Choose project folder and PHP/Node.js version
  4. Configure services (MySQL, Redis, etc.)
  5. Set your domain (e.g., myproject.test)
  6. Click Create and you're ready!

Sharing a Project on the Internet

  1. Open the project detail page and enable Share on Internet
  2. Choose Cloudflare Tunnel or zrok as the provider
  3. Optionally enable Auto-start tunnel if the project should publish automatically on startup
  4. Start the project, then click Start Sharing
  5. Use the generated public URL to access the project from outside your local machine

Provider notes: Cloudflare uses disposable random public URLs on trycloudflare.com. zrok requires a one-time app-wide enable step before any project can use it.

Production note: Tunnel sharing is intended for temporary previews, QA, and stakeholder review. Do not use DevBox Pro as a production hosting platform.

Using Terminal Commands

DevBox Pro lets you use php, npm, node, composer, mysql, and mysqldump directly from any terminal with automatic project version detection:

  1. Go to Settings > CLI Tool in DevBox Pro
  2. Enable "Terminal commands"
  3. Restart your terminal or VS Code

Usage examples:

# Navigate to your project folder
cd C:\Projects\my-laravel-app

# Run PHP with project-specific version (auto-detected)
php artisan migrate
php artisan optimize

# Run Composer with correct PHP version
composer install
composer update

# Run Node.js/npm with project version (if enabled)
npm install
npm run dev
npx vite build

# Connect to MySQL/MariaDB using the active database version
mysql -u root
mysql -u root -p mydb < migration.sql
mysqldump -u root mydb > backup.sql

How it works: When you run php, mysql, or npm from a project directory, DevBox Pro automatically uses that project's configured version. Outside a project, it uses your default version set in Settings.


πŸ’» Development Setup

Prerequisites

  • Node.js 24+
  • npm
  • Git

Setup

# Clone the repository
git clone https://github.com/JeffGepiga/DevBoxPro.git
cd DevBoxPro

# Install dependencies
npm install

# Start the Electron app with the Vite renderer dev server
npm run dev

# Build the renderer bundle only
npm run build:renderer

# Build platform packages
npm run build:win
npm run build:mac
npm run build:all

The renderer dev server runs at http://localhost:3000.

Testing

DevBox Pro includes unit, integration, and end-to-end coverage.

# Run all tests
npm test

# Run only main process tests
npm run test:main

# Run only renderer process tests
npm run test:renderer

# Run End-to-End (E2E) tests
npm run test:e2e

The test suite covers the main-process managers, the renderer, and Playwright end-to-end scenarios for project creation, binaries, databases, SSL, and settings persistence.

Project Structure

DevBoxPro/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ main/                    # Electron main process
β”‚   β”‚   β”œβ”€β”€ services/
β”‚   β”‚   β”‚   β”œβ”€β”€ BinaryDownloadManager.js  # Thin facade for binary downloads and extraction
β”‚   β”‚   β”‚   β”œβ”€β”€ CliManager.js             # Thin facade for terminal integration
β”‚   β”‚   β”‚   β”œβ”€β”€ CompatibilityManager.js   # Thin facade for compatibility rules and updates
β”‚   β”‚   β”‚   β”œβ”€β”€ DatabaseManager.js        # Thin facade for multi-engine DB operations
β”‚   β”‚   β”‚   β”œβ”€β”€ GitManager.js             # Thin facade for Git clone and SSH workflows
β”‚   β”‚   β”‚   β”œβ”€β”€ ProjectManager.js         # Thin facade for project lifecycle and vhosts
β”‚   β”‚   β”‚   β”œβ”€β”€ ServiceManager.js         # Thin facade for service lifecycle and config generation
β”‚   β”‚   β”‚   β”œβ”€β”€ SupervisorManager.js      # Thin facade for worker and process supervision
β”‚   β”‚   β”‚   β”œβ”€β”€ binary/                   # Binary manager mixins
β”‚   β”‚   β”‚   β”œβ”€β”€ cli/                      # CLI manager mixins
β”‚   β”‚   β”‚   β”œβ”€β”€ compatibility/            # Compatibility manager mixins
β”‚   β”‚   β”‚   β”œβ”€β”€ database/                 # Database manager mixins
β”‚   β”‚   β”‚   β”œβ”€β”€ git/                      # Git manager mixins
β”‚   β”‚   β”‚   β”œβ”€β”€ project/                  # Project manager mixins
β”‚   β”‚   β”‚   β”œβ”€β”€ service/                  # Service manager mixins
β”‚   β”‚   β”‚   β”œβ”€β”€ supervisor/               # Supervisor manager mixins
β”‚   β”‚   β”‚   └── ...
β”‚   β”‚   β”œβ”€β”€ ipc/
β”‚   β”‚   β”‚   └── handlers.js      # IPC communication
β”‚   β”‚   β”œβ”€β”€ utils/
β”‚   β”‚   β”‚   β”œβ”€β”€ ConfigStore.js   # Configuration storage
β”‚   β”‚   β”‚   β”œβ”€β”€ PortUtils.js     # Port probing and process lookup
β”‚   β”‚   β”‚   └── SpawnUtils.js    # Safer child-process helpers
β”‚   β”‚   β”œβ”€β”€ preload.js           # Preload script
β”‚   β”‚   └── main.js              # Main entry
β”‚   β”‚
β”‚   └── renderer/                # React frontend
β”‚       β”œβ”€β”€ src/
β”‚       β”‚   β”œβ”€β”€ components/      # Reusable components
β”‚       β”‚   β”‚   β”œβ”€β”€ Sidebar.jsx
β”‚       β”‚   β”‚   β”œβ”€β”€ PhpIniEditor.jsx
β”‚       β”‚   β”‚   β”œβ”€β”€ XTerminal.jsx
β”‚       β”‚   β”‚   └── ...
β”‚       β”‚   β”œβ”€β”€ pages/           # Page components
β”‚       β”‚   β”‚   β”œβ”€β”€ Dashboard.jsx
β”‚       β”‚   β”‚   β”œβ”€β”€ Projects.jsx
β”‚       β”‚   β”‚   β”œβ”€β”€ ProjectDetail.jsx
β”‚       β”‚   β”‚   β”œβ”€β”€ Databases.jsx
β”‚       β”‚   β”‚   β”œβ”€β”€ Services.jsx
β”‚       β”‚   β”‚   β”œβ”€β”€ BinaryManager.jsx
β”‚       β”‚   β”‚   β”œβ”€β”€ Settings.jsx
β”‚       β”‚   β”‚   └── ...
β”‚       β”‚   β”œβ”€β”€ context/         # React context
β”‚       β”‚   β”‚   └── AppContext.jsx
β”‚       β”‚   └── App.jsx          # Root component
β”‚       └── index.html
β”‚
β”œβ”€β”€ resources/                   # App resources (icons, configs)
β”œβ”€β”€ config/                      # Remote configuration files
β”‚   β”œβ”€β”€ binaries.json            # Binary download definitions
β”‚   β”œβ”€β”€ compatibility.json       # Version compatibility rules
β”‚   └── README.md                # Config contribution guide
β”œβ”€β”€ screenshots/                 # App screenshots
β”œβ”€β”€ build/                       # Build resources
β”œβ”€β”€ electron-builder.config.js   # Electron builder config
β”œβ”€β”€ package.json
└── README.MD

βš™οΈ Configuration

Default Ports

Service Default Port
PHP Projects 8000+ (auto-assigned)
MySQL 3306
MariaDB 3310
Redis 6379
PostgreSQL 5432
MongoDB 27017
Memcached 11211
MinIO API 9000
MinIO Console 9001
Mailpit SMTP 1025
Mailpit Web 8025
phpMyAdmin 8080
Nginx HTTP 80
Nginx HTTPS 443
Apache HTTP 8081 when Apache is not the front-door server
Apache HTTPS 8444 when Apache is not the front-door server

Web server ownership is dynamic. The first active web server can claim ports 80 and 443, while the other is assigned alternate ports and proxied automatically.

Environment Variables

Projects can use .env files with these pre-configured variables:

APP_ENV=local
APP_DEBUG=true
APP_URL=http://myproject.test

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=myproject
DB_USERNAME=root
DB_PASSWORD=

CACHE_DRIVER=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_MAILER=smtp
MAIL_HOST=127.0.0.1
MAIL_PORT=1025

πŸ› οΈ Technologies

  • Electron 40 - Cross-platform desktop framework
  • React 19 - UI library
  • Vite 7 - Build and dev server
  • TailwindCSS 4 - Styling pipeline
  • Vitest - Unit and integration testing
  • Playwright - End-to-end testing
  • electron-builder - Distribution packaging

πŸ“‹ Roadmap

  • Multi-PHP version support (7.4 - 8.5)
  • MySQL & MariaDB multi-version support
  • Redis multi-version integration
  • Nginx & Apache multi-version web servers
  • Automatic SSL certificates
  • Virtual host management
  • Node.js & npm multi-version support
  • Pure Node.js project support (Express, Next.js, etc.)
  • Composer integration
  • Database import/export with compression
  • Per-project service version selection
  • Binary validation before project start
  • php.ini editor
  • Real-time log streaming
  • Cloud config updates (binaries & compatibility rules)
  • PostgreSQL support
  • MongoDB support
  • Project templates
  • Git clone integration with SSH key management
  • Supervisor process management (queues, workers, schedulers)
  • Bulk project and service stop
  • Front-door proxy for Nginx/Apache co-existence
  • Docker container support
  • Extension marketplace
  • Cloud sync settings

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ’¬ Support


Made with ❀️ for PHP & Node.js developers

About

Local development server with multi-version support. Run PHP 7.4 to 8.4 simultaneously with MySQL, Redis, Nginx & more. No Docker needed.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages