One unified type for six domains
Every dated item is projected onto the same contract, the CalendarItem: a title, a time anchor, a status (overdue, today, upcoming, to review) and a deep link back to its source record. What the calendar covers today:
- Tasks, milestones and project deadlines from the workbench
- Bookings (start and end slot)
- Scheduled Studio posts, plus posts to review while the draft is not approved
- People to call and next cadence follow-ups
- Overdue unpaid invoices
- Scheduled webinar sessions
Fault-tolerant aggregation
Sources are queried in parallel. If one fails, the calendar still returns the rest, marks the result as partial and logs the failing source with its latency. A single broken domain never leaves you staring at a blank calendar.
tâches, répond
rendez-vous, répond
contenus, répond
factures, injoignable
Le calendrier s'affiche quand même. La source en panne est signalée.
Three views plus the day agenda
The /calendar page offers day, week and month. Month and week place events on their day; the day view lists them. The top-bar drawer is a "my day" read: overdue items float to the top, then today's. The dashboard shows the same agenda in a widget.
Tabs by family
On the full-screen page you filter by tab without leaving the view: all, tasks, calls, bookings, content, invoices. The type-to-tab mapping is a single source of truth, not a loose string.
Reschedule and create in place
You drag an item and its date updates where it should. You need the right to edit the item: a read-only member cannot move anything. The "Create" menu opens dated creation flows (task, content, call, webinar, invoice). Clicking a slot creates a quick task at that time.
- Bookings are not rescheduled by raw write: they go through the booking flow, because of notifications and sync
- The quick task is a real Workbench task, with its reminders