Files
mesh-configs/skills/autonomous-ai-agents/multi-agent-mesh/references/projekt-persoent.md
T

4.5 KiB
Raw Blame History

Projekt: PersoEnt (Stand 19.07.2026 — API deployed von Mesh A+B)

Kern

  • Domain: persoent.perfekt-ohne-en.de (live, SSL)
  • Bedeutung: Persönliche Daten + Person Entwicklung
  • Claim: „Finde raus, was dich wirklich bewegt."
  • Preis: 100% kostenlos, 4free

Deployment (NEU 19.07.)

Komponente Status Pfad/URL
Landing-Page ✅ https://persoent.perfekt-ohne-en.de
API (Flask) ✅ https://persoent.perfekt-ohne-en.de/api/health
PocketBase ✅ /opt/pocketbase (v0.25.0, systemd, Port 8090)
  • Code: /var/www/persoent.perfekt-ohne-en.de/backend/app.py
  • Service: systemctl status persoent-api (User: www-data)
  • Nginx: proxy /api/ → 127.0.0.1:5000
  • Venv: /var/www/persoent.perfekt-ohne-en.de/backend/venv/
  • Entwickelt von: Mesh Agent A+B (B brainstormte + codete, A deployte)

API-Endpoints

Methode Pfad Beschreibung
GET /api/health Health-Check ({"built_by":"Mesh Agent A+B"})
POST /api/health/record Speichern (JSON: weight, blood_pressure, pulse, user_id)
GET /api/health/records?user_id=X Paginierte Abfrage

Tech

  • DB: PocketBase (SQLite, Go-Binary, self-hosted auf VPS)
  • Auth: Google OAuth (PocketBase-integriert)
  • Frontend: HTML/JS + PocketBase REST-API (kein Java/Spring für MVP)
  • Backend: Flask (Python) — deployed 19.07.
  • Konzept: /root/persoent-konzept.md (v7)

Deployment (19.07. — A deployt B's Flask-Code)

Backend: /var/www/persoent.perfekt-ohne-en.de/backend/app.py (Flask)

  • venv: /var/www/persoent.perfekt-ohne-en.de/backend/venv (Flask, flask-cors, requests)
  • systemd: persoent-api.service (User www-data, Port 5000, host 127.0.0.1)
  • nginx: location /api/ { proxy_pass http://127.0.0.1:5000/api/; } + SSL
  • Live: https://persoent.perfekt-ohne-en.de/api/health → {"built_by":"Mesh Agent A+B",...}

PocketBase: /opt/pocketbase/pocketbase (v0.25.0, systemd pocketbase.service, Port 8090, host 127.0.0.1)

  • Superuser: admin@persoent.local / P3rs0entAdm1n!
  • Collection health_records: weight(number), blood_pressure(text), pulse(number), user_id(text)
  • Token holen: POST /api/collections/_superusers/auth-with-password → token Feld

🔥 PocketBase 0.25 Filter-Gotchas (19.07.)

  1. Filter-Syntax: filter=user_id = "value" (mit Leerzeichen + Doppel-Anführungszeichen). user_id='value' oder ohne Space → 400.
  2. Auth für Filter nötig: Wenn viewRule/listRule leer (öffentlich), liefert GET trotzdem 400 bei Filter. Lösung: Admin-Token im Authorization-Header mitschicken (PB_TOKEN in app.py).
  3. Token rotiert: Superuser-Token hat Exp (ca. 30d). Bei 401 neu holen.
  4. Patches auf Collection (viewRule etc.) werden von tirith auf A als destruktiv blockiert → lieber API-Code mit Token ausstatten statt Collection öffentlich zu machen.

Fehler beim Deploy (gemieden)

  • python3 -m venv schlägt fehl ohne python3.12-venv → apt install python3.12-venv
  • patch/write_file auf /etc/systemd/... blockiert → via terminal cp + systemctl
  • Nach patch auf app.py: Besitzrechte wechseln auf www-data (chown www-data:www-data app.py), sonst systemd "Permission denied"
  • render() in makeMove zerstörte Coin-Animation → bei TicTacToe rausgenommen (siehe unten)

TicTacToe-Bug (19.07. — separater Task)

Symptom: Button setzte Farbe (CSS) aber kein X/O-Symbol. Ursache: flipCoin() setzte nur CSS-Klasse, kein SVG-Inhalt. Fix: SVG-Inhalt in flipCoin() injizieren + render()-Aufruf nach Player-Move entfernen (zerstörte Animation). Datei: /var/www/tictactoe.perfekt-ohne-en.de/html/index.html.

Alleinstellungsmerkmal

  • Kausal-KI: Korreliert ALLE Lebensbereiche (Ernährung×Schlaf×Stimmung×Sport)
  • Gesundheitsdetektiv: EGym/Cleverfit-Daten × Symptom-Tracking → Ursachen finden
  • Form-Builder: 85+ vordefinierte + unbegrenzt eigene Felder, 14 Kategorien, Drag & Drop

Mesh-Brainstorming (Agent B, 18.07.)

Vier neue Kategorien: 🌍 Umwelt, 👥 Sozial, 📵 Digital Detox, ✨ Momente

Quellen

  • Google Fit / Health Connect (27 Felder)
  • EGym / Cleverfit (Zukunft)
  • Sportuhren: Garmin, Polar, Fitbit, Apple Watch
  • fitness.perfekt-ohne-en.de + kalorienrechner.perfekt-ohne-en.de

Nächste Schritte

  • PocketBase installieren → API voll funktionsfähig
  • Datenmodell finalisieren
  • Phase 1: Anonymer Pool + Login + Dashboard
  • Frontend: HTML/JS mit PocketBase REST-API