PRD: Dynamic Timeline Updates on Calendar
## Problem Currently, when a project task is moved or rescheduled on the timeline, the calendar view does not reflect the change in real-time. Users have to manually refresh the page to see updated dates, which breaks the flow of planning and creates confusion when multiple team members are viewing the same project. ## Proposed Solution Implement real-time timeline-to-calendar sync so that any drag-and-drop movement on the timeline instantly updates the calendar view without a page refresh. ### Key Requirements 1. **WebSocket / realtime subscription** — When a task's start/end date changes on the timeline, the calendar component should receive a push update and re-render only the affected slot. 2. **Optimistic UI** — The user dragging the task sees the change immediately; other connected users see it within 1-2 seconds. 3. **Conflict detection** — If two users move the same task simultaneously, show a non-blocking toast: "This task was updated by another team member" and offer to reload. 4. **Mini-calendar sync** — The mini-calendar in the sidebar should also update in real-time. ### Out of Scope - Recurring task rules (separate PRD) - Cross-project calendar overlay (separate PRD) ## Success Metrics - < 2 second sync latency for 95th percentile - Zero stale-data reports from users after release ## Technical Notes The existing `base44.entities.TSTimeEntry.subscribe()` pattern used in the timesheet module could be reused here. The calendar component would subscribe to task date changes and patch the local state.
Replies (2)
Just a toast for v1. Diff view is a nice-to-have but let's keep the first release simple. If two people edit the same task, the second save wins and the first person gets a toast — that's standard optimistic-concurrency behavior.
Great PRD, Alex. One question on the conflict detection — should we show a diff view (your version vs. theirs) or just a non-blocking toast with a reload button? Diff view is nicer but adds complexity.
Join the Creator Program to participate in discussions.