Architectuur

State management

Zustand-stores, persistentie en undo/redo.

routess gebruikt Zustand voor clientstate. Stores staan in packages/core/src/stores/ zodat de webapp en de (toekomstige) mobiele app ze kunnen delen.

Stores

  • routingStore: huidige route-waypoints, afgeleide stats, undo/redo-historie
  • authStore: huidige gebruiker, OAuth-state
  • uiStore: kaartstijl, open-state van de sidebar, taal

Waarom Zustand (niet Redux/Jotai)

  • Kleine API, geen boilerplate met actions/reducers
  • Werkt buiten React (zodat packages het kunnen gebruiken)
  • Ingebouwde middleware: persist, subscribeWithSelector

Persistentie

De webapp omhult routingStore en uiStore met de persist-middleware op basis van localStorage. De mobiele app wisselt dat in voor AsyncStorage (zie fase 5 van het mobiele plan).

Undo / redo

De routing-store houdt een begrensde historie van eerdere states bij. Elke mutatie zet de huidige state op de undo-stack voordat ze wordt toegepast. Redo herstelt vanaf de redo-stack bij elke undo. De stacks worden gereset bij een auth-wijziging.

On this page