A Domo Custom App that renders a world map with Mapbox GL JS, powered by a Domo dataset. Points are sized and colored by city population; the underlying dataset is wired through manifest.json mapping and served to the app via the dev-server proxy.
This repo is the companion sample for the Mapbox World Map tutorial.
- Scaffolding a Vite + React + TypeScript app with the DA CLI
- Uploading a CSV to Domo and wiring it through
manifest.jsonmapping[]with field aliases - Fetching mapped data with
ryuu.js(domo.get('/data/v1/geoData')) - Rendering points as a GeoJSON circle layer with per-feature radius/color expressions
- Using a custom Mapbox style (
map-style.json) or a hosted Mapbox Studio style
src/
├── main.tsx # App entry (Provider optional — Redux is scaffolded but unused)
├── components/
│ ├── App/App.tsx # Renders <Map />
│ └── Map/
│ ├── Map.tsx # Fetch, transform, init map, add layer
│ ├── Map.module.scss
│ └── map-style.json # Custom monochrome style (optional)
data/
└── World_Cities.csv # Sample source dataset (~47k rows)
- Node 18+
- The DA CLI and the Domo CLI
domo logincompleted against your target instance- A free Mapbox account and access token
-
Upload
data/World_Cities.csvto your Domo instance and grab its dataset ID. -
Paste the dataset ID into
public/manifest.jsonundermapping[0].dataSetId. -
Publish an initial design to get a
proxyId:pnpm install pnpm upload
-
Create a card on the published design (select the dataset when prompted) and copy the
id+proxyIdback intopublic/manifest.json. -
Paste your Mapbox access token into
src/components/Map/Map.tsx(replaceYOUR_MAPBOX_ACCESS_TOKEN). -
Run locally:
pnpm start
See the tutorial for the full walk-through.
| Command | Description |
|---|---|
pnpm start |
Vite dev server with the Domo proxy |
pnpm build |
Lint, test, and build for production |
pnpm upload |
Build and domo publish in one step |
pnpm generate |
Scaffold new components / reducers with da generate |
pnpm test |
Run Vitest |
pnpm storybook |
Launch Storybook |