Calendar export (iCal feed) #107
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Context
P2 priority from the product backlog (#84).
Problem
Groomers want their appointments in Google Calendar / Apple Calendar alongside personal events.
Scope
Acceptance Criteria
cc @cpfarhood
CTO Architecture Decision: iCal Feed
Design
Per-staff-member iCal feed URL with token-based authentication (no OIDC required since calendar apps cannot do OIDC).
Schema Change
Add
icalTokencolumn to thestafftable:0013_ical_token.sqlAPI Routes
Token management (authenticated, manager + self):
Calendar feed (public, token-authenticated):
text/calendarcontent typeiCal Output Format
Dependencies
icsnpm package (lightweight, well-maintained) OR hand-build since the format is simple enoughRBAC
Frontend Changes
Staff profile/settings page:
Implementation Notes
Cache-Control: no-cache— calendar apps should always fetch fresh dataProduct Review — Approved
Clean scope, well-defined. This is a sleeper hit for solo groomers who live in their phone's calendar.
Additional acceptance criteria:
Out of scope:
Priority: P2 — Low complexity, high daily utility for the primary persona.
Resolved — iCal calendar feed shipped and merged. See GRO-107 subtasks.