1cada42370
Single notification path via ntfy HTTP publish for reliable Android delivery; remove VAPID, push subscriptions, and SW push handlers. PWA settings show topic subscribe link; humor texts and deep-link actions unchanged. Co-authored-by: Cursor <cursoragent@cursor.com>
96 lines
3.7 KiB
Markdown
96 lines
3.7 KiB
Markdown
# SOUL.md — TakeYourMeds
|
|
|
|
Persönliche Medikamenten-PWA — nicht der Chat-Mood (siehe `MOOD.md`).
|
|
|
|
---
|
|
|
|
## Agent Quick Start
|
|
|
|
| | |
|
|
|---|---|
|
|
| **Was** | Single-User PWA: Med-Erinnerungen, Einnahme-Log, Streak/Heatmap, sarkastischer Humor |
|
|
| **Domain** | [medis.schwenk.online](https://medis.schwenk.online) |
|
|
| **Stack** | FastAPI + SQLite + Vanilla JS PWA, ntfy, APScheduler |
|
|
| **Deploy** | Docker Compose auf `boka` → `/home/frank/medis.schwenk.online` (Fränky deployt) |
|
|
| **Secrets** | `.env` only — PIN, JWT, NTFY_TOKEN, OpenRouter |
|
|
| **Tests** | Pragmatisch — keine Pflicht-Suite; manuell ntfy + PWA prüfen |
|
|
| **Commit** | Nur auf explizite Anweisung |
|
|
|
|
---
|
|
|
|
## Product Name
|
|
|
|
**TakeYourMeds** (intern: medis)
|
|
|
|
## One-Liner
|
|
|
|
Persönliche Medikamenten-PWA mit dezenten Erinnerungen, Einnahme-Logging und sarkastischem Humor — für ADHS-realistische Routinen.
|
|
|
|
## Vision
|
|
|
|
Medikamente nicht vergessen, ohne Schuld-Trip oder Alarm-Hölle. Die App erinnert dezent, loggt Einnahmen, zeigt Fortschritt (Streak, Heatmap) und liefert kleine Dopamin-Hits — weil ADHS-Gehirne Belohnung brauchen, nicht noch eine To-do-Liste.
|
|
|
|
## Audience
|
|
|
|
**Fränky** — Single-User, persönliches Gerät (Android PWA + Desktop). Erwartet: zuverlässige Reminder, schnelle „genommen"-Aktion, ehrlicher Ton, kein Corporate-Bullshit.
|
|
|
|
## Tone & Wording
|
|
|
|
Wie in `messages.yaml` — direkt, sarkastisch, ADHS-aware, liebevoll unter der Schicht:
|
|
|
|
- **Voice:** Du, trocken, selbstironisch, kein Motivations-Coach
|
|
- **Formality:** casual (Du)
|
|
- **Error messages:** ehrlich + hilfreich („Push nicht konfiguriert" statt „Etwas ist schiefgelaufen")
|
|
- **Forbidden:** LinkedIn-Sprech, „leverage", „synergy", übertriebene Wellness-Floskeln, Schuld-Trips
|
|
|
|
### Wording Examples
|
|
|
|
| Context | Good | Bad |
|
|
|---------|------|-----|
|
|
| Success | „Genommen! Dein Gehirn gibt dir einen langsamen High-Five." | „Großartig! Du hast heute wieder Großes geleistet! 🎉" |
|
|
| Error | „Reminder kommt nicht — NTFY_TOKEN in .env?" | „Ein unerwarteter Fehler ist aufgetreten." |
|
|
| Empty state | „Noch nichts geloggt. Typisch." | „Beginne deine Wellness-Journey!" |
|
|
|
|
## Design
|
|
|
|
- **Palette:** `#F12F12` (theme_color), utilitarian PWA
|
|
- **Feel:** minimal, schnell, mobile-first — keine Deko-Orgie
|
|
|
|
## Non-Goals
|
|
|
|
- Kein Multi-User / keine Accounts für andere
|
|
- Kein SaaS, kein App-Store-Launch
|
|
- Keine Dark Patterns (Streak-Shaming, Paywall, Engagement-Bait)
|
|
- Kein Medizin-Ratgeber — nur Erinnerung & Logging
|
|
- Kein Build-Step-Frontend (Vanilla JS bleibt)
|
|
|
|
## Infrastructure (project-local)
|
|
|
|
| | |
|
|
|---|---|
|
|
| Server | `boka` (Debian 12) |
|
|
| Path | `/home/frank/medis.schwenk.online` |
|
|
| Domain | `medis.schwenk.online` |
|
|
| DB | `data/medis.sqlite` (Volume) |
|
|
| Config | `meds.yaml`, `messages.yaml` (read-only mounts) |
|
|
| Push | ntfy → [ntfy.schwenk.online](https://ntfy.schwenk.online/) Topic `takeyourmeds` |
|
|
|
|
## Project-Specific Rules
|
|
|
|
- **ntfy only** — Server publiziert Reminder; ntfy-App auf dem Handy empfängt. Kein Web Push/VAPID.
|
|
- **`reminder_window_minutes: 90`** — nicht sofort „verpasst" um 08:01; ADHS-realistisch
|
|
- **Abend-Check 21:00** — überfällige Slots → `missed`
|
|
- **Roast/Motivation** — OpenRouter optional; Notifications nutzen statische `messages.yaml`
|
|
- **PIN in .env** — Single-User, `hmac.compare_digest`; kein Over-Engineering
|
|
- **Kein nginx** — FastAPI serviert API + Static (KISS)
|
|
- **Service Worker** — aggressives Caching; bei SW-Änderungen `version.json` bumpen
|
|
|
|
---
|
|
|
|
## Agent Instructions
|
|
|
|
- `SOUL.md` > `STANDARDS.md` für UI/UX und Produkt-Ton
|
|
- Secrets nie committen — Token/Keys nur `.env`
|
|
- Deploy: Fränky, außer explizit anders gesagt
|
|
- Neue Regeln hier oder in `BOUNDARIES.md` — Agent schlägt vor, Fränky bestätigt
|