Skip to content
01Surface · Stories

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.

01Stories
A century of great earthquakes: chapter 4: 1952 to 1965: the giants
Chapter 04 · 1952 to 1965: the giants04
A published template, as your readers see it.
01.1Stories

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
Spatly Studio in story mode: scenes rail, live viewer canvas with the map, beat inspector
Studio · story mode · beat inspector41.0082°N 28.9784°E · z 1.6 · ⟂ 0°
01.2Stories

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
A century of great earthquakes: chapter 7: Magnitude as height
Chapter 07 · Magnitude as height07
01.3Stories

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
Where meteorites fall: chapter 3: The heaviest of all
Chapter 03 · The heaviest of all03
Also in Stories
  • 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°