Pull the prebuilt backend image
The quickest local path — the API comes up on port 8000 (all tags).
docker run --rm -p 8000:8000 ghcr.io/zhonghao1995/swmmcanada:latest # API on http://localhost:8000 · health: /api/v1/healthz
Pick the path that fits — the hosted beta in your browser, the prebuilt Docker image, or a full development setup from source. The current release is v0.2.0.
Nothing to install. Open swmm.h2ox.me, draw a small area, pick dates, and click Build SWMM model.
The demo runs on a small server (~2 GB RAM), so it works best for small areas; large regions can run out of memory and fail. For large-scale modeling, self-host the frontend and backend on a bigger machine or an HPC cluster — both run well as shipped.
Every command below has a copy button.
The quickest local path — the API comes up on port 8000 (all tags).
docker run --rm -p 8000:8000 ghcr.io/zhonghao1995/swmmcanada:latest # API on http://localhost:8000 · health: /api/v1/healthz
The backend needs Python 3.11; the frontend is React + Vite.
# backend (Python 3.11) cd backend && python3.11 -m venv .venv && .venv/bin/pip install -e ".[dev]" .venv/bin/uvicorn swmmcanada.api.main:app --port 8000 # frontend (another terminal) cd frontend && npm install && npm run dev
Skip the map entirely and drive the pipeline from Python:
from datetime import date
from swmmcanada.geo import aoi_from_geojson
from swmmcanada.pipeline import build_from_aoi
aoi = aoi_from_geojson({"type": "Polygon", "coordinates": [...]})
build_from_aoi(aoi, date(2022, 6, 1), date(2022, 6, 7), "out/")Running the whole thing in production — the backend as a container (GHCR image) and the frontend as a static site (GitHub Pages), and how the two are wired — is documented step by step in DEPLOY.md.