Build & Deploy Workflow
Prerequisites
- Node.js installed
- Domo CLI installed (
npm install -g @domoinc/ryuu)
Local development
npm install # Install dependencies
npm run dev # Start dev server (usually Vite)For API calls to work locally, you need ryuu-proxy configured and domo login authenticated.
Build for production
npm run build # Outputs to dist/ (Vite) or build/ (CRA)Domo CLI Authentication
domo login # Authenticate with your Domo instanceYou'll be prompted for your Domo instance URL and credentials.
Publishing
cd dist # Change to build output directory
domo publish # Publish to DomoIf publish includes new/updated Code Engine packages, run package lifecycle steps first via:
~/.agents/skills/code-engine-create/SKILL.md~/.agents/skills/code-engine-update/SKILL.md
Important - First publish:
- On first publish, Domo generates a new
idfor your app - This ID appears in the published
manifest.jsonin your dist folder - You must copy this ID back to your source
manifest.json(e.g.,public/manifest.json) - If you don't, every publish creates a NEW app instead of updating the existing one
# After first publish, copy the generated ID:
# dist/manifest.json → public/manifest.json (just the "id" field)Subsequent publishes
Once the ID is in your source manifest:
npm run build && cd dist && domo publishBuild Checklist
Before publishing, ensure:
manifest.jsonhas correctdataSetId(notid) for datasetsmanifest.jsonhasfields: []in each dataset mappingthumbnail.pngexists and is 300x300 pixels- All queries use
.select()with specific columns (never fetch all columns) - Each visualization has its own optimized query
- No
.aggregate()calls (use.groupBy()or client-side aggregation) .groupBy()calls have a grouping column (not just aggregations)