Problem#
Tours are a linear list of tooltips. Real onboarding branches, spans pages, and needs an event stream you can send. Libraries bolt that on after the fact.
What I built#
A state-machine workflow engine. Framework-agnostic core; React is the first binding. You own the UI. Cairn owns the path, persistence, and events.
One hard decision#
The engine is not the renderer. A tooltip library dies when the DOM changes. A state machine survives navigation. next is a function of live context — an index is not a path.
Docs and demo live at react-cairn.vercel.app.