No description
- Rust 33.7%
- Svelte 29.5%
- TypeScript 27.2%
- Nix 8.3%
- JavaScript 1%
- Other 0.1%
| backend | fix(zabaged): drop sentinel placeholder values from secondary refs | |
| frontend | feat(frontend): editable tag keys, per-row revert, fatter orange use-external arrow | |
| .gitignore | feat: powerbox real source (numeric ref) + wikidata license guard + vertical editor | |
| AGENTS.md | feat(atp): whitelist imported tags, brand fixups, drop broken spiders | |
| CLAUDE.md | feat: init git repository | |
| CONFIG.md | feat(atp): AllThePlaces brand spiders as version-probed datasets | |
| DEPLOYMENT.md | docs(deploy): drop stale rsync-to-host serve step | |
| justfile | build(nix): package frontend as flake + nix deployment docs | |
| README.md | feat(config): build-time dataset opt-in + bake config into backend | |
sync
Web-based POI import tool for OpenStreetMap. Compare external datasets to OSM, review matches, upload changes via OSM OAuth.
Layout
sync/
├── frontend/ Svelte SPA, Vite. Map + conflation UI.
└── backend/ Rust + axum. Stateless. In-process data sources (src/sources/),
└── config.toml caches dataset GeoJSON, serves to frontend.
config.toml = dataset registry (groups + datasets + conflation).
Dev
Each subproject builds independently. See per-dir README.md. just dev builds + runs backend (--enable-all) + frontend.
Datasets are opt-in at run time: --enable <group[.dataset]> (repeatable) or --enable-all. Prod bakes its selection into the nix wrapper (backend/flake.nix mkBackend); unlisted datasets stay inert.