===== IceBox ===== | Verantwortung | TVLuke | | Container | icbox? | | W. Ports | keine | | OS | docker mischmasch | | Server | [[infrastruktur:server:case]] moby | | Zustand | Produktiv | {{tag>infrasystem container case moby productive}} Hier findet sich die technische Dokumentation der Icebox. **Nutzungshinweise hier rausziehen und verlinken** ===== Services ===== ^ Serviceübersicht^Version^ |Icebox| ? | Das Icebox ist ein Lösung für Hackspaces um die Getränkeverwalutng und den Verkauf zu vereinfachen. Das System ist als Microservice Architektur aufgebaut und setzt auf state-of-the-art Technologien wie Docker, nodejs und traefik. Alle Teilsysteme des Produktes "Icebox Getränkesystems für Hackspaces" können hier Bestellt werden: [[https://git.chaotikum.org/icebox|git.chaotikum.org/icebox]]. ==== Stack ==== Es gibt folgende Services: - **icebox-service**: Das backend - **icebox-web: Web** Frontend zum kaufen und inventarisieren - **icebox-vuetified**: Touch Frontend - **icebox-image-service**: Service für Getränkebilder - **prometheus-icebox-exporter**: statistiken für prometheus Das alles wird von [[https://traefik.io/|traefik]] zusammengehalten. Das zugehörige docker-compose file findet sich [[https://git.chaotikum.org/chaotikum/infra/icebox-dockerized|hier]]. === Deploy === Für jeden service wird über gitlab-ci ein docker-image gebaut, das dann auf die gitlab eigene docker-registry gepusht wird. In dem docker-compose sind dann nur noch die urls zu den jeweiligen images. === Reboot === Wenn das mal down ist, muss man es per docker-compose up -d rebooten. Dafür muss man auf moby und dann in den icebox Ordner. Das geht von außen z.B. über willi (LDAP) zu [[:infrastruktur:host:moby|Moby]] und dort in den Ordner. === Services === Alle urls und domains sind in der docker-compose über labels festgelegt und traefik kümmert sich dann automagisch. -> [[https://git.chaotikum.org/chaotikum/infra/icebox-dockerized/-/blob/master/docker-compose.yml|docker-compose.yml]] == Backend und API == Das Backend ist unter [[http://api.icebox.nobreakspace.org|api.icebox.nobreakspace.org]] zu erreichen. == Web == [[http://icebox.nobreakspace.org|icebox.nobreakspace.org]] == Icebox-vuetified == [[http://vue.icebox.nobreakspace.org|vue.icebox.nobreakspace.org]] == Image service == [[http://images.icebox.nobreakspace.org|images.icebox.nobreakspace.org]] ====Icebox==== Ein Admininterface für die Datenbank ist unter http://icebox.nobreakspace.org/pgadmin4 erreichbar. === Known Issues === **NoScript unter Firefox** Tut nicht. Auch wenn man alles erlaubt. Das ist doof, aber Fakt. Wir sagen, das ist die Schuld des Plugins. === Software === == Clients == * Webclient unter [[http://icebox.nobreakspace.org/|icebox.nobreakspace.org]] * Touch-client auf dem Pi am Kühlschrank ([[https://github.com/MotieDesign101/IceBoxTouch|Github]]) [Dies ist nicht mehr die genutzte Software, die genutzte Software hat aber wohl noch kein git, husqar fragen) * Android [[https://github.com/malteschmitz/icebox-android]] == Dienste == * Die Icebox twittert unter [[https://twitter.com/NbspIcebox|NbspIcebox]] ([[https://github.com/MotieDesign101/IceBox-Twitter|Code auf Github]]) * Es gibt einen Monitoringdienst, der den Bestand aufzeichnen lässt * Alias https://github.com/MotieDesign101/iceBoxAlias * Liste der Einkaufspreise https://github.com/MotieDesign101/iceboxprices == API-Doku == * http://docs.iceboxservice.apiary.io/ == Inventur == Nachdem der Getränkelieferant da war ist es sinnvoll eine Inventur durchzuführen, dabei sollte **sowohl** die **Anzahl der vorhandenen Getränke um die eingekaufte Menge erhöht** werden (einfach die ausgegraute Zahl + die Neueinkäufe) als auch bei **allen Getränken die Leergutmenge auf 0** gesetzt werden. Inventur ist unter [[http://icebox.nobreakspace.org/|icebox.nobreakspace.org]] möglich, einfch den in Menü befindlichen Link "Inventur" nutzen. Dort das Getränk auswählen und die korrekte Information angeben. Felder die nicht verändert werden sollen einfach so belassen wie sie sind. Neue Getränke können in der selben Maske unten angegeben werden. Es ist aktuell nicht ohne weiteres Möglich ein Bild für ein neues Getränk hinzuzufügen. Als Baarcode sollte der auf der Flasche abgedruckte Baarcode genutzt werden sofern vorhanden. Um neue Schilder zu drucken befindet sich weiter unten ein Link zur entsprechenden tex-Datei. == Alias anlegen == Getränke und User können sich Aliase anlegen. Dies geschieht unter icebox.nobreakspace.org:8085/alias per POST mit { "input": "123456789", "alias": "tvluke" } Kann man einen registrieren. Wenn man nun GET auf icebox.nobreakspace.org:8085/alias/123456789 macht so erhällt man { "input": "123456789", "alias": "tvluke" } zurück. Der Touch-Client am PI nutzt den ALIAS Service, wenn er einen Input bekommt, den er so nicht kennt. Dies kann genutzt werden, wenn sich der Barcode eines Getränks ändert. Registriert man z.B. { "input": "neuer Barcode", "alias": "alter Barcode" } So sollte ab jetzt auch der neue Barcode funktionieren, weil er auf den alten gemappt wird. Genauso kann die UID eines RFID-Chips auf einen username gemappt werden, damit ein User einen NFC-Chip zur Id am System nutzen kann. ==== Mehr Dienste ==== **Einkaufspreise:** http://icebox.nobreakspace.org:8086/prices **Nährwerte:** http://icebox.nobreakspace.org:8087/ingred == Offene Ideen == * Anbindung von https://coffeestats.org/ * Statistiken * Verbrauchsprojektion * Coole Rankings oder Stats als Website * Aktiva/Passiva Rechnung für Kassenwart * Licht Im Kühlschrank * Erhöhte Komplexität: UDP Multicast bei Getränkeauswahl am Touch-Client, Licht-Client kennt Getränkeposition im Kühlschrank. * Case für den Touch-Client am Kühlschrank * Mobile-App (Bonjour kann man z.B. nutzen, um automatisch beim verbinden mit WLAN die Icebox zu finden) * Vorschlagsmodus (personalisiert oder über den Space) * Koffeein- oder Zuckersummierung für User (Un-Health-Monitoring/bestenliste) * Twitter-Client besser machen * Einkaufen via Twitter * @NbspIcebox könnte sich mit @DasBein unterhalten oder so * Monatlicher IceBox Bericht * Wie viele Getränke wurden gekauft * Wie viele User sind registriert * Wie viele User waren im letzten Monat aktiv * Wie viel Guthaben liegt auf den Accounts * Welche User verlieren im nächsten Monat wegen "ein Jahr inaktiv" ihr Geld * Welche Getränke waren populär, welche nicht * Uhrzeitverteilung des Kaufens * ...