Scroll stories that move the map, not the page.
Sticky map on one side, narrative on the other. Scroll drives camera, layers, filters and time, tweened against progress rather than snapped per chapter. No template to fight, no custom scroll code to maintain.

A chapter timeline you can actually edit
Click a chapter and the map jumps to its beat. Drag to reorder. Set the camera by moving the map, press Save beat, duplicate and nudge. Per-chapter layer visibility, filters and highlights, with interpolation between chapters when you want it.
- Live preview is the real viewer, not a mock
- Per-chapter typography, panel width, glass vs solid, accent
- Coordinate stamp per chapter, progress rail with chapter ticks

Choreography against scroll progress
Enter, progress 0 to 1, and exit triggers per chapter. Camera and layer opacity interpolate as the reader scrolls; transitions are fly, ease, jump or layer morph with crossfade. Sixty frames per second, and reduced-motion readers get an instant jump instead of a flight.
- interpolateCamera · interpolateLayerStates from @spatly/schema
- Time slider position is part of the beat
- Deep link to any chapter with #ch=3

Visual beats and four layouts
Swap the sticky pane from map to image, video, custom SVG scene, before/after swipe or chart, then back to the map. Sidecar left or right, floating narrative over the map, cinematic full-bleed with overlay text, and a stacked mobile layout where the map becomes a sticky header.
- Rich text, pull quote, stat chip, table, embed blocks
- Spatial mentions: @layer, @feature, @kpi stay live
- Explain this view drafts a chapter from the viewport

- Ask the map: natural language → filter + beat
- Freeze a snapshot or stay live, per layer
- Convert to slides in one click
- Password, unlisted, domain-restricted publishing
- OG preview with a static map frame
Drop a GeoJSON. Read it as a story in ten minutes.
Start with the Kahramanmaraş 2023 template and dismantle it, or begin from a basemap and a prompt.
41.0082°N 28.9784°E · z 11.3 · ⟂ 0°