Back to docs Calendrier
Live

Calendrier

The hub that gathers everything anchored in time: tasks, bookings, scheduled posts, calls, invoices, webinars. A day, week and month view, plus a "my day" agenda in the top bar.

Overview

The calendar stores nothing of its own. It aggregates. Each domain (workbench, booking, studio, voice, invoices, webinars) provides a source that projects its rows onto one shared type, the CalendarItem. The result: you see your real week in one place instead of juggling six screens.

Two surfaces consume it. The "my day" drawer in the top bar shows what is overdue then what falls today, at a glance. The full-screen /calendar page gives you a real day, week or month grid, with events placed on their days and tabs to filter by family.

Each source keeps its own workspace scoping and RLS: the calendar orchestrates, it bypasses nothing. And a source that fails never blanks the whole calendar, it gets isolated and reported on its own.

What the module does

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.

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 it is rescheduled on the right table, on the right anchor column. Rescheduling requires the write permission of the domain involved, on top of RLS: a read-only member cannot move anything. The "Create" menu opens the dated creation flows (task, content, calls, webinar, invoice), and 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 reuses workbench creation, so it inherits its reminders and scoping

How to use it

  1. 01

    Open your day

    From the top bar, the "my day" drawer shows what is overdue then what falls today.

  2. 02

    Go full screen

    You open /calendar and switch between day, week and month depending on what you need to see.

  3. 03

    Filter by family

    You click a tab (tasks, calls, bookings, content, invoices) to keep only what matters.

  4. 04

    Reschedule

    You drag an item to another slot. It is rewritten on its source if you hold the domain write permission.

  5. 05

    Create an item

    The "Create" menu opens the right flow, or clicking an empty slot drops a quick task at that time.

Connections