Calendar
A month-grid view of every draft and scheduled post across connected accounts, with per-account cadence at a glance and a conflict detector for double-booked slots.
Calendar
The calendar is the planning view over your social pipeline. It reads posts from
GET /v1/social/posts and accounts from GET /v1/social/accounts, then buckets
each post onto a day cell so you can see what's drafted, what's scheduled, and
where your cadence has gaps or pile-ups — across every connected network at
once.
Live surface
The calendar renders live post data. Its bucketing and conflict logic live in
web/src/app/(app)/social/calendar/calendar-data.ts and are unit-tested.
How posts land on the grid
Each post is placed by its primary date stamp, in priority order:
scheduled_for wins, then published_at, then created_at. So a draft
scheduled for tomorrow shows up on tomorrow's cell even though it was created
today, and a published post sits on the day it went out. Drafts with no schedule
fall back to their creation date.
Conflict detection
The calendar flags double-booked slots — two posts with status scheduled
targeting the same provider account within the same window. This surfaces the
common mistake of stacking two LinkedIn company-page posts a few minutes apart.
Only posts that are actually scheduled (with a scheduled_for value) are
considered; drafts and already-published posts are excluded from conflict
checks.
Rescheduling
Changing a post's schedule updates its scheduled_for field and moves it to the
new cell. Because scheduling and immediate publish are mutually exclusive at the
API level, a post is either planned for a future time or sent now — never both.
The calendar plans; it does not auto-send
A scheduled post shown on the calendar is a plan, not a queued send. There is no
background worker yet that publishes due posts at their scheduled_for time — a
post goes out only when you (or the UI's Publish action) call
POST /v1/social/posts/{public_id}/publish. Think of the calendar as your
editorial plan and reminder surface until the auto-publisher ships.