Live-App: https://nile4000.github.io/mymenu/#/
My Menü ist eine Web-App zum Erfassen, Strukturieren und Auswerten von Einkaufsbelegen. Die App liest PDF-Belege ein, extrahiert daraus Artikel, Preise, Mengen und Belegmetadaten und macht die Daten in einer übersichtlichen Oberfläche nutzbar.
Der Fokus liegt auf Schweizer Einkaufsbelegen von Coop/Supercard und Migros/Cumulus. Importierte Artikel können gefiltert, korrigiert, kategorisiert und für Rezeptvorschläge verwendet werden.
- PDF-Belege hochladen und auslesen
- Artikel, Mengen, Preise, Rabatte und Belegmetadaten strukturiert erfassen
- Einkaufsartikel nach Kategorien auswerten
- Einheiten wie
g,kg,ml,loderstkautomatisch erkennen - Kategorien zentral über das Backend bereitstellen
- Rezeptvorschläge aus vorhandenen Artikeln erzeugen
- Ausgaben nach Beleg, Zeitraum und Kategorie analysieren
- Supercard-Belege über eine manuelle Session synchronisieren
| Funktion | Beschreibung |
|---|---|
| Beleganalyse | PDF-Text wird im Backend vorbereitet und per OpenAI in strukturiertes JSON umgewandelt |
| Kategorisierung | Artikel werden über einen Kategorisierungsservice Einkaufskategorien zugeordnet |
| Einheitenerkennung | Aus Artikelnamen und Preisen werden sinnvolle Einheiten extrahiert |
| Rezeptgenerierung | Aus vorhandenen Lebensmitteln erstellt die AI deutschsprachige Rezeptvorschläge |
mymenu/
├── frontend/ # Quasar/Vue 3 SPA
├── middleware/ # Kotlin/Quarkus REST API
├── categorization-srv/ # Embedded Python Cotegorization Service
├── database/ # SQL-Schema, Migrations, Snapshots
└── docker-compose.yml
| Schicht | Technologie |
|---|---|
| Frontend | Vue 3, Quasar, TypeScript, Pinia, Supabase Client |
| Backend | Kotlin 2.1, Quarkus 3.22, Maven, JDBC/PostgreSQL |
| Datenhaltung | Supabase (PostgreSQL) |
| AI | OpenAI API, Embedded Categorization Service |
| Deployment | GitHub Pages (Frontend), Docker (Backend) |
| Methode | Pfad | Beschreibung |
|---|---|---|
POST |
/api/extract-pdf |
PDF-Beleg auslesen |
GET |
/api/categories |
Verfügbare Kategorien abrufen |
POST |
/api/ai/categorize |
Artikel kategorisieren |
POST |
/api/ai/extract-unit |
Einheiten aus Artikeln extrahieren |
POST |
/api/ai/recipe |
Rezept aus Artikeln erstellen |
GET |
/api/integrations/supercard/status |
Supercard-Session prüfen |
GET |
/api/integrations/supercard/available |
Verfügbare Supercard-Belege anzeigen |
POST |
/api/integrations/supercard/sync |
Supercard-Belege importieren |
Backend:
cd middleware
quarkus devFrontend:
cd frontend
npm install
npm run startDocker (alle Services):
docker-compose upVor dem Start die Umgebungsvariable
OPENAI_API_KEYsetzen – entweder per.env-Datei im Projektroot oder als Shell-Variable. Docker Compose liest.envautomatisch ein.
Categorization Service (FastAPI):
Läuft auf Port 8000. Die interaktive API-Dokumentation ist erreichbar unter:
- Swagger UI:
http://localhost:8000/docs - ReDoc:
http://localhost:8000/redoc
