Mechanical reformat — no logic changes. 398 files changed, 19125 insertions(+), 16457 deletions(-). Prettier 3.8.4 with .prettierrc (singleQuote:true, semi:true, tabWidth:2, trailingComma:all, printWidth:100). Isolated per D-13-08 for reviewability.
2.1 KiB
Research Questions
Open
RQ-003 — Fastmail calendar API: JMAP vs CalDAV
Question: For the custom app to read AND write the shared family calendar on Fastmail, is JMAP or CalDAV the cleaner integration? Can a scoped Fastmail API token grant calendar read-write without exposing the full account?
Why it matters: The app brokers calendar access for all Apple members via the PWA, so reliable programmatic read-write to the Fastmail calendar is core. JMAP is Fastmail-native and modern; CalDAV is the interoperable standard.
Suggested approach: Check Fastmail JMAP Calendars docs + API token scoping. Confirm event create/update/delete works via token. Compare to CalDAV (sabre-dav style) effort.
Resolved
RQ-001 — Vikunja MariaDB compatibility — SUPERSEDED
Vikunja was dropped from the architecture (lists now live in the custom app's own MariaDB). The
MariaDB findings still apply to the custom app itself: use MariaDB 10.6+, set utf8mb4 collation,
pin versions before upgrades.
RQ-002 — CalDAV server: Radicale vs Baikal — SUPERSEDED
Both dropped. The shared calendar now lives on Fastmail, not a self-hosted CalDAV server. Rationale: the Fastmail Android app cannot display a self-hosted CalDAV calendar, so Baikal gave the primary (Android/Fastmail) user no native benefit — it only helped Apple members, who are equally served by the PWA. Fastmail-hosted removes a self-hosted service while keeping native access for the Fastmail user and PWA access for everyone.
Original finding (retained for reversibility): if self-hosting the calendar is ever required, Baikal
(ckulka/baikal) is the pick over Radicale — Radicale has no native shared-calendar write support.
Calendar host decision — RESOLVED
Self-hosting the calendar data was evaluated and rejected. Fastmail (already paid for) hosts the shared family calendar. Other household members are Apple — they reach it via the PWA (default) or native Apple Calendar over CalDAV (optional).
Email scope — RESOLVED
Out of scope. Members keep existing mail clients unchanged.