SGOS
SGOS (Simple Gastronoimcal Ordering System) ist ein Bestellsystem, das ich für unser Feuerwehrfest programmiert habe. Es ist webbasiert und läuft auf verschiedenen Endgeräten.
Funktionen
Bestellen
Die wichtigste Funktion ist das Erstellen und Verwalten von Bestellungen. Der Vorgang beginnt mit der Tischauswahl. Diese können für eine bessere Übersicht Gruppen zugeordnet werden. Auch die Produkte werden Gruppen und Untergruppen zugeordnet, damit die Listen übersichtlich bleiben. Bei den Produkten können Modifikatoren ausgewählt werden, die Sonderwünsche abbilden, wie z. B. “ohne Ketchup” oder “mit Leitungswasser”. Die Modifikatoren können für jedes Produkt vordefiniert werden. Alternativ kann auch ein Freitextfeld verwendet werden.
Nach der Auswahl von Tisch und Produkten folgt eine Gesamtübersicht, in der alles noch einmal kontrolliert werden kann. Es gibt die Möglichkeit, einen Kommentar zu verfassen, der für die gesamte Bestellung gilt. Passt alles, folgt die Verrechnung. Hier kann ein Rabatt gewährt werden. Es gibt Funktionen wie Trinkgeld- und Rückgeldrechner. Es ist auch möglich, eine Bestellung auf mehrere Rechnungen aufzuteilen.
Damit ist der Bestellvorgang abgeschlossen. Die Rechnungen können auf Wunsch ausgedruckt werden. Im Hintergrund werden Aufträge erstellt und an die Arbeitsstationen gesendet, die diese bearbeiten. Der Status von erstellten Bestellungen kann jederzeit überprüft werden. Es gibt eigene Such- und Filteroptionen.
Aufträge
Für Stationen gibt es eine eigene Ansicht, in der die aktiven Aufträge aufgelistet werden. Dort können diese auch als erledigt markiert werden. Sind alle Aufträge einer Bestellung erledigt, gilt auch die Bestellung als erledigt. Zusätzlich gibt es für jede Station eine Anzeige, in der alle Produkte der offenen Aufträge zusammengefasst werden.
Lager & Reservierungen
Für Produkte, die stark begrenzt sind, können Lagerbestände angelegt werden. Fällt ein Lagerbestand auf null, werden die entsprechenden Produkte automatisch gesperrt. Der Lagerbestand kann jederzeit einfach angepasst werden. Im Lager können mehrere Zutaten für ein Produkt hinterlegt werden, und eine Zutat kann auch für verschiedene Produkte verwendet werden.
Produkte, die limitierte Zutaten verwenden, können auch reserviert werden. Für jede Reservierung muss ein Code hinterlegt werden. Die Reservierung kann dann beim Bestellvorgang ausgewählt werden. Die Produkte werden dadurch freigeschaltet, und die Reservierung wird verbraucht.
Statistiken
Es steht eine Übersicht über alle bereits verkauften Produkte zur Verfügung. Der aktuelle Umsatz kann ebenfalls eingesehen werden.
Druckserver
Rechnungen und Aufträge können ausgedruckt werden, entweder manuell oder automatisch. Dabei kann frei eingestellt werden, welcher Drucker für welche Station oder für Rechnungen verwendet wird. Administratoren können Zugangsdaten für Kellner samt QR-Code für einen schnellen Login ausdrucken.
Technische Details
SGOS ist eine Web-App, die über den Webbrowser aufgerufen wird. Das Frontend habe ich mit TypeScript und SolidJS entwickelt. Das Backend ist in Go geschrieben, und als Datenbank verwende ich MySQL. Das Projekt besteht derzeit aus knapp über 15.000 Zeilen Code.
Die App läuft auf verschiedenen Endgeräten, darunter Smartphones, Tablets und PCs. Bondrucker werden über WLAN und ESC/POS angebunden.
Bedeutung für mich
SGOS ist das bisher größte Projekt, an dem ich gearbeitet habe. Es ist meine erste richtige Web-App und das erste Projekt, das ich für die Nutzung durch andere entwickelt habe. Es repräsentiert meine Fähigkeiten als Softwareentwickler mehr als jedes meiner anderen Projekte.