Quickstart — the AI path
This is the fast path. You'll install the PortalJS skills into Claude Code, then drive the whole build from chat. Prefer to build by hand? See Manual setup instead.
Prerequisites
- Node.js >= 18
- Claude Code (or another
agent that runs Claude Code skills)
1. Install the skills
The skills are Claude Code commands — /new-portal, /add-dataset, /add-chart,
/add-map, /connect-ckan, /deploy. Install them once into your personal scope
so they're available in every project:
curl -fsSL https://raw.githubusercontent.com/datopian/portaljs/main/scripts/install-portaljs-skills.sh | bash
Restart Claude Code (or open a new session) so it picks up the new commands.
Other install options
You can also run the skills straight from a clone of the
portaljs repo, or install them as a
versioned plugin. See the install guide
for all three paths.
2. Scaffold a portal
In Claude Code, describe the portal you want:
/new-portal Auckland Council Open Data Portal — public datasets for the Auckland region
/new-portal copies the canonical lightweight template, substitutes your project
name and description, installs dependencies, and verifies the build. You get a
real Next.js project — plain, editable code you own.
Start the dev server to see it:
cd auckland-council-open-data
npm run dev
3. Add your data
Point /add-dataset at a local file or a public URL. It copies the data into
/public/data/, generates a dataset page, and registers it on the home page
catalog:
/add-dataset ./data/population.csv — Auckland population by area
/add-dataset https://example.com/air-quality.csv — Air quality monitoring
Supported formats: CSV, TSV, JSON (array), and GeoJSON.
4. Make it richer (optional)
/add-chart— add a line, bar, area, pie, or scatter chart to a dataset page./add-map— render a GeoJSON dataset on an interactive Leaflet map./connect-ckan— wire the portal to a CKAN backend over its API instead of static files.
Every skill writes plain, readable code — nothing it produces is hidden behind a runtime you can't see or edit.
5. Deploy
When you're ready to go live:
/deploy
/deploy detects your target (Vercel or static hosting), builds the portal, and
publishes it — you get a live URL at the end.
Where to go next
- Core concepts — understand the model behind the skills so you can customize confidently.
- Manual setup — the same project, built by hand.