Clean Garden is an offline 3D garden cleanup and tree planting game credited to Quantum Billing LLC.
The game is built with plain browser JavaScript, local Three.js r128 assets, Vite, and Tauri v2. It supports desktop, mobile touch, keyboard, mouse, single-player, simultaneous two-player play, localized UI, seeded level attempts, score memory, avatar customization, and an LLM-friendly browser control hook.
Project page: https://codejq.github.io/quantum-garden-game/
Live web build: https://codejq.github.io/quantum-garden-game/game/
- Offline-first browser and Tauri builds.
- English by default, plus Arabic, Spanish, and French.
- Single-player and simultaneous two-player modes.
- Keyboard, mouse, and touch controls.
- Seeded randomized levels with teardown and replay-friendly state.
- Saved best, last, and total score data.
- Avatar gender and clothing options.
window.QuantumGardenAgentAPI for model-driven play and testing.
- Node.js 24.
- Rust stable.
- Tauri v2 prerequisites for the target platform.
- Android Studio, Android SDK, Android NDK, and Java 17 for Android builds.
- macOS, Xcode, and Apple signing access for macOS/iOS builds.
npm ci
npm run devnpm test
npm run test:offline-build
npm run build
npm run tauri:buildAndroid:
npm run tauri:android:buildiOS, on macOS with Xcode:
npm run tauri:ios:build- Web:
dist/web - Windows desktop app:
src-tauri/target/release/clean-garden.exe - Windows installers:
src-tauri/target/release/bundle - Android APK:
src-tauri/gen/android/app/build/outputs/apk - Android AAB:
src-tauri/gen/android/app/build/outputs/bundle
CI: runs tests and offline build checks.GitHub Pages: builds the offline web game and deploysdist/webto GitHub Pages.Build Platforms: builds web, Windows, Linux, macOS, iOS, and Android artifacts on release tags, attaches web/desktop/iOS assets to the GitHub Release, and can also run manually. If Apple signing is unavailable, the iOS job uploads the generated iOS project archive instead of a signed binary.Android Market Release: builds signed Android artifacts, creates a GitHub Release, and can publish the AAB to Google Play if the Play secret is configured.F-Droid Publish: publishes the signed release APK intodocs/fdroid/for GitHub Pages hosting, and can also open/update an official F-Droidfdroiddatamerge request when GitLab submission secrets are configured.
Android signing:
ANDROID_KEYSTORE_BASE64: base64 encoded Android release keystore.ANDROID_KEYSTORE_PASSWORD: Android keystore password.ANDROID_KEY_ALIAS: Android key alias.ANDROID_KEY_PASSWORD: Android key password.
The Android release workflow also accepts the legacy names from the copied workflow: KEYSTORE_BASE64, KEYSTORE_PASSWORD, KEY_ALIAS, and KEY_PASSWORD.
If Android signing secrets are absent, CI generates a temporary release key so a first APK can still be produced. Configure real signing secrets before relying on app updates, because Android requires every future update to use the same signing key.
Google Play publishing:
GOOGLE_PLAY_JSON_KEY: Google Play service account JSON.
F-Droid repository signing:
FDROID_KEYSTORE_BASE64: base64 encoded F-Droid repo keystore.FDROID_KEYSTORE_PASS: F-Droid repo keystore password.
If F-Droid repo signing secrets are absent, CI generates a temporary repo key for the current publication. Configure the real F-Droid repo key before giving the repo URL to users.
Official F-Droid publishing:
FDROID_GITLAB_TOKEN: GitLab token withapiandwrite_repositoryaccess to yourfdroiddatafork.FDROID_GITLAB_FORK: your GitLab fork path, for exampleyour-gitlab-user/fdroiddata.
F-Droid official publishing is not an APK upload. The workflow opens or updates a merge request against fdroid/fdroiddata so F-Droid can review and build the app from source.
iOS binary distribution requires Apple signing and provisioning on the macOS runner. Without that setup, the release includes Clean-Garden-<tag>-ios-project.zip so the generated Xcode/Tauri iOS project can still be downloaded.
The Android package id and iOS bundle id are com.quantumbilling.cleangarding.
