developmentseed / developmentseed/cng-sandbox
GeoLibre → CNG story handoff (cng side)
- Dominant language
- TypeScript
- Stars
- 3
- Forks
- 0
- Avg merge
- 2h 21m
- Merged PRs (30d)
- 3
Description
## Summary
Add the **cng side** of a GeoLibre → CNG story handoff. GeoLibre ([geolibre.app](https://geolibre.app/), opengeos' client-side GIS platform) becomes the front door for users' data/GIS work; cng focuses on its differentiated storytelling layer. A GeoLibre plugin will hand off the current project to cng, which builds a draft story the user enriches in cng's existing editor.
This issue covers **Plan 1 (cng side)** only. The GeoLibre plugin itself is a follow-up (Plan 2), gated on a plugin-API spike.
Design + plan: **`2026-07-10-geolibre-story-handoff`** (spec and plan in Obsidian `Project Docs/CNG Sandbox`).
## Key decisions
- **Handoff**, not embed — authoring stays in cng's existing editor.
- **Reference-only** — cng points at GeoLibre's remote layer URLs; it does **not** ingest/convert/host the data.
- **Single map chapter** seeded from the current view (bound to the topmost layer; all URL-backed layers imported as connections).
- Imported connections stamped `config.geolibre_import = true`; only degradation is hiding the chart "From dataset" tab for these referenced-only stories.
## Scope (Plan 1)
- [ ] Server-side workspace-id generator
- [ ] GeoLibre import request models + layer translator (`cog`+bounds / `geoparquet` / `pmtiles` / `xyz_*`)
- [ ] `POST /api/geolibre/import` route (mint workspace, create client-render connections, one `map` chapter, return `editorUrl`)
- [ ] `isReferencedOnlyStory` frontend helper (via the marker)
- [ ] Hide the chart "From dataset" tab for referenced-only stories
- [ ] Manual end-to-end verification against the worktree stack
## Deferred to Plan 2 (GeoLibre plugin)
- Plugin `plugin.json` + read/filter/POST/open-tab flow, surfacing skipped local layers.
- CORS for the `web.geolibre.app` origin on the import route.
- **First task is a spike**: confirm GeoLibre's plugin API can read the full project (layers + URLs + camera) client-side.
Contributor guide
Research direction
Start with the `2026-07-10-geolibre-story-handoff` specification and plan in `Project Docs/CNG Sandbox`. Trace the server-side workspace generator, GeoLibre import models and layer translator, `POST /api/geolibre/import`, and the frontend referenced-only helper and chart-tab behavior. Done means the Plan 1 checklist is implemented and manually verified against the worktree stack; the GeoLibre plugin and CORS work are deferred.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- api, full-stack
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100