Marco

Calendar Aggregation

Every connected calendar source, merged and tagged behind one endpoint.

Calendar Aggregation (v2026-09-30T103058Z-5e473105f4) 2026-09-30 | Every connected calendar source, merged and tagged behind one endpoint. 1 - Calendar Aggregation - Merges calendar events from multiple sources calendar_aggregator.py GET /api/calendar/aggregate SOURCES = [CalendarSource('caldav', _caldav_connected, _caldav_list), Cal… async def _caldav_connected() async def _caldav_list(days) calendar_api.py GET /api/calendar/config POST /api/calendar/config GET /api/calendar/events POST /api/calendar/events marco/calendar.py async def is_connected() async def list_events(start_time, end_time) _bounded(fn) _authed_service() calendar events config 1. Receive /api/calendar/aggregate r… 2. Check connected status for each s… 3. Fetch events from connected sourc… 4. Merge and sort events 5. Return merged events to client Sample merged calendar events response { "ok": true, "data": { "events": [ { "id": "12345", "title": "Meeting", "start": "2023-10-01T10:00:00Z", "end": "2023-10-01T11:00:00Z", "location": "Conference Room A", "source": "google" }, { "id": "67890", "title": "Lunch", "start": "2023-10-01T12:00:00Z", "end": "2023-10-01T13:00:00Z", "location": "Canteen", "source": "caldav" } ], "sources": [ { "name": "google", "connected": true }, { "name": "caldav", "connected": true } ] }, "error": null, "metadata": {} } The system merges events from Google Calendar and CalDAV sources. Each source must implement the `CalendarSource` contract with `is_connected` and `list_events` methods. The frontend fetches merged events from the `/api/calendar/aggregate` endpoint. Legend actor = initiates work · process = code path · store = state on disk · bus = durable queue · dashed = separate process cyan = request flow · pink = state read/write · dashed green = pull / return path · red = refusal As of 2026-09-30 10:30 UTC, from commit 5e47310

Provenance

This drawing is generated, not drawn. It is rebuilt from the source files below, so when they change the picture changes — a diagram here cannot quietly describe a system that no longer works this way.

Owner
Marco
Slug
calendar-aggregation
Rendered
2026-09-30T103058Z
From commit
5e473105f4
Updated
30 Sep 2026, 10:30 UTC
Sources at
5e47310
Watches
4 paths
  • daemon/src/calendar_aggregator.py
  • daemon/src/calendar_api.py
  • daemon/src/marco/calendar.py
  • daemon/mona/src/pages/CalendarPage.tsx