Read-only calendar web viewer served from Omni.Web at /cal. Reads ICS files from ~/Calendars/ (synced by vdirsyncer). No CRUD — use Apple Calendar or khal for editing.
Pain points solved
- No good calendar app on Linux
- macOS calendar shows full week even on Friday (want to see future, not past)
- Want multiple views: waterfall timeline, agenda, rolling week, gantt, fortnight
- Search that just lists results instead of redrawing the calendar
- Web-based so it works on all platforms
Architecture
- Parse ICS directly from filesystem using iCalendar Haskell library
- Cache in memory with mtime-based invalidation (vdirsyncer runs every 15min)
- Wai app mounted at /cal in Omni.Web.Core
- Lucid HTML + Clay CSS using existing Omni.Web.Style design system
- Minimal JS for scroll loading and calendar toggles
Calendars
- bensima_personal (Unschedule, YMCA, fasting, training)
- bensima_shared (shared with Kate)
- icloud (Kate)
- parasail (mirrors shared, hide by default)
RRULE scope
Only FREQ=YEARLY (birthdays) and FREQ=WEEKLY (recurring meetings with BYDAY/UNTIL/INTERVAL). No complex recurrence patterns.