Skip to content

Fullstack Lebensmittelbewertungs-App (Spring Boot + PostgreSQL + React/Vite)

Notifications You must be signed in to change notification settings

Oezguercancevlani/FoodScore

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 FoodScore

Transparente Lebensmittelbewertung jenseits des Nutri-Scores
Fullstack Web-App (React · Spring Boot · PostgreSQL · Python)

Java Spring Boot React

📸 Screenshots & Features

🏠 Startseite

FoodScore Startseite mit Suchfeld

📦 Alle Produkte

Alle Produkte Übersicht mit Filtern

🧰 Erweiterte Filteransicht

Alle Produkte mit ausgeklappter Filtersektion

📚 Zutaten-Dictionary

Zutaten Dictionary mit Score-Bedeutung

⚠️ Kritische Zutaten

Kritische Zutaten mit niedrigen Scores

🔎 Produktdetails & FoodScore

Produktdetailseite mit FoodScore 100

📊 Produktvergleich – Detailtabelle

Produktvergleich vollständige Tabelle

🆚 Produktvergleich – Übersicht

Produktvergleich Übersicht mit mehreren Produkten

🚀 FoodScore – Fullstack Lebensmittelbewertungssystem 🧠 Projektidee

FoodScore ist eine Fullstack-Webanwendung zur automatisierten Bewertung von Lebensmitteln anhand ihrer Zutatenliste, Nährwerte und Verarbeitungsindikatoren.

💡 Ziel: Verbrauchern & Händlern eine transparente, leicht verständliche Bewertung der Gesundheit eines Produkts zu liefern – als Alternative zum oft kritisierten Nutri-Score.

Das System umfasst:

  • Web-Scraping von tausenden Produkten
  • Datenbereinigung & Datenbankmodell
  • KI-unterstützte Zutatenbewertung
  • mathematische Bewertungsformel
  • Fullstack Web-App (React + Spring Boot)

⭐ Kernfeatures 🔎 Produktsuche & Autocomplete

Finde Produkte in Echtzeit mittels Prefix-Suche & Ergebnisvorschlägen.

🛒 Produktdetails

Jedes Produkt zeigt:

  • Name, Kategorie, Marke
  • Bild
  • Preis
  • Zutaten
  • Nährwerte
  • FoodScore (0–100) + verbale & farbliche Klassifizierung

📊 Produktvergleich

Vergleiche bis zu fünf Produkte:

  • Preis
  • Score
  • Kalorien
  • Fett / Zucker / Salz
  • Nährwertmatrix
  • Zusammenfassender “Winner Report”

📚 Zutaten-Lexikon

Alle bewerteten Zutaten + ihre Scores in einer browsable Liste.

⚙️ Backend-Funktionen

  • Score-Berechnung für einzelne oder alle Produkte
  • Filter: Kategorie | Marke | Preisbereich | Zutaten
  • REST-API für zukünftige mobile Apps nutzbar

🧮 FoodScore-Formel (Kurzfassung)

Die Formel kombiniert:

  • Zutatenqualität (Si) – KI-Bewertung jeder Zutat (1–100)
  • Positionsgewichtung (Gi = 1 / √(i+1))
  • Verarbeitungsgrad-Malus basierend auf der Zutatenlistenlänge
  • Gewichteter Durchschnitt – Malus → Endscore 0–100

🧪 KI-gestützte Zutatenbewertung

Zur Score-Zuweisung der 1000+ Zutaten wurde GPT-5 Thinking Mode genutzt:

  • evidenzbasierte Scoring-Kriterien
  • weniger Bias als manuelle Bewertungen
  • konsistente Normalisierung von Zutatenvarianten
  • reproduzierbare Bewertungspipeline

🧱 Technologie-Stack

Frontend:

  • React (Vite)
  • TailwindCSS
  • Axios
  • React Router
  • Zustand / lokale Hooks für State Management

Backend:

  • Java 21
  • Spring Boot 3.5
  • Spring Data JPA
  • REST API
  • Zutaten-Parser & Score-Engine

Datenbank:

  • PostgreSQL 15
  • CSV-Import über pgAdmin
  • Entities: produkt & zutaten_score

Scraping / Data Engineering:

  • Python
  • Playwright (Browser-Automation)
  • BeautifulSoup (HTML Parsing)
  • ETL-Pipeline über Python-Skripte

🏛️ Softwarearchitektur

  • Schichtenarchitektur (Controller, Service, Repository)
  • Ergänzt durch MVC-Komponenten im Web-Kontext
  • Loose Coupling via REST
  • Frontend & Backend vollständig getrennt deploybar
  • Datenbereinigung mit ETL-Ansatz

📂 Projektstruktur ℹ️ Hinweis: Die vollständige Projektstruktur ist im Code-Tab der README ersichtlich.

FoodScore/ │ ├── Frontend/ │ └── lebensmittel-score-frontend/ │ ├── src/ │ │ ├── assets/ │ │ │ └── react.svg │ │ ├── Clients/ │ │ │ ├── ProduktClient.js │ │ │ └── VergleichsClient.js │ │ ├── components/ │ │ │ └── ScoreBadge.jsx │ │ ├── hooks/ │ │ │ └── ProduktVergleich.js │ │ ├── App.jsx │ │ ├── FliegendeEmojis.jsx │ │ ├── LebensmittelListe.jsx │ │ ├── main.jsx │ │ ├── ProduktDetails.jsx │ │ ├── Suche.jsx │ │ ├── VergleichsSeite.jsx │ │ └── ZutatenListe.jsx │ │ │ ├── public/ │ │ └── vite.svg │ ├── package.json │ ├── package-lock.json │ ├── vite.config.js │ ├── tailwind.config.js │ ├── eslint.config.js │ ├── PriceRangeSlider.jsx │ ├── index.html │ ├── postcss.config.js │ └── README.md │ ├── docs/ │ └── Installation_Guide.pdf │ └── images/ │ ├── FoodScore1.png │ ├── FoodScore2.png │ ├── FoodScore3.png │ ├── FoodScore4.png │ ├── FoodScore5.png │ ├── FoodScore6.png │ ├── FoodScore7.png │ └── FoodScore8.png │ ├── src/ │ └── main/ │ ├── java/com/example/FoodScore/ │ │ ├── Controller/ │ │ │ ├── ProduktController.java │ │ │ ├── ProduktScoreController.java │ │ │ └── VergleichController.java │ │ │ │ │ ├── Persistenz/ │ │ │ ├── Daten/ │ │ │ │ ├── edeka24Daten.csv │ │ │ │ ├── Lebensmitteldaten.csv │ │ │ │ └── myTimeDaten.csv │ │ │ ├── Produkt.java │ │ │ ├── ProduktRepository.java │ │ │ └── ZutatenScore.java │ │ │ │ │ ├── Service/ │ │ │ ├── ProduktService.java │ │ │ ├── ProduktScoreService.java │ │ │ ├── ZutatenDictionary.java │ │ │ └── ZutatenFileLoader.java │ │ │ │ │ └── FoodScoreApplication.java │ │ │ └── resources/ │ ├── application.properties │ └── Zutatenliste mit Scores.py │ ├── .gitignore ├── .gitattributes ├── pom.xml ├── Commands für uns ├── mvnw ├── mvnw.cmd └── README.md

Wichtig: Die Installation_Guide.pdf enthält alle Setup-Schritte — bitte zuerst lesen. ⚠️ Hinweis: Vor dem Start der Anwendung muss der Platzhalter CHANGE_ME in der Datei application.properties durch das eigene PostgreSQL-Passwort ersetzt werden.

Backend starten:

  • cd foodscore
  • mvn clean install
  • mvn spring-boot:run

Frontend starten:

  • cd Frontend/lebensmittel-score-frontend
  • npm install
  • npm run dev

🎯 Ziele & Mehrwert

Für Nutzer:

✔ verständlicher Gesundheits-Score ✔ bessere Kaufentscheidungen ✔ Transparenz über komplexe Zutatenlisten

Für Händler:

✔ Produktsortiment optimieren ✔ Preis-Leistungs-Strategien ✔ Trends zu “gesunden Produkten” nutzen

📜 Lizenz MIT License – Nutzung für Studium & private Projekte erlaubt.


🎓 Ein Projekt der Universität Duisburg-Essen


👥 Team

Name Rolle
Özgürcan Backend Lead, Score-Parser, Formel, wissenschaftliche Kapitel
Emirhan Bewertungslogik, wissenschaftlicher Teil, Validierung
Cenk Frontend Lead, Edeka-Scraper, Architektur
Ratheesh MyTime-Scraper, Nährwert-Recherche, Projektmethodik
Demian Stakeholder-Analyse, Ökonomie, GitLab-Management

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •