Tunnels
Un tunnel est un parcours découpé en étapes — une inscription, un paiement, un renouvellement — dont le chemin peut changer en fonction des réponses du visiteur. Le package se souvient de l'état de chaque visiteur, les guide à travers les étapes qu'ils peuvent voir, et les renvoie là où ils appartiennent lorsqu'ils essaient de passer outre.
Un arbre de curseurs
Un tunnel est construit comme un arbre, pas une liste. Une étape atteinte depuis deux endroits est deux curseurs, chacun avec son propre hash et ses propres valeurs stockées : c'est ce qui permet à une branche de développer des étapes que l'autre n'a pas, et ce par quoi le chemin que vous avez pris, montré à la fin de chaque tunnel, est lu.
Une session dans la base de données
Ouvrir un tunnel crée une session, que la session du navigateur ne connaît que par son id. Elle contient les valeurs que les étapes stockent, et expire un jour après la dernière étape affichée — ou plus tôt, lorsque cette étape le demande. Les sessions expirées sont supprimées par le planificateur, toutes les 15 minutes ; celles terminées et en attente sont conservées.
Où le visiteur peut aller
Chaque étape décide si elle peut être affichée et où envoyer le visiteur autrement. Les liens et les boutons sont dessinés selon les mêmes règles, donc un lien ne mène jamais à un retour : pas de bouton suivant là où le chemin se divise, pas de retour passé un paiement, rien à quoi revenir dans une session fermée.