{"id":49431898,"url":"https://github.com/feryardiant/wp-env","last_synced_at":"2026-05-17T05:11:45.362Z","repository":{"id":353663064,"uuid":"1220325620","full_name":"feryardiant/wp-env","owner":"feryardiant","description":"Zero-config, Docker-based local environment for rapid theme and plugin evaluation. ","archived":false,"fork":false,"pushed_at":"2026-04-24T21:42:36.000Z","size":64,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-24T23:26:46.637Z","etag":null,"topics":["wordpress","wordpress-boilerplate","wordpress-plugins","wordpress-project","wordpress-themes"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/feryardiant.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-GPL","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":"feryardiant","patreon":"feryardiant"}},"created_at":"2026-04-24T19:30:38.000Z","updated_at":"2026-04-24T21:42:40.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/feryardiant/wp-env","commit_stats":null,"previous_names":["feryardiant/wp-env"],"tags_count":null,"template":true,"template_full_name":null,"purl":"pkg:github/feryardiant/wp-env","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feryardiant%2Fwp-env","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feryardiant%2Fwp-env/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feryardiant%2Fwp-env/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feryardiant%2Fwp-env/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/feryardiant","download_url":"https://codeload.github.com/feryardiant/wp-env/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feryardiant%2Fwp-env/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32428022,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T13:34:34.882Z","status":"ssl_error","status_checked_at":"2026-04-29T13:34:29.830Z","response_time":110,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["wordpress","wordpress-boilerplate","wordpress-plugins","wordpress-project","wordpress-themes"],"created_at":"2026-04-29T13:37:19.304Z","updated_at":"2026-05-17T05:11:45.339Z","avatar_url":"https://github.com/feryardiant.png","language":"Shell","funding_links":["https://github.com/sponsors/feryardiant","https://patreon.com/feryardiant"],"categories":[],"sub_categories":[],"readme":"# 📦 WordPress Evaluation Environment\n\n**Zero-config, Docker-based local environment for rapid theme and plugin evaluation.**\n\nSpin up a fully installed WordPress site in seconds, bypassing the setup wizard entirely. This environment is pre-tuned for high-speed testing of themes, plugins, and complex setups like WooCommerce or Multisite.\n\n### ⚡ Key Features\n- 🚀 **Zero-Config**: Fully installed WordPress site via `docker compose up`.\n- 🛍️ **WooCommerce Ready**: Automatic store setup and configuration.\n- 🌐 **Multisite Support**: One-click conversion to a subfolder network.\n- 📧 **Mailpit Integrated**: Instant email capture and testing dashboard.\n- 🛠️ **Monorepo Structure**: Manage multiple themes and plugins in one project.\n\n## 🚀 Quick Start\n\n1. **Configure**: `cp .env.example .env`\n2. **Start**: `docker compose up -d`\n3. **Evaluate**: Visit [http://localhost:8080](http://localhost:8080)\n\n\u003e **Default Credentials:**  \n\u003e **User:** `admin` | **Password:** `password`\n\n## 🔋 Built-in Evaluation Tools\n\n### ⚡ Automated Installation\nThe environment uses a custom `init-wp.sh` engine to handle everything:\n- Database creation and site installation.\n- Admin user creation and plugin/theme activation.\n- WooCommerce and Multisite configuration.\n- **Plugin Cleanup**: Use `TRIM_PLUGINS` in `.env` to surgically remove default or unwanted plugins during setup.\n- **Must-Use Plugins**: Support for `mu-plugins` via the `docker/mu-plugins` directory.\n- **Bulk Installation**: Support for installing multiple plugins and themes via `scripts/init-plugins.txt` and `scripts/init-themes.txt`.\n\n### 🛍️ WooCommerce Integration\nIf `woocommerce` is in `SITE_PLUGINS`, the store is automatically configured:\n- Sets currency, units, and address via `.env`.\n- Skips the onboarding wizard for a \"Ready-to-Evaluate\" experience.\n\n### 🌐 Multisite-on-Demand\nConvert your site to a **Multisite Network** by setting `MULTISITE_ENABLED=1`. The `cli` service handles the migration and `.htaccess` updates automatically.\n\n### 📧 Email Testing (Mailpit)\nAll outgoing emails are captured by **Mailpit**.\n- **Dashboard:** [http://localhost:8025](http://localhost:8025)\n- All local packages are automatically routed to the internal mail service.\n\n## 🔌 Evaluating Your Assets\n\n### 📁 Local Packages\nPlace your theme or plugin folder in the [`packages/`](packages/) directory. They are automatically discovered and can be managed via the root toolset.\n\n#### 🏗️ Adding a New Package\n1. **Create Directory**: `mkdir packages/my-new-plugin`\n2. **Mount Volume**: Update the `x-packages` anchor at the top of [`compose.yml`](compose.yml). This automatically syncs the volume across both `web` and `cli` services.\n3. **Register PHP Dependencies**: Ensure the package has a `composer.json`. Run `composer install` at the project root to merge its dependencies.\n4. **Register Assets**: Ensure the package has a `package.json`. Run `bun install` at the root to register its workspace.\n\n### 🌐 Official Repository\nAdd slugs to `SITE_PLUGINS` or `SITE_THEMES` in your `.env`:\n```bash\nSITE_PLUGINS=akismet,woocommerce,contact-form-7\n```\n\n\u003e **Note:** For bulk installation, you can also list slugs (one per line) in `scripts/init-plugins.txt` or `scripts/init-themes.txt`.\n\n## 🏗️ Project Architecture\n\nThis project is organized as a **monorepo** and uses a modular Docker configuration to simplify the development of multiple WordPress assets simultaneously.\n\n### 🐳 Docker Configuration\nThe environment uses a base configuration in `docker/compose.base.yml` which is extended by the root `compose.yml`. This separation allows for a clean, reusable base image and service definitions while keeping local development overrides isolated.\n\n### 📂 Directory Structure\n- [`assets/`](assets/): Static assets, favicon, and server configurations.\n- [`docker/`](docker/): Local MySQL data and service configurations.\n- [`packages/`](packages/): Local themes and plugins.\n- [`scripts/`](scripts/): Development utilities (Installation, POT generation, Distribution).\n\n## 🛠️ Development Tools\n\n### 📦 Dependency Management\n- **Bun**: Manages root tools and JS workspaces.\n- **Composer**: Manages PHP dependencies with automated package merging.\n\n### 🎨 Linting \u0026 Formatting\n- **Biome**: For JS, TS, JSON, and CSS (`bun lint`).\n- **PHPCS**: All WordPress packages located in [`packages/`](packages/) directory should follow [WordPress](https://developer.wordpress.org/coding-standards/wordpress-coding-standards/php/) Coding Standards (`composer lint:packages`), while the [`tests/`](tests/) should use [`PSR12`](https://www.php-fig.org/psr/psr-12/) Coding Standards (`composer lint:tests`).\n\n### 📦 Scripts\n- [`scripts/init-wp.sh`](scripts/init-wp.sh): Dynamically download, configure, and install a fresh WordPress core.\n- [`scripts/make-pot.sh`](scripts/make-pot.sh): Generates translation files for all packages.\n- [`scripts/make-dist.sh`](scripts/make-dist.sh): Creates production-ready ZIP archives. Requires a `.distignore` file in the package directory to filter contents.\n\n### 🐞 Debugging \u0026 Inspections\n- **Xdebug**: Pre-installed and configured for PHP 8.1+. Connect your IDE to the `9003` port on your local machine.\n- **WP-CLI**: Access the containerized CLI via the `cli` service.\n  ```bash\n  docker compose run --rm cli wp \u003ccommand\u003e\n  ```\n- **Database Access**: Connect to the local MySQL server at `localhost:3306` using the credentials defined in `.env`.\n\n## 🧪 Testing \u0026 Quality Assurance\n\nThis project includes a robust testing infrastructure for both unit and integration tests.\n\n### 🛠️ Testing Stack\n- **PHPUnit 10.5**: The core testing framework.\n- **Brain Monkey**: For advanced WordPress hook and function mocking.\n\n### 🚀 Running Tests Locally\nEnsure you have installed development dependencies via `composer install`.\n```bash\ncomposer test\n```\nThis will execute all test suites defined in [`phpunit.xml`](phpunit.xml) and output a text-based coverage report. Tests are designed to run on the host machine using the root `vendor/bin/phpunit` binary.\n\n### 🔄 Continuous Integration (CI)\nAutomated testing is integrated into the development lifecycle via **GitHub Actions** ([`.github/workflows/main.yml`](.github/workflows/main.yml)):\n- **Matrix Testing**: Every Pull Request and Push to `main` is automatically tested across multiple **PHP** and **WordPress** versions.\n\n## ⚙️ Lifecycle \u0026 Configuration\n\n### Lifecycle Commands\n- **Start**: `docker compose up -d`\n- **Stop**: `docker compose down`\n- **Reset**: `docker compose down -v` (Wipes all data)\n- **Logs**: `docker compose logs -f cli` (Monitor installation)\n\n### Environment Variables\nSee [.env.example](.env.example) for a full list of available settings including site titles, admin credentials, and WooCommerce/Multisite options.\n\n## ⚖️ Licensing\n\nThis project uses a **hybrid licensing model**:\n- **Environment \u0026 Tools**: [MIT License](LICENSE-MIT).\n- **WordPress Packages**: [GPLv3 or later](LICENSE-GPL).\n\nThis ensures the platform is free to use while ensuring all distributable assets remain compliant with the WordPress ecosystem.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fferyardiant%2Fwp-env","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fferyardiant%2Fwp-env","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fferyardiant%2Fwp-env/lists"}