Files

1 line
4.7 KiB
JSON

{"repo": "aidun/mealplanner", "files": {"README.md": {"2e1cfa7bd1042c29f0d8e98eb453a4ea8a8b951a": {"t": 1785674374.716126, "n": 4441, "h": "0f02ea0d1d5a8a6e", "c": "# Mahlio\n\nKI-gestützter Wochenessensplaner für Familien. Open Source, self-hosted, auf Kubernetes bereit.\n\nMahlio nutzt ein großes Sprachmodell (LLM), um personalisierte Wochenpläne basierend auf Familienvorlieben, Diäten und Verfügbarkeiten zu erstellen. Alle Daten bleiben unter deiner Kontrolle — auf deinem Server.\n\n---\n\n## Quickstart mit Docker Compose\n\n### Voraussetzungen\n\n- Docker und Docker Compose\n- (Optional) OpenAI API-Schlüssel für LLM-Features\n\n### 3 Schritte zum Starten\n\n1. **`.env` erstellen** (von `.env.example` kopieren und anpassen):\n ```bash\n cp .env.example .env\n ```\n Mindestens setzen:\n - `SESSION_SECRET`: Beliebig langer String (z.B. `$(openssl rand -hex 32)`)\n - `API_SECRET`: Beliebig langer String\n - Wenn du OpenAI nutzen möchtest: `OPENAI_API_KEY=sk-...`\n\n2. **Docker Compose starten**:\n ```bash\n docker compose up -d\n ```\n Das startet PostgreSQL, Backend und Frontend.\n\n3. **Browser öffnen**:\n ```\n http://localhost:5173\n ```\n Fertig! Erstelle einen Account und starte mit der Essensplanung.\n\nWeitere Infos: siehe `docker-compose.yml` und `.env.example`.\n\n---\n\n## Konfiguration\n\nAlle Einstellungen laufen über Umgebungsvariablen:\n\n| Variable | Bedeutung | Beispiel |\n|----------|-----------|---------|\n| `SESSION_SECRET` | Geheim für Session-Cookies | `openssl rand -hex 32` |\n| `API_SECRET` | Geheim für JWT/Token-Signierung | `openssl rand -hex 32` |\n| `DATABASE_URL` | PostgreSQL-Connection-String | `postgres://user:pass@localhost/mahlio` |\n| `PROVIDER_MODE` | `mock` (Test) oder `live` (LLM-Calls) | `mock` (default) |\n| `OPENAI_API_KEY` | OpenAI API-Schlüssel (falls `PROVIDER_MODE=live`) | `sk-...` |\n| `OPENAI_BASE_URL` | Alternative API-Basis-URL | `https://api.openai.com/v1` (default) |\n| `OPENAI_MEAL_MODEL` | LLM-Modell für Essensplanung | `gpt-4o-mini` (default) |\n| `CORS_ORIGINS` | Erlaubte Frontend-Origins (komma-separiert) | `http://localhost:5173,https://myapp.com` |\n\nFür die vollständige Liste und Defaults siehe `backend/api/cmd/api/main.go`.\n\n---\n\n## LLM-Provider\n\nMahlio funktioniert mit jedem OpenAI-API-kompatiblen Provider:\n\n### OpenAI\nStandard. `OPENAI_API_KEY` reicht.\n\n### Ollama (lokal)\n```bash\n# Ollama lokal starten (z.B. auf Port 11434)\nollama serve\n\n# In .env:\nOPENAI_BASE_URL=http://host.docker.internal:11434/v1\nOPENAI_MEAL_MODEL=llama2\n# (bei Docker Desktop; für Linux: IP des Hosts statt host.docker.internal)\n```\n\n### Groq\nKostenlos, schnell. `OPENAI_API_KEY` auf einen Groq-Key setzen:\n```bash\nOPENAI_BASE_URL=https://api.groq.com/openai/v1\nOPENAI_API_KEY=gsk_...\nOPENAI_MEAL_MODEL=mixtral-8x7b-32768\n```\n\nJeder OpenAI-API-kompatible Provider funktioniert via `OPENAI_BASE_URL`.\n\n---\n\n## Kubernetes / ArgoCD\n\nFür Production-Deployments nutze **Kustomize** + **ArgoCD**:\n\n### Struktur\n\n- `deploy/base/` — Standard-Konfiguration (Deployment, Service, ConfigMap, Secrets)\n- `deploy/argocd/` — ArgoCD Application-Definition\n- `deploy/test/` — Test-Overlay mit Test-DB und Dev-Settings\n- `deploy/production/` — Production-Overlay (hardened, replicas=2+, resource limits)\n\n### Deploy mit ArgoCD\n\n1. **Application erstellen**:\n ```bash\n kubectl apply -f deploy/argocd/application.yaml\n ```\n\n2. **ArgoCD wird das Manifest synchen**:\n ```bash\n argocd app get mahlio\n argocd app sync mahlio\n ```\n\nÄnderungen erfolgen nur über Git-Commits in diesem Repo — kein direktes `kubectl apply`.\n\nSiehe auch `docs/ARCHITECTURE.md` für die volle Cluster-Übersicht.\n\n---\n\n## Bring-Integration\n\nMahlio kann Essensplaene in **Bring!** (Einkaufslisten-App) exportieren.\n\n### Voraussetzung\n\nDie Export-URL muss vom Mobilgerät erreichbar sein. In lokalen Setups meist ein Problem — nutze ein Reverse-Proxy oder Tunnel:\n\n```bash\n# z.B. ngrok oder Cloudflare Tunnel\ncloudflare-cli tunnel --url http://localhost:5173\n# Dann die öffentliche URL in Bring eintragen\n```\n\nIn Production: `BRING_WEBHOOK_URL` auf die öffentliche HTTPS-URL setzen.\n\n---\n\n## Entwicklung\n\nBackend:\n```bash\ncd backend/api\nDATABASE_URL='postgres://user:pass@localhost/mahlio' go run ./cmd/api\n```\n\nFrontend:\n```bash\ncd frontend\nnpm ci\nnpm run dev\n```\n\nTests:\n```bash\ncd backend/api && go test ./... && cd ../../frontend && npm test\n```\n\nSiehe `docs/ARCHITECTURE.md` für Service-Übersicht und `docs/API.md` für die Backend-API.\n\n---\n\n## Lizenz\n\nMIT — siehe `LICENSE`.\n\n---\n\n## Beitragen\n\nWir freuen uns über Bug-Reports und Pull Requests! Siehe `CONTRIBUTING.md` für Richtlinien.\n"}}}}