wheels generate app
This command works correctly without options (parameters). Option support is under development and will be available soon.
Create a new Wheels application from templates.
Synopsis
wheels generate app [name] [template] [directory] [options]
wheels g app [name] [template] [directory] [options]
wheels new [name] [template] [directory] [options]CommandBox Parameter Syntax
This command supports multiple parameter formats:
Positional parameters:
wheels generate app blog(most common)Named parameters:
name=value(e.g.,name=blog,template=HelloWorld)Flag parameters:
--flagequalsflag=true(e.g.,--useBootstrapequalsuseBootstrap=true)
Parameter Mixing Rules:
✅ ALLOWED:
All positional:
wheels generate app blogAll positional + flags:
wheels generate app blog --useBootstrap --initAll named:
name=blog template=HelloWorld --useBootstrap
❌ NOT ALLOWED:
Positional + named:
wheels generate app blog name=myapp(causes error)
Recommendation: Use positional for name/template, flags for options: wheels generate app blog --useBootstrap --init
Description
The wheels generate app command creates a new Wheels application with a complete directory structure, configuration files, and optionally sample code. It supports multiple templates for different starting points.
Arguments
name
Application name
MyApp
template
Template to use
wheels-base-template@BE
directory
Target directory
./{name}
Options
reloadPassword
Set reload password
'' (empty)
datasourceName
Database datasource name
App name
cfmlEngine
CFML engine (lucee/adobe/boxlang)
lucee
--useBootstrap
Include Bootstrap CSS
false
--setupH2
Setup H2 embedded database
true
--init
Initialize as CommandBox package
false
--force
Overwrite existing directory
false
Available Templates
wheels-base-template@BE (Default)
wheels generate app myappBackend Edition template
Complete MVC structure
Sample code and configuration
H2 database setup by default
HelloWorld
wheels generate app myapp HelloWorldSimple "Hello World" example
One controller and view
Great for learning
HelloDynamic
wheels generate app myapp HelloDynamicDynamic content example
Database interaction
Form handling
HelloPages
wheels generate app myapp HelloPagesStatic pages example
Layout system
Navigation structure
Examples
Create basic application
# Positional (recommended)
wheels generate app blog
# OR all named
wheels g app name=blogCreate with custom template
# Positional (recommended)
wheels generate app api HelloDynamic
# OR all named
wheels g app name=api template=HelloDynamicCreate in specific directory
# Positional + named (recommended)
wheels generate app myapp --directory=./projects/
# OR all named
wheels g app name=myapp directory=./projects/Create with Bootstrap
# Positional + flag (recommended)
wheels generate app portfolio --useBootstrap
# OR all named
wheels g app name=portfolio useBootstrap=trueCreate with H2 database (default is true)
# Positional + flag (recommended)
wheels generate app demo --setupH2
# OR all named
wheels g app name=demo setupH2=trueCreate with all options
# Positional + flags (recommended)
wheels generate app enterprise --template=HelloDynamic --directory=./apps/ \
--reloadPassword=secret \
--datasourceName=enterprise_db \
--cfmlEngine=adobe \
--useBootstrap \
--setupH2
# OR all named
wheels g app name=enterprise template=HelloDynamic directory=./apps/ \
reloadPassword=secret \
datasourceName=enterprise_db \
cfmlEngine=adobe \
useBootstrap=true \
setupH2=trueGenerated Structure
myapp/
├── .wheels-cli.json # CLI configuration
├── box.json # Dependencies
├── server.json # Server configuration
├── Application.cfc # Application settings
├── config/
│ ├── app.cfm # App configuration
│ ├── routes.cfm # URL routes
│ └── settings.cfm # Framework settings
├── controllers/
│ └── Main.cfc # Default controller
├── models/
├── views/
│ ├── layout.cfm # Default layout
│ └── main/
│ └── index.cfm # Home page
├── public/
│ ├── stylesheets/
│ ├── javascripts/
│ └── images/
├── tests/
└── wheels/ # Framework filesConfiguration Files
box.json
{
"name": "myapp",
"version": "1.0.0",
"dependencies": {
"wheels": "^2.5.0"
}
}server.json
{
"web": {
"http": {
"port": 3000
}
},
"app": {
"cfengine": "lucee5"
}
}.wheels-cli.json
{
"name": "myapp",
"version": "1.0.0",
"framework": "wheels",
"reload": "wheels"
}Database Setup
With H2 (Embedded)
wheels generate app myappH2 is setup by default (--setupH2=true)
No external database needed
Perfect for development
Auto-configured datasource
To disable:
--setupH2=false
With External Database
Create application:
wheels generate app myapp datasourceName=myapp_db --setupH2=falseConfigure in CommandBox:
server set app.datasources.myapp_db={...}
Post-Generation Steps
Navigate to directory
cd myappInstall dependencies
box installStart server
box server startOpen browser
http://localhost:3000
Template Development
Create custom templates in ~/.commandbox/cfml/modules/wheels-cli/templates/apps/:
mytemplate/
├── config/
├── controllers/
├── models/
├── views/
└── template.jsonBest Practices
Use descriptive application names
Choose appropriate template for project type
Set secure reload password for production
Configure datasource before starting
Run tests after generation
Common Issues
Directory exists: Use
--forceor choose different nameTemplate not found: Check available templates with
wheels infoDatasource errors: Configure database connection
Port conflicts: Change port in
server.json
See Also
wheels init - Initialize existing application
wheels generate app-wizard - Interactive app creation
wheels scaffold - Generate CRUD scaffolding
Last updated
Was this helpful?

