Wie ich Produkte baue. Technisch und strategisch. Was funktioniert, was nicht, und was ich dabei lerne.
Neuester Beitrag
Alle Beiträge
800 Leute, eine wachsende Schlange, und eine App, die niemand mehr warten konnte. Ich war 16 und dachte: Das geht besser. Also habe ich gefragt. Was dann kam: 1'000 CHF Budget, ein Drucker-Hack um 2 Uhr morgens, und ein vergessener TWINT-Button.
Ich stand neben der Kasse und beobachtete. 800 Leute drängten sich durch den Raum, die Schlange wurde länger, und auf dem Tablet vor mir kämpften sich die Kassierer durch eine App mit schlechter UX.
Das System war nicht mal besonders alt. Aber unwartbar, featurearm, und der ursprüngliche Entwickler hatte keine Zeit mehr. Es funktionierte. Aber "funktionieren" ist ein niedriger Standard.
Ich bin 16, stehe jeden Monat bei diesem Jugend-Event in der Kirche, und normalerweise hilft man halt mit wo man kann. Aber in diesem Moment dachte ich nicht ans Mithelfen. Ich dachte: Das könnte ich besser.
Am nächsten Anlass habe ich den Gesamtleiter angesprochen. Kein vages "Ich hätte da mal eine Idee", sondern ein konkreter Vorschlag: Neues Kassensystem. Mobile Ordering, damit niemand mehr anstehen muss. Hardware-Konzept, das ins Budget passt. Ich übernehme alles, von der Beratung bis zur letzten Zeile Code.
Was ich nicht geschrieben habe: Dass ich so etwas noch nie gemacht hatte. Dass ich keine Ahnung hatte, wie man einen Thermal Drucker ansteuert. Dass das Ganze für mich ein riesiges Experiment war.
Die Antwort kam schnell. Begeisterung. Wann können wir starten?
Jetzt musste ich liefern.
Das erste richtige Gespräch war vor Ort, direkt nach einem Event. Wir haben durchgesprochen, was das System können muss. Was nervt am aktuellen Setup. Was fehlt. Was nice-to-have wäre.
Aber der Gesamtleiter war nicht der einzige, mit dem ich geredet habe. Ich habe die Kassierer gefragt: Was braucht ihr wirklich? Was kostet euch Zeit? Wo macht die alte App Probleme?
Die Antworten waren Gold wert. Dinge, die ich nie selbst gesehen hätte. Kleine Frustrationen, die sich über Monate aufgestaut hatten.
Etwa zwei Wochen Planung, bevor ich die erste Zeile geschrieben habe. Aber das war kein harter Schnitt. Während ich codete, kamen immer wieder Fragen. Kurze Nachrichten, schnelle Abstimmungen. Das System ist nicht in Isolation entstanden.
Was mir geholfen hat: Ich durfte fast alles selbst entscheiden. Technologie, Architektur, Design. Dieses Vertrauen hat das Projekt möglich gemacht.

Das Budget war die erste Realität. Unter 1'000 CHF für alles. Zwei Tablets, zwei Kartenleser, zwei Drucker, Ständer. Bei normalen Preisen unmöglich.
Also fing ich an zu rechnen. Samsung Galaxy Tab A9+ statt iPad, weil Android mir erlaubte, eine native App zu schreiben und das SumUp-SDK direkt einzubinden. SumUp Air statt teurere Terminals, weil Bluetooth bedeutete: keine Kabel, weniger Chaos.
Beim Drucker wurde es interessant. Klassische Thermal Drucker für POS-Systeme kosten 150 CHF aufwärts. Ich fand den Phomemo T02 für 30 CHF. Das Problem: Der ist eigentlich nur per App steuerbar, nicht für Entwickler gedacht.
Zwei Abende lang grub ich mich durch GitHub. Irgendwann fand ich eine OpenSource-Library, die das Ding reverse-engineered hatte. Direkte Print-Befehle über Bluetooth. Es funktionierte.
1'000 CHF eingehalten. Mit Budget übrig sogar.
Die Software war der Teil, auf den ich mich gefreut hatte. Go fürs Backend, weil ich etwas wollte, das schlank ist und unter Last nicht zusammenbricht. Next.js für die Web-App. Eine native Kotlin-App, die per WebView auf das POS-Frontend zugreift.
Bei der Infrastruktur hatte ich Glück: Die Organisation hatte Azure Non-Profit-Guthaben. Container Apps waren perfekt, weil das System einmal im Monat unter Last steht und sonst nichts kostet.

Die Datenbank war ein Kompromiss, der mir nicht gefiel. Eigentlich wollte ich PostgresSQL. Transaktionen, Konsistenz, alles was ein Ordering-System braucht. Aber Cosmos DB mit MongoDB API skaliert auf Null. Keine Anfragen, keine Kosten.
Ich habe Availability über Consistency gestellt. Nicht ideal für ein Bestellsystem. Aber realistisch für dieses Budget.
Erster Live-Test. Der Raum füllt sich, die ersten Bestellungen kommen rein, alles läuft. Ich stehe daneben und beobachte jede Interaktion. Dann bestellt ein Kunde mit TWINT und der Kassierer fragt mich:
"Wo ist TWINT?"
Ich erstarrte. Ich hatte es vergessen. Komplett. In meinem Kopf gab es nur Bares und Karte, da TWINT über QR-Codes gehandhabt wurde. Aber hier zahlt die Hälfte mit TWINT, und die Kassierer brauchten einen Button, um diese Bestellungen abzuschliessen.
Ich zog mein Laptop raus, schrieb den Button, testete lokal, deployte. Während um mich herum 300 Leute ihr Essen bestellten.
Es hat funktioniert. Aber dieser Moment hat sich eingebrannt.
Das WLAN machte die nächsten Probleme. Die Verbindung zwischen Tablets und SumUp-Terminals brach immer wieder ab, Verzögerungen von mehreren Sekunden.
Meine Theorie: Beide Terminals liefen auf demselben SumUp-Account. Als der Andrang nachliess und wir eine Station abschalteten, wurde die Verbindung sofort stabil.
Notiz für nächstes Mal: Problem analysieren und potenziell separate Accounts verwenden.
Mobile Ordering sollte im Januar kommen. Stripe war integriert, die App stand, wir waren bereit für den nächsten Schritt.
Dann die Nachricht vom Gesamtleiter. Probleme mit der Verifizierung. Details, die ich hier nicht ausbreiten werde, aber das Ergebnis war klar: Wir brauchen einen anderen Zahlungsanbieter.
Jetzt läuft die Migration auf Payrexx. Verzögerung. Aber auch Zeit, die ich nutze, um andere Stellen zu verbessern. Manchmal ist langsamer besser.
150 Bestellungen pro Event. 800 Besucher. Ein System, das die Kassierer als intuitiv beschreiben. Nicht schlecht für einen 17-Jährigen mit 1'000 CHF und keinem wirklichen Backup-Plan.
Aber das ist nicht der Punkt.
Der Punkt ist: Ich habe gefragt. Ich habe ein Problem gesehen, das niemand als Problem erkannt hat, und ich habe gefragt, ob ich es lösen darf.
Die meisten in meinem Alter warten. Aufs Studium. Auf den ersten Job. Auf jemanden, der sagt: Jetzt bist du bereit.
Ich habe aufgehört zu warten.
Wenn du das hier liest und dich fragst, wie du an solche Projekte kommst: Schau dich um. Ein veraltetes Tool, ein nerviger Prozess, irgendetwas das Zeit oder Geld frisst. Dann frag. Direkt. Und wenn du es kostenlos anbietest, sagt niemand nein.
Das Wissen kommt beim Machen. Nicht vorher.
Levyn Schneider
Autor