Die Liste ist der Zweck, der Plan der Weg dorthin
Rezept-Apps zeigen fremdes Essen und wollen ein Abo. Notizen und Listen im Messenger wissen nicht, dass «500 g Hähnchen» am Dienstag und «400 g Hähnchen» am Donnerstag eine Packung zu 900 g sind.
Sprig behält, was Ihnen gehört. Gerichte auf die Tage ziehen, angeben, wie viele essen — und die Einkaufsliste baut sich selbst: Gleiches wird addiert, Gramm werden zu Kilogramm, die Zeilen stehen nach Regalen sortiert. Im Laden funktioniert sie ohne Netz und holt den Server ein, sobald die Verbindung zurück ist.
Was drinsteckt
Die Woche als Strom von Tagen
Ein Tag ist ein Abschnitt mit Mittag und Abend und den Gerichtkarten darin. Eine Spalte funktioniert am Küchentisch wie am Telefon: für den kleinen Bildschirm wird nichts neu erfunden.
Ziehen von Hand geschrieben
Ein Hook auf Pointer Events statt einer Bibliothek: funktioniert mit Maus und mit Finger, denn HTML5-Drag-and-drop gibt es auf dem Telefon schlicht nicht. Gezogen wird am Griff, dessen touch-action: none verhindert, dass die Seite unter dem Daumen wegrutscht.
Die Liste wird abgeleitet, nie gespeichert
Eine reine Funktion des Plans, deshalb können «was wir kochen» und «was wir kaufen» nicht auseinanderlaufen. Unvereinbare Einheiten bleiben ehrlich — «20 Stk + 800 g» statt einer erfundenen Zahl.
Rückgängig statt Dialoge
Die Woche ist ein Dokument im Reducer, frühere Zustände liegen auf einem Stapel — Rückgängig und Wiederholen gibt es gratis. Das Abhaken im Laden bleibt außerhalb der Historie: Einkaufen ist keine Bearbeitung.
Funktioniert offline
Als App installierbar: die Hülle liegt im Service-Worker-Cache, Änderungen warten in einer Warteschlange im localStorage und gehen raus, sobald das Netz zurück ist. Nichts wird je blockiert.
Zwei Abhängigkeiten
React und React DOM — sonst nichts zur Laufzeit. Ein eigener Router mit 30 Zeilen, handgeschriebenes CSS, ein Server auf Node 24 und node:sqlite ohne Build-Schritt. 21 Tests auf der reinen Logik.