Skip to content

Frameworks

Govard detects supported frameworks and applies runtime defaults plus version-aware overrides.


Support Matrix

FrameworkAuto-DetectionVersion-Aware ProfileDefault Web Root
Magento 2/pub
Magento 1 / OpenMageframework defaultsproject root
Laravel/public
Next.jsframework defaultsproject root
Emdashframework defaultsproject root
Drupal/web
Symfony/public
Shopwareframework defaults/public
CakePHPframework defaults/webroot
WordPress/
Custommanualmanualproject root

Runtime Defaults

FrameworkPHPNodeDBCacheSearchQueue
Magento 28.424mariadb 11.4valkey 8.0.0opensearch 2.19.0none
Magento 1 / OpenMage8.1mariadb 10.11nonenonenone
Laravel8.4mariadb 11.4nonenonenone
Next.js24nonenonenonenone
Emdash22nonenonenonenone
Drupal8.4mariadb 11.4nonenonenone
Symfony8.4mariadb 11.4nonenonenone
Shopware8.4mariadb 11.4nonenonenone
CakePHP8.4mariadb 11.4nonenonenone
WordPress8.3mariadb 11.4nonenonenone
Custom8.4mariadb 11.4nonenonenone

means Govard does not force a default for that stack component.


Version-Aware Overrides

FrameworkVersionPHP OverrideOther
Laravel108.2
Laravel118.3
Laravel128.4
Symfony68.2
Symfony78.3
Drupal108.3
Drupal118.4
WordPress68.3
Magento 22.4.9+8.4MariaDB 11.4, Redis 7.2, OpenSearch 3.0.0, RabbitMQ 4.1.0
Magento 22.4.88.4MariaDB 11.4, Redis 7.2, OpenSearch 2.19.0 or 3.0.0
Magento 22.4.78.3MariaDB 10.6 or 10.11, Redis 7.2, OpenSearch 2.12.0-2.19.0
Magento 22.4.68.2MariaDB 10.6 or 10.11, Redis 7.0-7.2, OpenSearch 2.5.0-2.19.0
bash
# Inspect the resolved profile
govard config profile --json
govard config profile --framework laravel --framework-version 11 --json

🧱 Magento 2

Magento 2 is the deepest supported workflow in Govard.

Key Features

  • govard config auto injects DB, cache, search, Varnish, and base URLs into app/etc/env.php
  • govard tool magento [command] runs Magento CLI (bin/magento) inside the PHP container
  • govard tool magerun [command] (Shortcut: mr) runs n98-magerun2 inside the PHP container
  • govard tool magento cron:install installs crontabs inside the container
  • Optional Selenium/MFTF support (mftf: true in features)
  • Optional LiveReload for Grunt/Vite workflows (livereload: true in features)
  • Dedicated php-debug routing when Xdebug is enabled

Typical Flow

bash
govard env up
govard config auto
govard tool magento cache:clean
govard test phpunit

🏎️ LiveReload & Frontend Development

Govard supports the standard Magento 2 Grunt-based LiveReload workflow.

  1. Enable the feature in .govard.yml:
    yaml
    stack:
      features:
        livereload: true
  2. Apply changes: Run govard env up. This exposes port 35729 to your host machine.
  3. Start the watcher:
    bash
    govard shell
    # Inside the shell:
    grunt watch
  4. Verify Configuration: This is set up automatically if you run govard config auto. It injects the following snippet into your app/etc/env.php:
    html
    <script src="http://localhost:35729/livereload.js?snipver=1"></script>
  5. Browser Setup: Simply install the LiveReload Browser Extension or rely on the automated script injection above.

TIP

Manual injection via default.xml is no longer needed. Everything is handled by Govard's auto-configuration engine via env.php.

NOTE

Since port 35729 is mapped directly to your host, you can only run livereload: true for one project at a time. If you have multiple projects, ensure only the active one has this feature enabled.

Native Upgrade Pipeline

bash
# Test upgrade in an isolated profile
cp .govard.yml .govard.upgrade-test.yml
GOVARD_ENV=upgrade-test govard upgrade --version 2.4.8-p4 --dry-run
GOVARD_ENV=upgrade-test govard upgrade --version 2.4.8-p4

What govard upgrade does for Magento 2:

  • Resolves correct PHP/MariaDB/Search versions for the target
  • Smart Composer merge (preserves your modules and custom repos)
  • Automatically relaxes version constraints for dev tools (phpunit, phpmd)
  • Handles composer update, setup:upgrade, and static content compilation

Multi-Website / Multi-Store Setup

yaml
framework: "magento2"
domain: "primary.test"
store_domains:
  store-a.test:
    code: base
    type: website
  store-b.test:
    code: store_b
    type: store
bash
govard domain add store-a.test
govard domain add store-b.test
govard config auto
govard tool magento cache:flush

What Govard handles automatically:

  • Routes all domains through the shared proxy with HTTPS
  • Sets global base URL from domain
  • Runs scoped bin/magento config:set for each store_domains entry
  • Emits MAGE_RUN_CODE / MAGE_RUN_TYPE host mappings (object form with explicit type)

What you still need to do:

  • Create websites, stores, and store views in Magento admin
  • Clear config/cache after changing store mappings

🛒 Magento 1 / OpenMage

bash
govard tool magerun [command]

Default runtime: PHP 8.1 + MariaDB 10.11. No optional cache/search/queue services forced.

Native Upgrade Pipeline

bash
govard upgrade --version <version>

Handles: Composer sync, cache purge (var/cache, var/session, etc.), compiler maintenance, and DB migration via n98-magerun.

Multi-Store with Typed Routing

yaml
framework: "magento1"
domain: "primary.test"
store_domains:
  store-a.test:
    code: base
    type: website
  store-b.test:
    code: store_b
    type: store
  store-c.test: store_c   # scalar = legacy behavior (try both website + store code)

Object form with explicit type causes Govard to inject host-based MAGE_RUN_CODE / MAGE_RUN_TYPE into nginx/Apache automatically — no manual .htaccess SetEnvIf rules needed.


🎨 Laravel

bash
govard tool artisan [command]

Defaults: web root /public, MariaDB 11.4, version-aware PHP.

Native Upgrade Pipeline

bash
govard upgrade --version 12
  • Updates composer.json framework constraint
  • Runs full composer update
  • Runs php artisan migrate --force

🌐 Drupal

bash
govard tool drush [command]

Defaults: web root /web, MariaDB 11.4, version-aware PHP.


⚡ Symfony

bash
govard tool symfony [command]

Defaults: web root /public, MariaDB 11.4, version-aware PHP.

Native Upgrade Pipeline

bash
govard upgrade --version 7
  • Updates symfony/framework-bundle constraints
  • Runs composer update
  • Runs doctrine:migrations:migrate
  • Runs cache:clear

🛍️ Shopware

bash
govard tool shopware [command]

Defaults: web root /public, MariaDB 11.4, PHP 8.4.


🍰 CakePHP

bash
govard tool cake [command]

Defaults: web root /webroot, MariaDB 11.4.


📰 WordPress

bash
govard tool wp [command]

Defaults: web root /, MariaDB 11.4, PHP 8.3.

Fresh Bootstrap

WordPress fresh bootstrap downloads core from wordpress.org and installs via PHP bootstrap scripts — wp-cli is not required for initial setup.

bash
govard bootstrap --framework wordpress --fresh

Native Upgrade Pipeline

bash
govard upgrade --version 6.7
  • wp core update --version=<version>
  • wp core update-db
  • wp cache flush

⚡ Next.js

bash
govard shell   # opens web container at /app
govard tool npm [command]
govard tool npx [command]

Defaults: Node 24, no DB forced. Project-root web serving.


🔵 Emdash

Node-first local runtime: Node 22, no managed PHP/DB/cache/search/queue.

bash
govard shell           # web container at /app
govard tool pnpm [command]
govard open admin      # opens /_emdash/admin

Fresh install:

bash
govard bootstrap --framework emdash --fresh
govard env up

Package manager auto-detection: Govard reads package.json (packageManager field), pnpm-workspace.yaml, and lockfiles.

Current scope is local Node + SQLite + local uploads. Govard does not yet automate Cloudflare D1/R2 flows.


🔧 Custom Stack

bash
govard init --framework custom

Interactive picker for:

  • Web server (nginx, apache, hybrid)
  • Database engine and version
  • Cache service
  • Search engine
  • Queue service
  • Optional Varnish

← Configuration | Remotes and Sync →

Released under the MIT License.