- Open the editor
- Learn more about the project in the launch post.
One app with a shared OSM shell (auth, fetch, changeset upload) and modes for visualization and editing:
| Mode | Status |
|---|---|
| Parking | Active |
| Width | Active |
| Bicycle | Active |
| Lanes | Planned |
| Surface | Active |
| Sidewalks | Planned |
Modes plug into app/src/modes/; the shell lives in app/src/shell/. Shared kit packages remain under packages/*.
Deploy path: Vite / GH Pages base is /street-space-editor/.
Viewer:
Editor:
The correct Node version is specified in .nvmrc.
For an easy way to automatically use this Node version just for your current shell:
- Install
nvm- Using the install script
- Or using Homebrew
- Run
nvm useto automatically use the Node version specified in the.nvmrc. You may need tonvm install.
From the repo root:
bun install
bun run devThe Vite app lives in app/ (@osm-editor-kit/street-space-editor). Run bun run check from the root before pushing.
Dev OSM data: In development, the app defaults to a local Berlin fixture served as OSM Map API bbox slices (dev-osm-map-fixture). Use the debug panel’s “Live OSM viewport fetch” toggle to hit the real OSM Map API instead. The fixture file is downloaded on bun run dev via predev if missing.
Flat audit pages (no mode chrome) for reviewing interpretation rules and fixtures:
Local (with bun run dev):
- Width audit — measure rules and tag relations
- Lanes audit — cross-section / plan-sketch interpretation (one demo per URL)
Deployed:
- https://osmberlin.github.io/street-space-editor/audit-width
- https://osmberlin.github.io/street-space-editor/audit-lanes/one-lane-each-way
Husky runs bun run check-pre-push on pre-push (type-check, lint, format, test-run — same areas as CI). See .husky/pre-push.

