wheels generate app

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]

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

Argument
Description
Default

name

Application name

MyApp

template

Template to use

wheels-base-template@BE

directory

Target directory

./{name}

Options

Option
Description
Default

reloadPassword

Set reload password

'' (empty)

datasourceName

Database datasource name

App name

cfmlEngine

CFML engine (lucee/adobe)

lucee

--useBootstrap

Include Bootstrap CSS

false

--setupH2

Setup H2 embedded database

true

--init

Initialize as CommandBox package

false

--force

Overwrite existing directory

false

--help

Show help information

Available Templates

wheels-base-template@BE (Default)

wheels generate app myapp
  • Backend Edition template

  • Complete MVC structure

  • Sample code and configuration

  • H2 database setup by default

HelloWorld

wheels generate app myapp HelloWorld
  • Simple "Hello World" example

  • One controller and view

  • Great for learning

HelloDynamic

wheels generate app myapp HelloDynamic
  • Dynamic content example

  • Database interaction

  • Form handling

HelloPages

wheels generate app myapp HelloPages
  • Static pages example

  • Layout system

  • Navigation structure

Examples

Create basic application

wheels generate app blog

Create with custom template

wheels generate app api Base@BE

Create in specific directory

wheels generate app name=myapp directory=./projects/

Create with Bootstrap

wheels generate app portfolio --useBootstrap

Create with H2 database (default is true)

wheels generate app demo --setupH2

Create with all options

wheels generate app name=enterprise template=HelloDynamic directory=./apps/ \
  reloadPassword=secret \
  datasourceName=enterprise_db \
  cfmlEngine=adobe \
  --useBootstrap \
  --setupH2

Generated 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 files

Configuration Files

box.json

{
  "name": "myapp",
  "version": "1.0.0",
  "dependencies": {
    "wheels": "^2.5.0"
  }
}

server.json

{
  "web": {
    "http": {
      "port": 3000
    }
  },
  "app": {
    "cfengine": "lucee@5"
  }
}

.wheels-cli.json

{
  "name": "myapp",
  "version": "1.0.0",
  "framework": "wheels",
  "reload": "wheels"
}

Database Setup

With H2 (Embedded)

wheels generate app myapp
  • H2 is setup by default (--setupH2=true)

  • No external database needed

  • Perfect for development

  • Auto-configured datasource

  • To disable: --setupH2=false

With External Database

  1. Create application:

    wheels generate app myapp datasourceName=myapp_db --setupH2=false
  2. Configure in CommandBox:

    server set app.datasources.myapp_db={...}

Post-Generation Steps

  1. Navigate to directory

    cd myapp
  2. Install dependencies

    box install
  3. Start server

    box server start
  4. Open browser

    http://localhost:3000

Template Development

Create custom templates in ~/.commandbox/cfml/modules/wheels-cli/templates/apps/:

mytemplate/
├── config/
├── controllers/
├── models/
├── views/
└── template.json

Best Practices

  1. Use descriptive application names

  2. Choose appropriate template for project type

  3. Set secure reload password for production

  4. Configure datasource before starting

  5. Run tests after generation

Common Issues

  • Directory exists: Use --force or choose different name

  • Template not found: Check available templates with wheels info

  • Datasource errors: Configure database connection

  • Port conflicts: Change port in server.json

See Also

Last updated

Was this helpful?