Logbuch#homeos#family#ux#selfhosting
Die Einkaufsliste lernt beim Aufräumen
Von Niclas Hennrich · veröffentlicht · geschehen am
Selbst gebaut und in Betrieb genommen. Gehört zum Vorhaben HomeOS — Control Center mit drei Säulen.
- Grenzfälle vorab als Test festgeschrieben
- 6
HomeOS ist mein selbst gebautes Control Center fürs Homelab — aus dem Infrastruktur-NOC gewachsen, mit drei Säulen: Infrastruktur, Haus (Smart Home) und Family (Haushalt). Die Family-Säule ist der unspektakuläre Teil: Aufgaben, Essensplanung, Einkaufsliste. Genau da entsteht der meiste Alltagsnutzen.
Was mich gestört hat: Das Einkaufsmodul war eigentlich komplett — Listen, Abhaken, Aufräumen, Favoriten als Chips. Aber jeder Artikel war Freitext, die Favoriten musste ich von Hand pflegen, und ein zweiter Tipp auf einen Favoriten ersetzte die Menge, statt sie zu erhöhen. Hafermilch ×2 hieß also: löschen, neu eintippen.
Die Entscheidung davor: Ich hätte einen Produktkatalog bauen können. Die Essensplanung hat sogar schon einen kanonischen Lebensmittel-Katalog. Den habe ich bewusst nicht als Bibliothek verwendet: Klopapier gehört auf eine Einkaufsliste, aber nie in ein Food-Modell. Also die bestehenden Favoriten ausbauen, statt etwas Neues daneben zu stellen.
Was ich gebaut habe: Stepper-Semantik — jeder Tipp auf eine Kachel legt eine Schrittweite drauf (die Favoriten-Menge, sonst 1). Die Kachel färbt sich mit der Menge auf der Liste („2 l" oder „×2"), Minus nimmt eine Portion runter, die letzte Portion löscht den Artikel. Das Löschen einer Kachel wandert in einen Bearbeiten-Modus, weil der Daumen im Laden nicht präzise ist.
Auto-Learn: Beim Aufräumen der Liste wird jeder abgehakte Artikel als Favorit gespeichert, bevor er verschwindet. Das ist der eine Moment, in dem „das kaufen wir wirklich" ohnehin feststeht — es kostet null zusätzliche Interaktion. Kuratierte Felder werden dabei nie überschrieben, nur fehlende gefüllt; der Abgleich ignoriert Groß- und Kleinschreibung. Dazu ein grobes Nutzungssignal (wie oft, zuletzt wann) fürs Sortieren — bewusst keine Einkaufsstatistik. Die Bibliothek gruppiert nach Kategorie, innerhalb der Gruppe die meistgenutzten zuerst, mit Suchfeld.
Der Grenzfall, der gelogen hätte: Ein Artikel ohne Menge steht schon auf der Liste, ich tippe die Kachel. Naiv gerechnet: nichts + 1 = 1. Erwartet: 2. Ein Artikel ohne Menge muss als eine Portion zählen, sonst lügt der zweite Tipp. Solche Fälle — mengenloser Bestandsartikel, kuratierter Favorit gegen Auto-Learn, Start bei ×1 — habe ich vorab als Tests festgeschrieben, sechs Stück, statt sie live zu entdecken. Deshalb gab es beim Deploy auf optimus nichts zu erzählen: Migration durch, zwei Kachel-Tipps ergeben einen Artikel mit 2,0 l, kein Duplikat.
Was ich mitnehme: Der beste Zeitpunkt zum Lernen ist ein Schritt, der ohnehin passiert. Und zwei Semantiken auf einer Funktion — ersetzen oder erhöhen — sind vertretbar, solange der Default das alte Verhalten bleibt und jeder Aufrufer explizit wählt. Die Schnelleingabe und der Essensplaner ersetzen weiter; nur die Kacheln zählen hoch.