Wheels-The Fast &
Fun
CFML Framework!
Build apps quickly with an
organized, Ruby on
Rails-inspired
structure.
Get up and
running in no time!
Automatic Documentation
Use our built in doc viewer which grows with your application with only minor markup required
Full Documentation
Lots of lovely documentation available with tutorials and a complete API reference
Latest From the Wheels Dev Blog
Wheels VS Code Extension: Supercharge Your Wheels Development
Wheels CLI: Modern Commands for Faster, Smarter Wheels 3.0 Development
wheels.dev Goes Public: A Production Wheels 3.0 Application You Can Actually Study
Behind the Scenes: How a Single Commit Becomes a Running Application Across 40+ Configurations
Wheels CLI: The Hidden Productivity Booster for Wheels Developers
Many developers either don’t use the CLI often or don’t fully explore its capabilities. That’s a missed opportunity — because the CLI is one of the biggest workflow accelerators in the Wheels ecosystem.
This article focuses on the classic Wheels CLI commands — the ones that have been around for a long time and are still fully functional in Wheels 3.0. While Wheels 3.0 introduces new tooling and improvements (which we’ll cover in the next article), these commands remain reliable and widely used.
They are powerful for: * Bootstrapping projects * Scaffolding entities * Managing database migrations * Generating code * Handling plugins * Speeding up daily development tasks If you’re maintaining existing projects or want to master the foundations first, these commands are essential.
# What is Wheels CLI? Wheels CLI is a command-line toolkit that automates repetitive tasks in Wheels applications. Instead of manually creating files, writing boilerplate code, or managing database changes, you can do it in seconds using simple commands. It promotes convention, structure, and repeatability across projects.
Benefits: * Less manual work * Fewer mistakes * Consistent structure * Faster onboarding for new developers * Rapid prototyping # Quick Start Guide You can get started with Wheels CLI in just a few minutes. Prerequisites: * CommandBox 5.0+ * Java 17+ * Database (MySQL, PostgreSQL, SQL Server, Oracle, SQLite, or H2) # Installation Wheels CLI runs on CommandBox, so you need CommandBox installed first. CommandBox is a CLI tool for CFML that helps you manage: * Servers * Packages * Dependencies * Frameworks like Wheels. You can follow the official [quick start guide](https://wheels.dev/guides/command-line-tools/quick-start). This guide shows how to install CommandBox and set up the Wheels CLI. Once CommandBox is installed, you can use Wheels CLI commands inside your project directory.
# Classic Wheels CLI Commands (Still Working in Wheels 3.0) These commands form the backbone of many Wheels workflows and remain supported in Wheels 3.0. # 1. Wheels Init `wheels init`
Bootstrap an existing Wheels application for CLI usage. The wheels init command initializes an existing Wheels application to work with the Wheels CLI. It's an interactive command that helps set up necessary configuration files (box.json and server.json) for an existing Wheels installation.
Great for: * Starting fresh projects * Standardizing setups across teams # 2. Wheels Info `wheels info`
The wheels info command displays information about the Wheels CLI module and identifies the Wheels framework version in the current directory.
Helpful for: * Debugging * Checking versions * Environment awareness # 3. Wheels Reload `wheels reload`
The wheels reload command reloads your Wheels application, clearing caches and reinitializing the framework. This is useful during development when you've made changes to configuration, routes, or framework settings. Note: the server must be running for this command to work.
Useful when: * Updating configs * Testing changes quickly * Developing actively # 4. Wheels Deps `wheels deps`
The wheels deps command provides a streamlined interface for managing your Wheels application's dependencies through box.json. It integrates with CommandBox's package management system while providing Wheels-specific conveniences. It manages application dependencies using box.jsons.
# 5. Wheels Destroy The wheels destroy command removes all files and code associated with a resource that was previously generated. It's useful for cleaning up mistakes or removing features completely. This command will also drop the associated database table and remove resource routes.
Example:
`wheels destroy model User`
Useful when: * Refactoring * Cleaning prototypes * Undoing mistakes # 6. Wheels Generate This is where the magic happens. The Wheels generate command is a productivity-focused code generator that creates common application components following Wheels conventions.
It helps you scaffold structured, ready-to-use code so you don’t have to write repetitive boilerplate manually. Everything it generates aligns with Wheels’ MVC patterns and naming conventions. This makes your codebase consistent and easier to maintain, especially in team environments.
It works by creating files and wiring up basic functionality automatically, allowing developers to focus on business logic instead of setup.
**Generators:** * app-wizard * app * controller * model * property * route * scaffold * code * snippets * test * view Example
`wheels generate scaffold post title:string body:text`
This generates: * Model * Controller * Views * Routes * CRUD setup Huge time saved!
# 7. Wheels DBMigrate The wheels dbmigrate command provides a structured way to manage database schema changes using migrations. Instead of manually editing databases, you define changes in migration files that can be version-controlled, shared with teams, and safely executed across environments. It brings modern migration workflows (similar to Rails or Laravel) into Wheels development. Each migration has an up and down path, allowing safe rollbacks when needed.
**Commands:** * wheels dbmigrate up * wheels dbmigrate down * wheels dbmigrate reset * wheels dbmigrate latest * wheels dbmigrate info * wheels dbmigrate exec * wheels dbmigrate create blank * wheels dbmigrate create table * wheels dbmigrate create column * wheels dbmigrate remove table **Why It’s Useful**
* Version-controlled DB schema * Safe rollbacks * Team collaboration friendly * Easier deployments **Example**
`Wheels dbmigrate create table users`
`Wheels dbmigrate up`
Boom — your table is created and tracked.
# 8. Wheels Plugins List `wheels plugins list` The plugins list command displays information about Wheels plugins. By default, it shows plugins installed locally in the /plugins folder. With the --available flag, it queries ForgeBox to show all available cfwheels-plugins packages.
**Encourages:**
* Reusability * Modular development * Faster feature addition # Important Note on Wheels 3.0 All commands covered in this article are classic commands that continue to work in Wheels 3.0. They are stable, trusted, and widely used in real-world projects. Many production applications still rely on them daily.
However, Wheels 3.0 also introduces new CLI capabilities and improvements designed for modern workflows.
In the next article, we’ll explore the new and enhanced CLI commands introduced in Wheels 3.0, how they differ, and when to use them.
# Conclusion The Wheels CLI is not just a convenience — it's a productivity multiplier.
Developers who adopt CLI-driven workflows: * Ship faster * Maintain cleaner projects * Reduce repetitive tasks * Focus more on business logic Mastering these classic commands gives you a strong foundation before moving on to the newer 3.0 features.
Request Lifecycle in Wheels 3.0: Clearer Execution Order
# **What Changed in Wheels 3.0** Wheels 3.0 formalizes the request lifecycle into well-defined phases. At a high level, each request now follows a clearer path: 1. Environment detection 2. Configuration loading 3. Framework initialization 4. Routing resolution 5. Controller execution 6. Rendering 7. Final response handling Each phase has a clear purpose and predictable timing. This structure removes ambiguity and reduces reliance on internal side effects.
# **Why Execution Order Matters** **Safer Customization** When developers hook into lifecycle events, they need to know: * Which data is available * Which systems are initialized * What is safe to modify With clearer execution phases, lifecycle hooks become reliable extension points rather than trial-and-error experiments.
**Fewer Cross-Engine Differences** Subtle execution timing differences between: * Adobe ColdFusion * Lucee * BoxLang can cause real-world bugs. By enforcing a more explicit lifecycle, Wheels 3.0 minimizes engine-specific behavior and ensures consistency across runtimes.
**Predictable Rendering Behavior** Rendering is now more clearly separated from: * request setup * configuration resolution * debug output This makes it easier to: * inject assets * modify layouts * customize view behavior * understand when output is finalized # **Debugging Becomes Easier** With a predictable lifecycle: * Breakpoints make more sense * Logging is more meaningful * Issues can be reproduced consistently Developers no longer need to guess why something worked in one environment but not another.
# **Impact on Existing Applications** Most applications will continue to work as expected, but Wheels 3.0 may expose: * reliance on undocumented timing * assumptions about when config values are available * logic placed in lifecycle hooks that ran “by accident” in 2.5 While this may require small adjustments, it leads to more intentional and robust code.
# **Summary** Wheels 3.0’s lifecycle clarity is not about adding new hooks or complexity — it’s about **making existing behavior reliable and understandable**. By defining clearer execution phases, Wheels 3.0 delivers: * More predictable behavior * Safer customization * Easier debugging * Better cross-engine consistency This improvement quietly underpins many of the other changes in Wheels 3.0 and sets the stage for more advanced features.
Cleaner Configuration in Wheels 3.0: Less Magic, More Clarity
Wheels 3.0 introduces a cleaner, more predictable configuration system that favors explicit behavior over hidden defaults. In this article, we’ll cover: * How configuration worked in Wheels 2.5 * What changed in Wheels 3.0 * Why reducing “magic” matters * How this improves day-to-day development
# **Configuration in Wheels 2.5** In Wheels 2.5, configuration values could come from multiple places: * Framework defaults * Application configuration files * Environment-specific overrides * Implicit assumptions inside the framework While powerful, this approach had drawbacks: * It wasn’t always clear which value won * Some defaults were silently applied * Debugging config-related issues required deep framework knowledge * Behavior could vary between engines and environments In many cases, developers only discovered configuration issues **after something behaved unexpectedly**.
# **What Changed in Wheels 3.0** Wheels 3.0 simplifies and clarifies configuration loading by focusing on **explicit intent**. Key improvements include: * Clearer separation between framework defaults and application settings * More predictable load order * Fewer implicit fallbacks * Removal of legacy configuration paths * Consistent behavior across Adobe ColdFusion, Lucee, and BoxLang The goal is simple: **when you set a configuration value, it should be obvious when and how it’s used**.
# **Less Magic, More Intent** One of the guiding principles of Wheels 3.0 is reducing hidden behavior. In practice, this means: * Fewer “silent defaults” that change behavior behind the scenes * Configuration files that do what they say — and only that * Easier reasoning about application state Developers should not need to read framework source code to understand how configuration affects their app.
# **A More Logical Configuration Layout** In Wheels 3.0, configuration lives where you expect it to:
``` config/ app.cfm environment.cfm routes.cfm settings.cfm ``` Each file has a clear responsibility: * app.cfm — datasource and application-wide variables * environment.cfm — environment-specific overrides * routes.cfm — routing definitions * settings.cfm — application-wide settings This structure encourages separation of concerns and makes it easier to locate and modify behavior.
# **Environment Configuration Without Surprises** Environment handling in Wheels 3.0 is more predictable: * Environments are resolved earlier in the request lifecycle * Overrides happen in a clear, documented order * Defaults are safer for production environments This reduces cases where: * A setting works locally but not in production * An environment variable behaves differently across engines * Configuration values change based on execution timing
# **Why This Matters in Real Applications** Cleaner configuration directly improves: * Debugging time * Onboarding new developers * CI/CD reliability * Cross-engine compatibility When configuration behaves predictably, developers can focus on **business logic**, not framework internals.
# **Migrating from Wheels 2.5** Most applications will require minimal changes, but during migration you should: * Review existing configuration overrides * Remove reliance on undocumented defaults * Verify environment-specific behavior explicitly While this may surface hidden assumptions, the end result is a more stable and understandable application.
# **Summary** Wheels 3.0’s configuration improvements are not flashy — but they are foundational. By reducing hidden behavior and clarifying how configuration is loaded and applied, Wheels 3.0 offers: * More predictable applications * Easier debugging * Safer defaults * Better long-term maintainability This is part of a broader theme in Wheels 3.0: making the framework easier to reason about, one small improvement at a time.
Wheels 3.0 Request Handling: The Move to public/index.cfm
In Wheels 3.0, all web requests now flow through a single entry point: **public/index.cfm**
This article explains: * How request handling worked in Wheels 2.5 * What changed in Wheels 3.0 * Why this change was necessary * How it improves security and predictability * What this means for your applications going forward # **How Request Entry Worked in Wheels 2.5** In Wheels 2.5, request handling relied on multiple files at the application root, most notably: * root.cfm * rewrite.cfm * .htaccess (or web server rewrites) Depending on your server configuration and rewrite rules, requests could pass through different files before reaching the framework. While this worked, it introduced several issues: * Multiple “entry points” into the application * Harder-to-reason-about execution flow * Increased risk of exposing internal files * Confusion for new developers * Differences in behavior across servers and environments In short, **the request lifecycle was implicit**, not obvious.
# **What Changed in Wheels 3.0** Wheels 3.0 introduces a single, **explicit request entry point**: `/public/index.cfm`. All HTTP requests are now routed through this file. Key changes: * `index.cfm` lives inside the public directory * Only the public directory is meant to be web-accessible * Internal application files are no longer directly reachable * Routing begins in one predictable place, every time This aligns Wheels with modern framework conventions and removes ambiguity from request handling.
# **Why This Change Matters** **One Entry Point = Predictability** With a single entry file: * Every request starts the same way * Debugging becomes easier * Middleware, routing, and lifecycle hooks behave consistently There is no longer a need to mentally trace whether a request went through `root.cfm`, `rewrite.cfm`, or both.
# **Improved Security by Default** By serving only the **public directory**: * Internal files (`app/`, `config/`, `vendor/`) are never exposed * Accidental access to framework internals is eliminated * Safer defaults for production environments This is a major improvement over Wheels 2.5, where misconfigured servers could expose sensitive files.
# **Clear Separation Between Web and Application Code** In Wheels 3.0: * public/ contains only what the web server should serve * Application logic lives elsewhere * The framework controls the request lifecycle from the moment it enters the app This separation is intentional and foundational to the 3.0 architecture.
# **Better Alignment with Modern Frameworks** Frameworks like Rails, Laravel, Django, and Phoenix all use a single front controller pattern. Wheels 3.0 adopts this same approach, making the framework: * Easier to understand for developers coming from other ecosystems * Easier to deploy on modern hosting platforms * Easier to reason about in CI/CD pipelines # **What Happens Inside public/index.cfm** The index.cfm file acts as the front controller. Its responsibilities include: * Bootstrapping the application * Loading configuration * Initializing the framework * Dispatching the request to the appropriate controller/action * Ensuring consistent lifecycle execution While you generally won’t need to modify this file, its presence provides a **clear and intentional starting point** for every request.
# **Deployment Implications** To use Wheels 3.0 correctly, your web server should be configured so that the document root points to: `/public`. All requests are routed through `index.cfm`. This applies whether you’re using: * CommandBox * Apache * Nginx * IIS * Docker-based deployments Once configured, Wheels handles routing internally — no additional rewrite files are required inside the application root.
# **Migrating from Wheels 2.5** When upgrading: * Remove reliance on root.cfm and `rewrite.cfm` * Update your web server’s document root to `public/` * Verify that no application files outside `public/` are directly accessible Most applications will benefit immediately from: * Cleaner URLs * Safer defaults * Fewer environment-specific edge cases # **Summary** The move to `public/index.cfm` in Wheels 3.0 may seem small, but it sets the foundation for: * Predictable request handling * Stronger security * Cleaner application structure * Easier debugging * Modern deployment workflows This change reflects a broader theme in Wheels 3.0: making the framework **explicit, intentional, and easier to reason about** — starting from the very first line of code that runs.
Wheels 3.0 Project Structure: What Changed and Why It Matters
Introducing Wheels 3.0: A New Era for CFML Development
Welcome to Our Community
Welcome to Our Community - a place where like-minded people connect, share ideas,
and grow
together in a positive and supportive environment.
This website uses essential cookies to improve your experience. By continuing to use the site, you consent to the use of cookies.
Top Contributors
Per Djurner
Contributed as a Software Developer
Per Djurner is a long-time core contributor and leader of the Wheels framework, with a history of shaping its direction since the project’s early days. He made the very first commit and has continued to contribute regularly, fixing important bugs, refining SQL handling, and enhancing model methods with more flexible options. In addition to code, he has improved documentation, templates, and overall project stability, ensuring Wheels remains reliable and developer-friendly. His work reflects both technical expertise and long-term commitment to the growth of the framework.
Peter Amiri
Contributed as a Software Developer and Project Manager
Peter Amiri is a senior developer and community leader who has taken on a core team / maintainer role in the Wheels framework. He has decades of experience with ColdFusion (since version 1.5), including work in user-groups, large scale sites, and infrastructure. Since returning to the project, he’s helped revitalize it — organizing roadmap discussions, guiding structure changes, supervising modernization (including CLI improvements, package modularization, and updating workflows), and helping re-energize community contributions.
Zain Ul Abideen
Contributed as a Software Developer
Zain Ul Abideen is an active contributor to the Wheels framework, playing a key role in improving its stability and usability. His work includes fixing issues like invalid columns not throwing exceptions, ensuring primary keys return correctly as numeric, and refining logic around calculated properties. He also enhanced view helpers to better handle active states and improved default routing behavior. Through these contributions, Zain has strengthened both the framework’s reliability and developer experience.
Anthony Petruzzi
Contributed as a Software Developer
Anthony Petruzzi has made valuable contributions to the Wheels through code improvements, bug fixes, and collaborative reviews. They’ve helped refine core components, enhanced framework stability, and actively participated in issue discussions to steer design decisions. Their efforts in writing clear, maintainable code and offering constructive feedback in pull requests have strengthened the project’s code quality. Overall, Anthony Petruzzi involvement showcases dedication to open-source collaboration and meaningful impact on the Wheels ecosystem.
Tom King
Contributed as a Software Developer and Maintainer
Tom King is one of the core maintainers of Wheels, with deep involvement in both development and leadership. He oversaw major releases, such as Wheels 2.0, which introduced features like RESTful routing, database migrations, improved CLI support, and a rewritten core in CFScript. He also helps steer the project’s long-term direction — writing blog posts reflecting on its history (e.g. noting its first commits, celebrating milestones) and working to modernize both tooling and community engagement.
Adam Chapman
Contributed as a Software Developer
Adam Chapman has been a dedicated and influential contributor to the Wheels ecosystem. He joined the core team after years of community support, helping to steer architectural evolution and plugin integrations. Beyond code, he’s actively engaged in issue triage, proposing enhancements and shaping long-term design direction. His commitment to both community discussion and technical contributions has strengthened the project’s cohesion and future readiness.
James
Contributed as a Software Developer
James has brought forward meaningful contributions to the Wheels through consistent code enhancements, test case development, and active engagement in issue resolution. He frequently submits detailed pull requests, helping to bolster the framework’s robustness and maintainability. Beyond code, James participates in discussion threads and reviews, offering thoughtful feedback which helps keep the project aligned with community needs. His steady involvement has strengthened both core modules and auxiliary features, making Wheels more reliable and polished for all users.
Andrew Bellenie
Contributed as a Software Developer and Maintainer
Andrew Bellenie has played a pivotal role in the Wheels ecosystem, as a long-standing core team member and active community contributor. He brings deep experience in CFML development and framework architecture. Andy has contributed code, design feedback, documentation, and mentorship to newcomers. He also helps triage issues, guide feature direction, and maintain the project’s stability. His dedication helps keep the framework evolving and its community engaged.
scahyono
Contributed as a Software Developer
scahyono has contributed thoughtful enhancements to the Wheels codebase, particularly in ensuring compatibility with Oracle setups. Notably, they worked on a module (or plugin) to allow ColdFusion on Wheels to correctly read table metadata across Oracle remote database links, which broadens database support and resilience. Their willingness to tackle specialized integration challenges strengthens the framework’s versatility and helps more users adopt Wheels in diverse environments.
MvdO79
Contributed as a Software Developer
MvdO79 has shown his support for the Wheels not only through code but also as a financial backer. He contributes monthly via Open Collective, helping sustain the framework’s ongoing development. Beyond funding, his presence in issue discussions demonstrates engagement with bug tracking and community feedback. His dual role-as supporter and participant-reinforces the open-source spirit behind Wheels.
Raul Riera
Contributed as a Software Developer
Raúl Riera has been an enthusiastic supporter and contributor to the Wheels community-beyond writing code, he’s helped through design, advocacy, and community engagement. He has designed swag such as T-shirts for Wheels events and promoted the framework through his dev shop, Hipervínculo. As a software entrepreneur (founder of Odonto.me) and developer, Raúl bridges technical and community roles, helping raise awareness of Wheels and adding a touch of creativity and outreach to the project’s ecosystem.
Michael Diederich
Contributed as a Software Developer
Michael Diederich has contributed key fixes and enhancements to the Wheels, particularly around framework usability and interface issues. Notably, he addressed documentation and UI elements-changes such as showing the current Git branch in the debug layout in version 2.5.0 reflect his involvement. In earlier releases, he also fixed bugs (for example with form and URL handling in the startFormTag() and array routing) that improved reliability across use cases. His contributions help refine both developer-facing tools and core correctness.
Rob Cameron
Contributed as a Software Developer
Rob Cameron had the original idea for CFWheels (and by extension, the foundation for Wheels), having built the framework with inspiration from Ruby on Rails in 2005. Though he eventually moved on from active core development to focus on other projects (such as Rails work), his early design and architectural direction still underpin much of the project's structure and philosophy.
Chris Peters
Contributed as a Software Developer
Chris Peters has been foundational in the development, documentation, and promotion of the Wheels framework since its early days. He authored many of the earliest releases, oversaw version 1.3.0 that introduced HTML5 enhancements, table less models, and thread-safe startup, and managed releases like 1.0.5 with dozens of bug fixes and stability updates. He also wrote technical blog posts about core features (flash messages, asset query strings, error handling) and established guidelines for contributing and documentation, helping to build a strong community around the framework.
David Paul Belanger
Contributed as a Software Developer
David Paul Belanger has been a core force behind the Wheels, contributing both technically and strategically across many versions. He has co-authored features and bug fixes (such as updates to sendFile() and usesLayout()) in the 2.x releases. Beyond code, David has helped lead the transition of the framework’s governance and been active in community outreach-having participated in CF-Alive podcasts and collaborated with Tom King and others on guiding the project’s future direction.
John Bampton
Contributed as a Software Developer and Documentation Writer
John Bampton made his mark as a contributor to the Wheels project beginning with version 2.4.0, where he helped fix broken links in documentation and correct spelling errors in the README and core templates. His attention to detail improved the documentation clarity and usability for future developers. Though he is noted as a “new contributor,” his work helped plug small but important gaps in the project’s written material, aiding the framework’s polish and accessibility.
Simon
Contributed as a Software Developer
Simon contributed to the Wheels framework by refining code and improving framework functionality. His work helped address issues and enhance stability, making the project more reliable and easier for developers to use. These contributions support the continued growth and effectiveness of the Wheels ecosystem.
Brian Ramsey
Contributed as a Software Developer and Quality Assurance Engineer
Brian Ramsey has been a long-time contributor and advocate within the Wheels community. His work spans both code contributions and knowledge sharing, with a focus on improving framework usability for everyday developers. Brian has participated in bug resolution, tested new releases, and provided feedback that shaped core improvements. Beyond code, he’s been active in community discussions, answering questions, and guiding newer users. His steady involvement has helped ensure Wheels remains both developer-friendly and reliable, reflecting his commitment to open-source collaboration and practical problem solving.
Danny Beard
Contributed as a Software Developer
Danny Beard has contributed to the Wheels framework through targeted code enhancements and thoughtful participation in issue discussions. His work has included fixing bugs, refining logic in core functions, and improving overall framework consistency. Danny’s involvement reflects an eye for detail and a practical approach to problem-solving, ensuring the framework remains dependable in real-world applications. Beyond code, his willingness to collaborate with other contributors has reinforced the community-driven nature of Wheels, helping maintain a strong and sustainable open-source project.
Reuben Brown
Contributed as a Software Developer
Reuben Brown has been a valuable contributor to the Wheels framework, offering code improvements and community input that strengthen the project’s overall quality. His work includes bug fixes and refinements that enhance stability and usability, ensuring developers can rely on Wheels in production environments. Reuben’s involvement extends beyond code, as he has taken part in discussions, reviewed issues, and provided practical feedback to guide development. His contributions reflect a thoughtful balance of technical skill and collaborative spirit, reinforcing the open-source ethos of the Wheels project.
Seb
Contributed as a Software Developer
Seb has provided important contributions to the Wheels that help improve framework robustness and usability. Through resolving issues, submitting pull requests, and polishing code, Seb has helped close gaps and make the system smoother for both new and experienced users. They’ve also participated in reviews, giving constructive feedback, which strengthens code quality and consistency across releases. Seb’s steady involvement supports the project’s open-source mission, making Wheels more reliable, maintainable, and welcoming for all contributors.
timbadolato
Contributed as a Software Developer
Timbadolato has contributed to the Wheels with a focus on improving functionality, fixing issues, and enhancing developer experience. His pull requests demonstrate a clear attention to detail, addressing edge cases and refining framework behavior to make it more predictable and reliable. By engaging in code reviews and community discussions, timbadolato has helped shape technical decisions and ensured smoother adoption for users. His contributions highlight a practical, solution-oriented approach that supports both the long-term stability and growth of the Wheels ecosystem.
Alex
Contributed as a Software Developer
Alex has played a supportive and constructive role in the Wheels, contributing code improvements and feedback that strengthen the framework’s overall reliability. His efforts include bug fixes, refinements to core features, and helpful participation in discussions that guide project direction. By addressing issues and proposing practical solutions, Alex has contributed to making Wheels easier to use and more stable for developers. His involvement reflects a collaborative spirit and reinforces the open-source values that keep the project moving forward.
Chris Geirman
Contributed as a Software Developer
Chris Geirman made contributions to the Wheels that helped refine parts of the codebase and improve developer experience. While his involvement was smaller in scope, his participation still added value to the framework and reflects the spirit of open-source collaboration.
Zac Spitzer
Contributed as a Software Developer
Zac Spitzer provided contributions to the Wheels that helped address specific issues and improve framework stability. Though his involvement was brief, his work added value to the codebase and demonstrated the importance of community participation in strengthening and maintaining open-source projects.
Nikolaj Frey
Contributed as a Software Developer
Nikolaj Frey has made contributions to the Wheels framework that supported improvements in the project’s codebase and functionality. While his involvement was limited in scope, his participation still added meaningful value, reinforcing the collaborative nature of the open-source community that drives Wheels forward.
Gralen
Contributed as a Software Developer
Gralen contributed improvements to the Wheels framework that enhanced code quality and supported overall stability. Their work helped refine the project and contributed to making the framework more reliable for developers using it in real-world applications.
Doug McCaughan
Contributed as a Software Developer
Doug McCaughan contributed to the Wheels framework by helping refine functionality and addressing issues that improved developer experience. His efforts supported the stability of the project and ensured smoother use of core features. Through his work, Doug added value to the framework’s ongoing development and its open-source community.
Coleman Sperando
Contributed as a Software Developer
Coleman Sperando contributed to the Wheels framework by making improvements that strengthened its functionality and reliability. His work addressed specific areas of the codebase, helping to refine features and ensure a smoother experience for developers. These contributions supported the project’s ongoing growth and the collaborative effort behind Wheels.
Charlie Arehart
Contributed as a Software Developer
Charlie Arehart has supported the Wheels framework through his deep expertise in ColdFusion and the broader CFML ecosystem. He has provided valuable feedback, shared knowledge with the community, and highlighted best practices that strengthen adoption and reliability. His involvement helps connect Wheels development with the wider ColdFusion community, ensuring the framework remains relevant and accessible to developers.
Charley Contreras
Contributed as a Software Developer
Charley Contreras contributed to the Wheels framework by helping refine parts of the codebase and supporting improvements that enhance usability. His work added value to the project’s overall stability and reflects the collaborative effort of developers working together to keep the framework evolving and reliable.
Brant Nielsen
Contributed as a Software Developer
Brant Nielsen contributed to the Wheels framework by improving functionality and addressing issues that supported better performance and reliability. His work helped refine the codebase and enhance the developer experience, reinforcing the project’s commitment to building a stable and effective open-source framework.
Ben Nadel
Contributed as a Software Developer
Ben Nadel is a veteran ColdFusion developer known for deep technical thought leadership and contributions to the community, including work around Wheels and related topics. He writes regularly about extending and customizing parts of Wheels (for example, customizing the router/proxy component behavior to suit specific workflow preferences). He also shares experiments and educational posts (e.g. integrating HTMX in ColdFusion apps) that help other developers understand modern patterns in CFML. While he may not always be contributing direct core framework commits, his influence shows up in how people use and adapt Wheels in real-world apps, and in sharing best practices, tutorials, and ideas that help shape how the framework is viewed and utilized.
Andrei B.
Contributed as a Software Developer
Andrei B. contributed to the Wheels framework by helping refine code and improve functionality in targeted areas of the project. His efforts supported greater stability and usability, making the framework more dependable for developers. These contributions reflect the collaborative spirit that drives the ongoing success of Wheels.
Adam Larsen
Contributed as a Software Developer
Adam Larsen contributed to the Wheels framework by improving functionality and addressing issues that enhanced the stability and reliability of the codebase. His work helped refine features and ensure a smoother experience for developers, supporting the ongoing growth and maintenance of the project.
Claude
Contributed as a Software Developer
github-actions[bot]
Contributed as a Software Developer
Share Your Experience!
We'd love to hear about your experience! Would you take a moment to share a testimonial?