StarterKit Foundation is composed of two core layers: the environment (containers, configuration files, and scripts) and the WordPress application (core, content, and theme). The architecture is structured for modularity, scalability, and predictability across local, staging, and production workflows.
βββ backups/ # Daily and weekly WordPress media, and database backups
βββ config/ # Global config files
β βββ certbot/ # Let's Encrypt configuration for SSL certificates
β βββ cron/ # Cron jobs for scheduled tasks
β βββ environment/ # Environment configuration files
β βββ nginx/ # Nginx configuration templates
β βββ php/ # PHP .ini configuration per environment
β βββ ssl/ # SSL certificates and keys
βββ db-data/ # Persistent database volume
βββ dockerfiles/ # Custom Dockerfile definitions
βββ iac/ # Infrastructure as Code (Terraform + Ansible)
βββ logs/ # Log files for WordPress, PHP, nginx
βββ sh/ # Shell scripts: setup, CLI wrappers, backups
βββ web/ # Web application folder
β βββ wp-config/ # WordPress config (wp-config.php) & files that should be copied to web root
β βββ wp-content/ # Themes, plugins, uploads
β β βββ mu-plugins/ # Must-use plugins (auto-loaded)
β β βββ plugins/ # Composer or manually installed plugins
β β βββ themes/ # Themes folder. Add your theme here
β β βββ uploads/ # User-uploaded media (excluded from VCS)
β βββ wp-core/ # WordPress core (managed by Composer)
βββ .editorconfig # Editor configuration for consistent coding style
βββ composer.json # PHP and WordPress dependencies
βββ docker-compose.yml # Main Docker Compose file
βββ docker-compose.build.yml # Additional services (Node.js, MailHog, etc.)
βββ Makefile # Developer-friendly command aliases
Docker Services
The project defines multiple containers to cover all development and runtime needs:
Main Docker Compose file (docker-compose.yml
):
- mariadb β MariaDB database service
- php β PHP-FPM container with WP-CLI and Xdebug
- nginx β Web server container using templated configs
- cron β Cron service for scheduled tasks
Additional services (docker-compose.build.yml
):
- composer β Composer service for managing PHP/WordPress dependencies
- node β Node.js container for building front-end assets
- phpmyadmin β Optional phpMyAdmin interface for local DB access
- certbot β Let’s Encrypt container for SSL certificate management
- mailhog β Optional SMTP server for testing outgoing email
These services ensure developers and DevOps engineers have all the tools needed to work efficiently across environments.
WordPress Application
WordPress is installed using Composer, with the following layout:
wp-core/
contains the WordPress core fileswp-config/
includes the project’s configuration fileswp-content/
houses themes, plugins, and uploads
This separation allows for:
- isolated configuration management
- centralized dependency control
- absolute consistent behavior from local to production setups
- secure handling of sensitive data
- easy updates and maintenance
WordPress File Structure Compatibility
Some modern WordPress boilerplates restructure core directories to enforce stricter separation of concerns. While this can improve modularity, it often introduces friction β many themes and plugins expect the native WordPress layout and fail when paths like wp-content/
or wp-config.php
are moved.
StarterKit avoids this by preserving the default WordPress file structure. Thereβs no need to rewrite plugin paths, patch templates, or maintain custom autoloaders.
Instead, project-level configuration, secrets, and Composer dependencies are isolated outside the web root, delivering the benefits of modern infrastructure β without sacrificing compatibility.
This approach provides:
- β Full support for plugins and themes expecting standard WordPress paths
- β Secure handling of environment-specific files
- β Dependency management with Composer
- β Consistent behavior across local and production environments β no surprises
Clean architecture, minimal assumptions, zero breakage.