fix(build): make wheels-starter-app installable and bootable from ForgeBox - #3199
Merged
Conversation
…geBox
The published ForgeBox starter app was unusable end-to-end:
(a) `box install wheels-starter-app` FAILED. box.json declared a dependency
on slug "wheels-authenticateThis" which does not exist on ForgeBox
("entry slug invalid or does not exist"), aborting the whole install.
The authenticateThis() mechanism the app uses is the plugin already
vendored under plugins/authenticateThis/ — the ForgeBox dependency was
redundant. Drop the bogus dependency + installPath; keep wheels-core so
the framework still lands in vendor/wheels/.
(b) Even when installed, the app booted HTTP 500 "key [DB_CLASS] doesn't
exist" at config/app.cfm:14 — the datasource read this.env.DB_CLASS but
no .env shipped or scaffolded (only .env.example). Replace the
env-driven MySQL datasource with a zero-config H2 embedded database
(org.h2.Driver, bundled with Lucee). The H2 Lucee extension is declared
in server.json so `box server start` auto-installs it — no manual
LUCEE_EXTENSIONS or .env needed. Add a starterApp_test datasource for the
app test suite and a db/h2/ data directory.
.env is now optional and documented as such (server-based DB instructions
preserved in .env.example comments + README). README Quick Start rewritten
to the real flow: box install -> box server start -> wheels migrate latest.
Verified in CommandBox docker (ortussolutions/commandbox:latest) against the
prepare-starterApp.sh build output: box install succeeds (wheels-core only),
the server boots and the H2 datasource loads, `migrate latest` creates the
schema + seeds, and GET / returns HTTP 200 with the seeded site title.
Fixes #3181
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Peter Amiri <petera@pai.com>
bpamiri
enabled auto-merge (squash)
June 13, 2026 03:46
8 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The published
wheels-starter-appForgeBox package was unusable end-to-end:(a)
box install wheels-starter-appFAILED.box.jsondeclared a dependency on slugwheels-authenticateThis, which does not exist on ForgeBox, aborting the entire install:The
authenticateThis()mechanism the app actually uses (app/models/User.cfc:34) is supplied by the plugin already vendored atplugins/authenticateThis/. The ForgeBox dependency was redundant and broken.(b) Even when installed, the app booted HTTP 500
key [DB_CLASS] doesn't existatconfig/app.cfm:14— the datasource readthis.env.DB_CLASS, but no.envships or is scaffolded (only.env.example), sothis.envwas an empty struct.Both reproduced in CommandBox docker before fixing (verify-first).
Fix
box.json— drop the boguswheels-authenticateThisdependency +installPath. Keepwheels-coreso the framework still lands invendor/wheels/.box installnow succeeds (wheels-core only); the auth plugin is already bundled.config/app.cfm— replace the.env-driven MySQL datasource with a zero-config H2 embedded database (org.h2.Driver, bundled with Lucee — no extra JDBC driver).MODE=MySQLkeeps MySQL-compatible SQL. Adds astarterApp_testdatasource for the app test suite.server.json— declare the H2 Lucee extension in anenvblock sobox server startauto-installs it. No manualLUCEE_EXTENSIONSor.envneeded.db/h2/.keep+.gitignore— ship the H2 data directory; ignore the runtime.dbfiles..env.example/README.md—.envis now optional and documented as such; server-based-DB instructions (incl. the original MySQL example) preserved in comments. README Quick Start rewritten to the real flow.Verification (CommandBox docker,
ortussolutions/commandbox:latest, againstprepare-starterApp.shbuild output)box install→ SUCCEEDS (onlywheels-core; no slug error)box server start→ boots; H2 extension auto-installs; datasource loads (/wheels/cliping returns"success":true, nocannot load class, noDB_CLASSerror)wheels migrate latest→ creates all tables + seeds default roles/users/settings/permissionsGET /after fresh app-scope restart → HTTP 200, renders<title>Example App</title>(seededgeneral_sitename) and the navbar/login linkFixes #3181
🤖 Generated with Claude Code