developmentseed / developmentseed/cng-sandbox

GeoLibre → CNG story handoff (cng side)

Open
#565 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.