Every framework you use ships a reactive runtime, whether it calls it that or not. Something has to notice a value changed, work out what depended on it, and decide when to act. The names differ — signals, observables, atoms, stores — but the machinery rhymes.
This series builds that machinery up from nothing. We start with a single source signal and an edge, add derived values and the diamond problem, batch a storm of writes into one flush, and finish with effects that tear themselves down properly.
Read it in order: every part leans on the vocabulary from the one before. The interactive figures are self-contained, so if you only came for the dependency graph, take it and go.