Open Source · MIT

Sprig

Ein Wochenplan, der sich in eine Einkaufsliste verwandelt: addiert Zutaten, rechnet Einheiten um und funktioniert im Laden ohne Netz.

v1.0.0 Ein Wochenplan, der zur Einkaufsliste wird
React 19TypeScriptVitePWAnode:sqliteApple HIG
Sprig

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.

Screenshots

Die Woche: Tage von oben nach unten, Gerichte dazwischen verschiebbar
Die Woche: Tage von oben nach unten, Gerichte dazwischen verschiebbar
Die Einkaufsliste: addiert, umgerechnet und nach Regalen sortiert
Die Einkaufsliste: addiert, umgerechnet und nach Regalen sortiert
Gericht wählen, Suche nach Name oder Zutat
Gericht wählen, Suche nach Name oder Zutat
Rezepte: was in diesem Haushalt wirklich gekocht wird
Rezepte: was in diesem Haushalt wirklich gekocht wird
Die Woche im dunklen Thema
Die Woche im dunklen Thema
Die Liste im dunklen Thema
Die Liste im dunklen Thema

Installation

git clone https://github.com/dripips/sprig.git cd sprig docker compose up -d

Haben Sie ein Projekt oder eine Idee?

Schreiben Sie mir, dann besprechen wir die Aufgabe.