EATracker Projekt 2023

Mit neun Mitgliedern in einer Gruppe zu arbeiten, war eine Herausforderung. Doch durch gute Absprache und eine hervorragende Beteiligung gelang es gemeinsam die App "EATracker" hervorzubringen.

Im Laufe des Projektes gewann jeder von uns immer mehr an Erfahrung. Vor allem, da viele von null anfangen mussten, hat sich jeder in seinen Fähigkeiten weiterentwickelt. Wir haben gelernt, wie man in React JS eine Anwendung erstellt, sowie Services und deren Endpunkte hinzuzufügen. Des Weiteren haben wir einen Einblick in die Bild-zu-Text-Verarbeitung erhalten. Die größte Herausforderung war vermutlich jedoch der gesamte Prozess selbst. Jeder musste lernen zu dokumentieren, auf gesetzte Vereinheitlichungen zu achten und vor allem Verantwortung für Aufgaben und Probleme zu übernehmen.

Alles in allem sind wir stolz auf unser Ergebnis in diesem Semester und gespannt, wo es mit dem EATracker noch so hingeht.

 

 

Zunächst mussten wir unsere Idee auf realisierbare Teile herunterbrechen. Es stand nur wenig Zeit zur Verfügung, deshalb war es wichtig am Ende die grundlegenden Funktionen, wie das Front- und Backend, abgedeckt zu haben. Ein Hauptfeature der App sollte von Anfang an eine Texterkennung sein. Mit deren Hilfe der User den gesamten Einkauf auf einmal eintragen können.

Gleich zu Beginn wurden wir auf folgende Probleme aufmerksam.
Wie sollen die Komponenten miteinander kommunizieren? Aus welchen Elementen bestehen diese?
Wie wird so etwas überhaupt programmiert?

Der Großteil von uns hatte keine Erfahrung mit dem Entwickeln von Web-Anwendungen. An einem Projekt mit diesem Umfang hat bis zu diesem Zeitpunkt ebenfalls noch niemand mitgewirkt.

Während des Projektes stießen wir immer wieder auf Komplikationen. Auf der fachlichen Seite kam es zu mangelndem Wissen, welches sich angeeignet werden musste. Aber auch ungewollte Fehler im Programm wurden gefunden und ausgebessert. Aus sozialer Sicht traten Meinungsverschiedenheiten auf, denn bei neun Leuten ist es schwer, auf jeden zu jeder Zeit einzugehen. Vor allem unterschiedliche Arbeitsweisen und andere Zeitplanungen machten den Anfang schwer.

 

Um der Mission gerecht zu werden, teilten wir uns in drei Gruppen auf, das Backend, das Frontend und die Texterkennung. Jede Gruppe entwickelte anschließend ein Konzept für die Umsetzung ihrer Aufgabe. Diese Entwürfe wurden im Anschluss besprochen. Es galt herausfinden wie wir diese Puzzleteile zu einer Anwendung zusammenzufügen.

Wir stellten Endpunkte bereit um einen Datenaustausch zwischen den Komponenten zu ermöglichen. Das gesamte Projekt wurde über GitLab verwaltet. Dieses Tool ermöglichte uns den Überblick zu behalten, strukturiert Aufgaben anzugehen und paralleles Arbeiten. In regelmäßigen Meetings haben wir den aktuellen Stand erfasst und bewertet. Durch diese war es uns möglich auch gruppenübergreifend unsere Hilfe anzubieten und auf jedes Problem schnell zu reagieren.

 

Das Frontend

Die Entscheidung fiel früh auf eine Entwicklung mit React-JS. Eine einfache Handhabung, sowie die universelle Anwendung, machen diese Bibliothek zur ersten Wahl. Darauf wurde begonnen einzelne Komponenten und ihre Funktionen zu Entwickeln und zu einem großen User Interface zusammengesetzt.

Dafür entwarf man zunächst die Liste. Vom Hinzufügen bis zum Löschen und Bearbeiten wurden einige nützliche Funktionen erstellt. Bei Problemen wurde untereinander zusammengearbeitet, um Schwierigkeiten zu beseitigen. Im späteren Verlauf konnte dann auch mit den Daten aus der Texterkennung gearbeitet werden. Dadurch war es möglich eine Maske zu entwickeln, die das Bearbeiten neuer Lebensmittel stark vereinfacht. Die zweite große Komponente war das Dashboard. Es soll dem Nutzer die Möglichkeit bieten einen Gesamtüberblick über vorhandene und bereits verbrauchte/ verschwendete Lebensmittel zu erhalten.

Das Backend

Das Backend wurde mittels eines Node Express Servers erstellt. Dieser passt am besten zu react und bot gute Zugänglichkeit für das Team. Letztendlich befinden sich an diesem Ort die Berechnungen für die App. Gleichzeitig dient der Service als Speicher der vom Nutzer generierten Daten. Angefangen wurde hier mit der Festlegung auf Json-Strings als einheitliches Speicherformat, da sich die Datenmenge sehr übersichtlich gestaltet. Gleich im Anschluss wurden Routen bereitgestellt, über die man auf die Daten zugreifen konnte.

Nach dem die Arbeiten an der App sich dem Ende neigten, sorgte das Backend-Team dafür, dass die Anwendung auf dem Hochschulserver zu erreichen ist. Dafür mussten einige Probleme mit der Kompatibilität behoben werden.

Die Texterkennung

In dieser Gruppe wurde ausgearbeitet, wie sich die App eine Texterkennung zu Nutze machen kann. Das Ziel war es, eine möglichst genaue Texterkennung zu entwickeln. In der Praxis nutzt man dafür eine Optical-Character-Recognition (OCR). Wir haben verschiedene OCR-Bibliotheken gefunden. Die Open-Source-Variante von Google namens "Tesseract" ist dabei in den Vordergrund gerückt. Sie bot alle benötigten Funktionen, um das Vorhaben umzusetzen.

Programmiert wurde der Service in Python, da in dieser Sprache schon Vorkenntnisse vorherrschten ist das der beste Weg. Da Bons aus verschiedenen Läden unterschiedliche Layouts haben, mussten verschiedene Profile erstellt werden. Wir haben uns auf Rewe und Kaufland fokussiert. Der gesamte Code wurde im Anschluss in einen Django-Service integriert. Mit Hilfe der Django-Applikation konnte der Endpunkt für die App bereitgestellt werden.

 

 

Mit neun Mitgliedern in einer Gruppe zu arbeiten, war eine Herausforderung. Doch durch gute Absprache und eine hervorragende Beteiligung gelang es gemeinsam die App "EATracker" hervorzubringen.

Im Laufe des Projektes gewann jeder von uns immer mehr an Erfahrung. Vor allem, da viele von null anfangen mussten, hat sich jeder in seinen Fähigkeiten weiterentwickelt. Wir haben gelernt, wie man in React JS eine Anwendung erstellt, sowie Services und deren Endpunkte hinzuzufügen. Des Weiteren haben wir einen Einblick in die Bild-zu-Text-Verarbeitung erhalten. Die größte Herausforderung war vermutlich jedoch der gesamte Prozess selbst. Jeder musste lernen zu dokumentieren, auf gesetzte Vereinheitlichungen zu achten und vor allem Verantwortung für Aufgaben und Probleme zu übernehmen.

Alles in allem sind wir stolz auf unser Ergebnis in diesem Semester und gespannt, wo es mit dem EATracker noch so hingeht.

 

Don't Wait For Waste - Warte nicht auf den Abfall

Unter diesem Motto soll auch in Zukunft dieses Projekt weitergeführt werden. Zum heutigen Zeitpunkt haben wir eine App, mit der man einen Überblick über eingekaufte Lebensmittel erhält. Vor allem das Einlesen der Einkäufe durch eine Texterkennung sorgt für eine angenehme Handhabung.
Aber damit soll es nicht gewesen sein. Es gibt noch viele Funktionen unserer Vision, die wir noch nicht angehen konnten.
Wir streben folgende Ziele an:

Andere Produkte und Aufteilung

Auch andere Produkte, die ablaufen können (z.B. Medikamente) sollen mit in die App aufgenommen werden. Eine Einteilung in unterschiedliche Orte soll ebenfalls vorgenommen werden. Natürlich benötigt es dafür eine andere Handhabung im Rahmen der Haltbarkeit.

Mehrfachnutzung

Als App für den Normalverbraucher soll sie für mehrere Nutzer optimiert werden. So können mehrere Familienmitglieder eine Liste verwalten. Über eine Chatfunktion ist es möglich, sich auszutauschen und direkte Anmerkungen zu Lebensmittel und Mahlzeiten zu machen.

Rezeptvorschläge

Aus Dingen, die bald ablaufen, lässt sich auch etwas Schönes zaubern. Deswegen soll die App dem Nutzer "last minute" Rezept vorschlagen, um kritische Lebensmittel sofort zu verbrauchen.

Kooperation

Ein großes Ziel von uns ist, sich auf einen Markt zu fokussieren und eine Kooperation einzugehen. Wir würden somit viele Informationen über die Produkte erhalten. So könnten zum Beispiel zum Einlesen der Einkäufe noch das Mindesthaltbarkeitsdatum automatisch ergänzt werden. Aber auch Daten zur Lagerung und den Nährwerten würden uns vorliegen. Erste Gespräche hat es zu diesem Thema auch bereits gegeben. In einem Austausch mit Rewe kam heraus, dass eine Kooperation unter Umständen möglich sei.