No description
- HTML 70.7%
- Python 28.5%
- Dockerfile 0.8%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
- Standard-PIN von 13337 auf 1337 geändert (EXTRACT_PIN). - Numpad reagiert jetzt auf pointerdown statt click (kein Tap-Delay), touch-action: manipulation und direktes :active-Feedback. - Lange Zutatenlisten/Screenshots: num_predict auf 8192 erhöht und parse_model_json tolerant gemacht — Fences mit Text drumherum, und bei abgeschnittenen Antworten werden alle vollständigen Zutaten-Objekte gerettet statt mit 502 zu scheitern. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
||
| app | ||
| .env.example | ||
| .gitignore | ||
| docker-compose.prod.yml | ||
| docker-compose.yml | ||
| Dockerfile | ||
| README.md | ||
| requirements.txt | ||
Bring AI 🛒
Rezept reinpasten oder Foto hochladen → KI (Gemma 4 über Ollama Cloud) extrahiert die Zutaten → ab in die Bring!-Einkaufsliste.
- Foto: wird im Browser auf max. 1280px verkleinert und nur für den einen KI-Request durchgereicht — der Server speichert nichts, nach der Extraktion wird es auch im Browser verworfen.
- Code-Schutz: vor jeder Extraktion erscheint ein Nummern-Pad; der Code wird serverseitig geprüft (
EXTRACT_PINin der.env, Standard1337).
Setup
-
In der
.envdeine Bring!-Zugangsdaten eintragen (BRING_EMAIL,BRING_PASSWORD). -
Starten:
docker compose up --build -d -
http://localhost:8000 öffnen, Rezept einfügen, Zutaten prüfen, hinzufügen.
Deployment (bring.wasilewski.io)
docker compose -f docker-compose.prod.yml up -d --build
Keine published Ports — der Container hängt im externen reverse-proxy-hosts-Netz; im Nginx Proxy Manager zeigt der Host bring.wasilewski.io auf Container bring-ai, Port 8000.
Wie es funktioniert
- Backend: FastAPI (
app/main.py) - Zutaten-Extraktion: Ollama Cloud (
/api/chat) mit strukturiertem JSON-Output, Modell perOLLAMA_MODELkonfigurierbar (Standard:gemma4:31b) - Bring!: bring-api (inoffizielle Python-Library, gleiche wie in Home Assistant)
API
| Endpoint | Beschreibung |
|---|---|
GET /api/lists |
Deine Bring!-Listen |
POST /api/extract |
{"text": "..."} → extrahierte Zutaten |
POST /api/add |
{"list_uuid": "...", "items": [{"name": "...", "spec": "..."}]} |