Skip to content

Overview ​

This is the developer documentation for the project: how to run it locally, how the code is organised, and how changes are tested and deployed. It is built from the repository's docs/ folder, so update it in the same pull request as the code it describes.

The stack ​

LayerWhat's usedGuide
Local servicesDocker Compose: WordPress (Apache, PHP 8.4), MariaDB, Redis, Mailpit, Adminer, XdebugLocal services
Configurationwp-config.php read from environment variables; must-use plugins for hardening and mailWordPress configuration
ThemeClassic theme: Twig components, PSR-4 classes, Tailwind CSS 4, daisyUI, Alpine.js and ViteTheme
EditorBlock editor for post content only (no full-site editing), styled from theme.json tokensTheme
DependenciesComposer at the project root (plugins via WordPress Packagist); npm for tooling and assetsPlugins
QualityPHPCS, PHPStan, Rector, PHPUnit, ESLint, Stylelint, Prettier, Playwright, commit hooksTesting and standards
Deliverysemantic-release, then a Docker image to GHCR, AWS or DigitalOcean, or an SSH sync to HostingerDeployment

Ground rules ​

  • Configuration comes from the environment. Nothing environment-specific is committed; .env locally, secrets and variables in production.
  • Production is immutable. Core, plugins and theme ship with each release. Nothing is installed or updated from wp-admin.
  • Dependencies are declared, never committed. Composer and npm lockfiles are the source of truth.
  • CI tests what ships. The end-to-end suite runs against the production image before it is released.

Where to start ​