initial
This commit is contained in:
118
README.md
Normal file
118
README.md
Normal file
@@ -0,0 +1,118 @@
|
||||
# Food Scanner
|
||||
|
||||
## Features
|
||||
|
||||
- **Automatischer Barcode Scanner** - Scannt 1D & 2D Barcodes (EAN, UPC, QR-Codes)
|
||||
- **Vegan-Analyse** - Erkennt tierische Zutaten und offizielle Vegan-Labels
|
||||
- **Gewichtsverlust-Score** - Bewertet Produkte von 0-100 basierend auf:
|
||||
- Kalorien
|
||||
- Zucker
|
||||
- Fett & gesättigte Fettsäuren
|
||||
- Protein (sättigend!)
|
||||
- Ballaststoffe (sättigend!)
|
||||
- Natrium
|
||||
- **Detaillierte Analyse** - Pro & Contra Listen für jedes Produkt
|
||||
- **Open Food Facts API** - Zugriff auf riesige Produktdatenbank
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
# Dependencies installieren
|
||||
npm install
|
||||
|
||||
# Development Server starten
|
||||
npm run dev
|
||||
|
||||
# App öffnen
|
||||
# http://localhost:4321
|
||||
```
|
||||
|
||||
## Wie es funktioniert
|
||||
|
||||
### 1. Barcode Scannen
|
||||
|
||||
```typescript
|
||||
// ZXing scannt automatisch Barcodes
|
||||
const codeReader = new ZXing.BrowserMultiFormatReader();
|
||||
await codeReader.decodeFromVideoDevice(deviceId, videoElement, callback);
|
||||
```
|
||||
|
||||
### 2. Produkt abrufen
|
||||
|
||||
```typescript
|
||||
// Axios ruft Open Food Facts API auf
|
||||
const response = await axios.get(
|
||||
`https://world.openfoodfacts.org/api/v2/product/${barcode}.json`,
|
||||
);
|
||||
```
|
||||
|
||||
### 3. Vegan-Analyse
|
||||
|
||||
```typescript
|
||||
function analyzeVegan(product) {
|
||||
// Prüft Labels
|
||||
if (labels.includes('en:vegan')) return true;
|
||||
|
||||
// Sucht nach tierischen Zutaten
|
||||
const animalIngredients = ['milch', 'ei', 'honig', ...];
|
||||
// ... Analyse Logik
|
||||
}
|
||||
```
|
||||
|
||||
### 4. Gewichtsverlust-Analyse
|
||||
|
||||
```typescript
|
||||
function analyzeWeightLoss(product) {
|
||||
let score = 100;
|
||||
|
||||
// Kalorien (wichtigster Faktor)
|
||||
if (calories < 50) score += 10;
|
||||
else if (calories > 400) score -= 40;
|
||||
|
||||
// Zucker (kritisch für Gewichtsverlust)
|
||||
if (sugar > 20) score -= 30;
|
||||
|
||||
// Protein & Ballaststoffe (gut - sättigend!)
|
||||
if (protein > 15) score += 15;
|
||||
if (fiber > 6) score += 15;
|
||||
|
||||
// ... weitere Faktoren
|
||||
return score; // 0-100
|
||||
}
|
||||
```
|
||||
|
||||
## 🎯 Bewertungs-System
|
||||
|
||||
### Vegan Score
|
||||
|
||||
- ✅ **Vegan** - Offiziell zertifiziert oder keine tierischen Zutaten
|
||||
- ❌ **Nicht Vegan** - Enthält tierische Produkte
|
||||
- ❓ **Unklar** - Status nicht eindeutig
|
||||
|
||||
### Gewichtsverlust Score
|
||||
|
||||
- 🌟 **80-100**: Excellent - Perfekt für Diät
|
||||
- ✅ **60-79**: Good - In normalen Mengen okay
|
||||
- ⚠️ **40-59**: Moderate - Kleine Portionen
|
||||
- ❌ **20-39**: Poor - Besser vermeiden
|
||||
- 🚫 **0-19**: Avoid - Nicht empfohlen
|
||||
|
||||
## Datenschutz
|
||||
|
||||
- Keine Daten werden gespeichert
|
||||
- Alle Anfragen gehen direkt an Open Food Facts API
|
||||
- Kamera wird nur mit Erlaubnis verwendet
|
||||
- Keine Tracking oder Analytics
|
||||
|
||||
## Contributing
|
||||
|
||||
Feature Ideen:
|
||||
|
||||
- [ ] Allergen-Warnung
|
||||
- [ ] PWA Support (Offline-Modus)
|
||||
|
||||
## Bekannte Probleme
|
||||
|
||||
- Manche Produkte sind nicht in der Datenbank
|
||||
- Barcode-Scanner funktioniert nur mit HTTPS
|
||||
- Einige Browser unterstützen Kamera nicht
|
||||
Reference in New Issue
Block a user