Projets

List

liste partagée · par lien, en direct

Une liste, tout le monde écrit dessus, une personne y va, tout le monde suit.

Une liste qu’un groupe remplit ensemble et qu’une seule personne exécute. Les collègues y ajoutent leur commande du midi, un foyer ses courses ; celui qui y va coche les lignes sur son téléphone pendant que les autres les voient partir, en direct. Elle s’écrit sur une ardoise de marché, chaque ligne signée à la craie de son auteur, et une seconde sorte de liste cache à son propriétaire les réservations d’une liste d’envies.

  • TypeScript
  • React
  • Hono
  • Cloudflare Workers
  • Durable Objects
  • WebSocket
LISTCLAIREMARCPAULINÈSCLAIREMARCSOFIALISTDessin : l’ordinateur du bureau affiche les courses du vendredi pendant qu’on écrit une ligne, et le téléphone de celui qui fait les courses coche les citrons verts, barrés sur les deux écransCOURSESVENDREDIEssuie-toutCafé en grainsKebab, sauce blancheCitrons vertsLait d’avoinePiles AASacs poubelleGâteau pour Léa|COURSESVENDREDIEssuie-toutCafé en grainsKebab, sauce blancheCitrons vertsLait d’avoinePiles AASacs poubelleCOCHÉ AU MAGASINbarré sur chaque écranUNE LIGNE, UN NOMle prénom, demandé une foisSANS COMPTEle lien sert de clé
Couverture
11 %
lignes exécutées par les tests lancés hors du Worker, lues le 2026-10-22
Paquets maison
9 sur 11
installés depuis npm

En bref

  • Quelqu’un crée une liste et envoie son lien ; chacun y ajoute des lignes d’où il est, et celui qui y va les coche pendant que les autres les voient changer. Sans compte : le lien fait office de clé.
  • Chaque ligne porte le nom de qui l’a écrite, dans une craie de couleur à lui, distribuée pareil sur chaque écran : plus personne n’a à demander « tu as pris mon truc ? ».
  • Une liste d’envies appartient à qui l’a créée : les invités réservent une envie ou glissent des idées surprises, et le serveur envoie à chaque socket la liste telle que son lecteur a le droit de la voir, si bien que le propriétaire ne sait jamais qui a réservé quoi.
  • Un Durable Object adossé à SQLite par liste garde ses lignes et ses sockets via l’API d’hibernation ; chaque modification est diffusée sous forme de liste complète, si bien qu’un socket qui se reconnecte n’a rien manqué.
  • Une liste que personne n’ouvre pendant quatre-vingt-dix jours s’efface d’elle-même, par une alarme que chaque visite repousse.
  • Installable, en français et en anglais, clair et sombre, lue et cochée d’une main sur un téléphone.

Comment ça marche

un objet par liste, toute la liste à chaque changement

Schéma : un Durable Object par liste garde ses lignes en SQLite ; quiconque a le lien les ajoute, les coche et les réécrit, un invité réserve un souhait, et à chaque changement chaque socket reçoit la liste entière telle que son lecteur peut la voir : les invités voient le souhait réservé, son propriétaire jamaisAvec le lienajoute, coche, réécritUn invitéréserve un souhaitDurable Objectun par listeSQLite, sockets en veilleChaque invitéle voit réservéLe propriétairene voit pas par quiun socket chacunChaque changement envoie la liste entière, telle que chacun peut la voir.

Paquets maison

9 des 11 paquets maison, depuis npm, jusqu’aux réglages du compilateur et du linter.

Votre équipe, peut-être ?

Je cherche mon prochain poste. Écrivez-moi, ou prenez le CV : un mis en page, et un sobre pour les logiciels de recrutement.