A warm welcome and a huge thank you for considering contributing to Wheels! It's the people in our community who make this framework what it is. Whether you're fixing a bug, adding a feature, improving documentation, or helping in discussions, your effort matters.
These guidelines are here to make the contribution process clear, smooth, and respectful for everyone. They also let you know what you can expect from the maintainers in return — timely responses, thoughtful reviews, and support to help you get your changes merged.
We value an open, welcoming, and respectful community. By participating in Wheels projects, you agree to follow our Code of Conduct. This applies to all community spaces, including GitHub, forums, and events.
Wheels 3.0 is now maintained in a monorepo at wheels-dev/wheels. This single repository contains the framework core, CLI, documentation, and examples, making it easier for contributors to work across the project.
We welcome contributions via Issues and Pull Requests (PRs). Before you start:
- If it's a security issue, please use our Responsible Disclosure Program — do not post it publicly.
- Search existing Issues and PRs to avoid duplicates.
- If your issue is urgent or blocking, you can leave a polite comment pinging the maintainers.
- If you're new to contributing, check out the Contributing to Wheels Guide for tips and examples.
System Requirements:
- Adobe ColdFusion 2018/2021/2023/2025 OR Lucee 5/6/7
- Supported database: H2, Microsoft SQL Server, PostgreSQL, MySQL, Oracle, SQLite
- Git for version control
Initial Setup: In general, we follow the "fork-and-pull" Git workflow
- Fork the wheels-dev/wheels repository to your own Github account
- Clone the project to your machine
- Create a branch locally with a succinct but descriptive name
- Commit changes to the branch
- Following the formatting and testing guidelines
- Push changes to your fork
- Open a PR in the wheels-dev/wheels repository and follow the PR template so that we can efficiently review the changes.
Use Issues to:
- Report bugs (include CFML engine version, database type/version, and HTTP server details)
- Request features
- Discuss potential changes before starting a PR
Good First Issues: Look for issues labeled good-first-issue or help-wanted if you're new to the codebase.
If you find an existing Issue that matches your problem:
- Add any extra details or reproduction steps
- Add a reaction to show it affects others, this helps maintainers prioritize
We welcome PRs of all sizes — from typo fixes to major features. To make reviews smooth:
Branch Naming Conventions:
fix/issue-number-short-description(e.g.,fix/1234-oracle-orm-bug)feature/short-description(e.g.,feature/improved-error-handling)docs/short-description(e.g.,docs/update-installation-guide)
PR Guidelines:
- Keep your PR focused on one thing. If you're fixing a bug, don't also reformat unrelated files.
- Add unit or integration tests when changing functionality.
- Include relevant documentation updates under
/docsif needed. - Follow the repo's formatting guidelines (see
.cfformat.jsonand.editorconfig). - Write clear, descriptive commit messages.
Code Style:
- Follow the project's
.cfformat.jsonconfiguration - Respect the
.editorconfigsettings for consistent formatting - Use meaningful variable and function names
- Add comments for complex logic
Definition of Done:
A feature or enhancement is not complete until all of the following are satisfied:
- Tests -- Unit tests covering happy path, edge cases, and error conditions in
vendor/wheels/tests/specs/ - Framework Docs -- New or updated page in
docs/src/with a corresponding entry indocs/src/SUMMARY.md - AI Reference Docs -- New or updated file in
.ai/wheels/so AI assistants have accurate context - CLAUDE.md -- Updated if the feature changes model, controller, or view conventions
- CHANGELOG.md -- Entry under the
[Unreleased]section - Test runner passes -- All existing tests still pass (
/wheels/app/tests?format=json)
Bug-fix PRs require tests and a CHANGELOG entry at minimum. Documentation-only PRs are exempt from the test requirement.
If you're making a breaking change or working on core functionality, it's best to open an Issue first to discuss the approach.
Fork-and-Pull Workflow:
- Fork the repo to your GitHub account
- Clone it locally
- Create a descriptive branch name
- Make your changes
- Run tests and check formatting
- Push to your fork
- Open a PR to
wheels-dev/wheelsand follow the PR template
Review Process:
- Expect initial feedback within 3-5 business days
- Be prepared to make revisions based on maintainer feedback
- PRs require approval from at least one maintainer before merging
Running Tests:
- Ensure all debugging is turned OFF in your CFML engine
- Navigate to the Wheels Welcome Page in your browser
- In the navigation bar, click "Tests > Run Core Tests"
Test Database Requirements:
- Supported engines: H2, Microsoft SQL Server, PostgreSQL, MySQL, Oracle, SQLite
Writing Tests:
- Use TestBox for new test cases
- Place tests in the appropriate
/testsdirectory - Follow existing test patterns and naming conventions
- Include both positive and negative test cases
You can develop and test Wheels locally on multiple CFML engines using Docker. Follow the Docker Instructions to get set up quickly.
Understanding the monorepo structure will help you navigate contributions:
Key Directories:
/cli/— Wheels CLI tool/core/— Framework core code (main contribution area)/docs/— API documentation and guides/examples/— Sample applications/templates/— Scaffolding templates for new apps/tests/— TestBox test suites/tools/— Build scripts, Docker configs, utilities
Important Files:
.cfformat.json— Code formatting rules.editorconfig— Editor configurationCONTRIBUTING.md— This documentCHANGELOG.md— Release history
Dependencies: Wheels 3.0 includes these core dependencies (automatically managed):
- WireBox — Dependency injection and object management
- TestBox — Testing framework
Database Support:
- SQLite (new in 3.0)
- Oracle (new in 3.0)
- Microsoft SQL Server
- PostgreSQL
- MySQL
- H2
CFML Engine Compatibility:
- Adobe ColdFusion 2018+ (2018,2021,2023,2025)
- Lucee 5+ (5,6,7)
- ❌ Adobe ColdFusion 2016 (deprecated)
Need assistance? Here are your options:
- Community Discussion: Wheels GitHub Discussions
- Documentation: wheels.dev
- Issue Tracker: GitHub Issues
When asking for help:
- Use clear, descriptive titles
- Include your CFML engine and version
- Provide code examples or error messages
- Mention what you've already tried
💡 New to Wheels 3.0? The framework now uses a monorepo architecture with WireBox and TestBox as core dependencies. The directory structure has been modernized with /app, /public, and /vendor directories. Take time to explore these changes.
Thank you for contributing to Wheels!