Thanks for your interest in contributing to WordPressify! This guide will help you get started.
- Fork the repository and clone your fork
- Make sure you have Docker and Node.js (v16+) installed
- Run
npx wordpressifyto scaffold a local development environment - Run
npm startto spin up the Docker stack, thennpm run devinside the container to start developing
The project uses a Docker-based workflow with five services: MariaDB, WordPress (PHP-FPM), nginx, a permissions helper, and a Node.js container running Gulp + BrowserSync.
Key commands:
npm start # Start the Docker stack
npm run dev # Watch, compile, and live-reload (runs inside the nodejs container)
npm run prod # Production build to ./dist/
npm run lintcss # Run Stylelint
npm run delete # Tear down containers and volumes
npm run rebuild # Full teardown + rebuildBrowserSync runs on port 3010 and nginx on port 8080.
- Create a feature branch from
master(e.g.,feat/my-featureorfix/some-bug) - Keep changes focused - one feature or fix per branch
The project enforces consistent formatting via Prettier and EditorConfig:
- Indentation: Tabs (except YAML files, which use 2 spaces)
- Quotes: Double quotes in JS/JSON
- Semicolons: Always
- Trailing commas: Always
- Line endings: LF
- Max line width: 80 characters
CSS is written as PostCSS (stage 0 features like nesting and custom media) and linted with Stylelint. Run npm run lintcss before submitting CSS changes.
We use Conventional Commits. Format:
type(scope): description
Common types: feat, fix, docs, chore, refactor, test
Examples:
feat(theme): add dark mode support to theme.json
fix(docker): resolve healthcheck race condition
docs(readme): update installation instructions
refactor(installer): replace external deps with native node APIs
src/
assets/
css/ # PostCSS source files
js/ # ES6+ JavaScript
img/ # Images (copied to theme)
fonts/ # Fonts (copied to theme)
theme/
templates/ # Block templates (.html)
parts/ # Template parts (.html)
patterns/ # Block patterns (.php)
functions.php # Theme functions
theme.json # Block theme configuration
plugins/ # WordPress plugins
installer/ # CLI installer (published to npm)
config/ # PHP and nginx configuration
- Make sure your code follows the style guidelines above
- Run
npm run lintcssif you changed any CSS - Test your changes locally with the full Docker stack
- Push your branch and open a pull request against
master - Describe what your PR does and why
Open an issue with:
- A clear description of the problem
- Steps to reproduce
- Expected vs. actual behavior
- Your environment (OS, Docker version, Node version)
By contributing, you agree that your contributions will be licensed under the MIT License.