dotsunited / wordpress-boilerplate
WordPress Boilerplate
Package info
github.com/dotsunited/wordpress-boilerplate
pkg:composer/dotsunited/wordpress-boilerplate
Requires
- composer/installers: ^2.3
- wpackagist-plugin/meta-box: ^5.10
Requires (Dev)
- roave/security-advisories: dev-master
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-08-27 12:26:03 UTC
README
A barebones, clean and minimalist WordPress Boilerplate, developed at Dots United as a foundation for modern, maintainable and lightning fast WordPress based projects.
Gutenberg ready.
A Demo is available here.
Features
- Maximum possible PageSpeed Insights score
- Bun for fast all-in-one JavaScript runtime
- Vite for asset bundling
- Composer for PHP dependency management
- Tailwind CSS for utility-first CSS
- Clean, maintainable and scalable project structure
- No bloat
Setup
Create a new project with:
composer create-project dotsunited/wordpress-boilerplate my-project
Docker
Adjust the docker-compose.yml to your needs using a docker-compose.override.yml file (https://docs.docker.com/compose/extends/).
You can add a database dump using a dump.sql.gz or dump.sql file which will be imported on the first run. If a database dump is present, a new user with the following credentials will be automatically added:
Username: `localAdmin` Password: `localPassword`
⚠️ Remember to remove or change the credentials in a production environment!
Multisite subfolders can be be configured by setting the WORDPRESS_MULTISITE_PATHS environment variable to e.g. 2=blog2,3=blog3, resulting in the following URLs:
If nothing is set, the ID of the corresponding blog will be used as a path, resulting in the following URLs:
Start the Docker containers with
docker compose up -d
Deployment
The GitHub Actions and GitLab templates build the frontend and Gutenberg assets
and deploy them with
ghcr.io/dotsunited/deploy:v0.
See the deploy repository for all supported protocols and configuration options.
Configure at least these variables for each target environment:
DEPLOY_PROTOCOL
DEPLOY_HOST
DEPLOY_USER
DEPLOY_REMOTE_PATH
For GitHub Actions, add connection values as environment variables and add
credentials as environment secrets. The environment name is the branch name
(main or staging). For GitLab, add the same values as CI/CD variables.
The templates deploy from ./public. The deploy image reads tracked files
directly from Git and adds generated paths from .deploy-include.
.deploy-ignore protects WordPress core,
uploads, plugins, .htaccess, and other server-managed files. Unrelated remote
files, themes, and plugins are not deleted.
Deployment state is stored as deploy.manifest.json. Apply
public/.htaccess.dist on the server when the destination is a web root to
block public access to this file.
To deploy a generated vendor/ directory, remove /vendor/** from
.deploy-ignore, add these rules to .deploy-include, include the directory
in the CI artifact, and run Composer in the build job:
+ /vendor/
+ /vendor/**
- run: composer install --no-dev --no-interaction --prefer-dist
Plugins
ℹ️ Automatic updates for plugins, themes and major core versions are disabled by default. You can enable them by removing or commenting the corresponding module inside
wp-content/mu-plugins/wordpress-boilerplate/wordpress-boilerplate.php.
If you uncommented sentry lines in docker-compose.yml install WP Sentry
Be careful when using plugins which depend on jQuery.
Gravity Forms for example will enqueue jquery once a form is embedded into a post or page.
In this case, you might include the form via an iFrame. You can use the gravity-forms-iframe plugin for easier integration.
Webfonts
It is recommended to use local webfonts and not from external CDN's like Google Fonts.
You can use google-webfonts-helper to download webfonts from Google Fonts.
License
Copyright (c) 2015-2026 Dots United GmbH. Released under the MIT license.