12 KiB
Task EP.1.6 – Calendar Projection, Workspace & Big Calendar Foundation
Status: Foundation Implemented
Priority: Critical
Type: Projection Platform / Workspace / UI Foundation
Depends On
- EP.1.1 Activity Domain Foundation
- EP.1.2 Activity Integration & Legacy Follow-up Adapter
- EP.1.3 Business Event Foundation
- EP.1.4 Projection Foundation & Delivery Reliability
- EP.1.4.1 Transactional Outbox Activation & Worker Runtime
- EP.1.5 Timeline Projection Foundation
- BU-R.0 Business Blueprint Freeze
- BU-R.0.1 Workspace & Activity Blueprint
- BU-R.1 Business Capability Audit
- AR.1 Architecture Transition Plan
- AR.2 Epic Technical Design
- AR.2 Workspace UI/UX Design Note
- ENG.0 Engineering Constitution
Objective
Introduce the first production Calendar Workspace of ALLA OS by combining:
- Calendar Projection
- Calendar Workspace
- Big Calendar UI Foundation
- Activity scheduling
- Business milestones
- Team visibility
- Calendar interaction
Calendar becomes the operational scheduling workspace for CRM while preserving existing source-domain ownership.
Calendar is NOT:
- a source-of-truth
- another Activity module
- another Opportunity module
- another Quotation module
Calendar is a governed projection and operational workspace.
Business Outcome
After EP.1.6 users can answer:
- What should I do today?
- Which customers should I visit?
- Which follow-ups are overdue?
- Which quotations are expiring?
- Which projects are Hot Projects?
- Which approvals are waiting?
- Which customer visits are scheduled?
- What is my team's workload today?
- What are tomorrow's priorities?
Managers gain a Team Calendar without creating duplicate business data.
Calendar Business Principles
Calendar is Projection
Calendar is generated from:
- Activity
- Business Events
- Opportunity milestones
- Quotation milestones
- Approval milestones
- Legacy adapters during rebuild
Calendar rows are rebuildable.
Activity Owns Operational Work
Editable Calendar events always belong to Activity.
Examples:
- Follow-up
- Meeting
- Site Survey
- Visit
- Internal Task
- Phone Call
- Reminder
Calendar actions must call Activity Services.
Calendar never edits projection rows directly.
Milestones Remain Source-Owned
Read-only Calendar milestones include:
- Expected Award Date
- Expected Delivery Date
- Quotation Expiration
- Approval Due
- Approval Escalation
- PO Milestones
Editing must always occur through the owning domain.
Calendar ≠ Timeline
Timeline answers:
What happened?
Calendar answers:
What must happen?
Both consume Business Events but serve different business purposes.
UI Foundation Decision
The Calendar UI must adopt:
lramos33/big-calendar
Repository:
https://github.com/lramos33/big-calendar
This repository becomes the Calendar UI foundation only.
It does NOT become:
- Calendar database
- Calendar backend
- Activity service
- Projection runtime
- CRM authorization
- Source-of-truth
The governed architecture remains:
Activity / Opportunity / Quotation / Approval
↓
Business Events
↓
Projection Runtime
↓
crm_calendar_projection
↓
Calendar Adapter
↓
lramos33/big-calendar
Review Required
Governance
Review:
- AGENTS.md
- Engineering Constitution
- Project Foundations
- Architecture Rules
- UI UX Rules
- Task Review Checklist
- CRM Authorization Boundaries
- LAYOUT.md
Business
Review:
- Relationship Sales Workspace Blueprint
- BU-R.1
Architecture
Review:
- AR.1
- AR.2
- Workspace UI UX Design Note
Existing Runtime
Review:
- Projection Runtime
- Worker Runtime
- Timeline Projection
- Activity Service
- Business Event Registry
- Calendar-related Activity scheduling
- Date formatting utilities
- CRM security
UI Review
Must use:
- ui-ux-pro-max
- LAYOUT.md
- ui-ux-rules.md
No code-first Calendar implementation is allowed.
Scope
Part 1 — Calendar Projection Schema
Introduce:
crm_calendar_projection
Containing:
- organization
- branch
- product
- activity
- customer
- lead
- opportunity
- quotation
- approval
- owner
- assignee
- title
- summary
- location
- start
- end
- timezone
- priority
- category
- editable
- milestone
- overdue
- hot project
- projection version
- source event
- metadata
Projection rows remain rebuildable.
Part 2 — Calendar Projection Builder
Implement
CalendarProjectionBuilder
Responsibilities
- Business Event mapping
- milestone mapping
- display enrichment
- permission metadata
- icon registry
- urgency calculation
- projection persistence
Builder never mutates source domains.
Part 3 — Activity Event Mapping
Support
- activity.created
- activity.assigned
- activity.reassigned
- activity.started
- activity.rescheduled
- activity.completed
- activity.cancelled
- activity.deleted
Projection updates must be incremental through Business Events.
Part 4 — Milestone Projection
Project:
Opportunity
- Expected Award Date
- Expected Delivery Date
- Hot Project review
Quotation
- Valid Until
- Delivery milestone
Approval
- Due
- Escalation
Milestones are read-only.
Part 5 — Calendar Projection Consumer
Activate Calendar consumer through Projection Runtime.
Must support:
- checkpoint
- retry
- dead letter
- rebuild
- idempotency
Part 6 — Calendar Query Service
Provide secured query service.
Filters:
- date range
- user
- team
- branch
- product
- customer
- lead
- opportunity
- quotation
- activity type
- category
- priority
- overdue
- milestone
- Hot Project
- search
Supported lenses:
- Personal
- Team
- Manager
- Executive
Part 7 — Calendar Rebuild
Hybrid rebuild.
Initial build:
- Activity
- Opportunity
- Quotation
- Approval
Incremental:
- Business Events
Support:
- organization
- customer
- opportunity
- quotation
- date range
- dry run
- reset existing
- restart
Part 8 — Calendar Workspace
Route:
/dashboard/crm/calendar
Views:
- Day
- Week
- Month
- Agenda
Agenda is default for:
- mobile
- manager
- high-density work
Part 9 — Big Calendar Source Audit
Before implementation:
Audit:
- dependency compatibility
- React compatibility
- Next.js compatibility
- shadcn compatibility
- Tailwind compatibility
- accessibility
- dark mode
- timezone assumptions
- drag/drop libraries
- demo code
- mock data
Document:
- files adopted
- files rejected
- modification strategy
Part 10 — Big Calendar Adaptation
Do NOT import the whole repository.
Only adapt:
- Calendar Views
- Toolbar
- Event Rendering
- Drag & Drop
- Resize
- Navigation
- User Filter
- Working Hours
Move adapted source into:
src/features/crm/calendar/
Maintain ALLA OS architecture.
Part 11 — Calendar Adapter Layer
Introduce
CalendarProjectionItem
↓
BigCalendarEvent
Implement
mapCalendarProjectionToBigCalendarEvent()
UI must never consume database rows directly.
Part 12 — Calendar Rendering Strategy
Differentiate:
Editable Activity
Examples
- Follow-up
- Meeting
- Visit
- Site Survey
Supports
- Complete
- Reschedule
- Cancel
- Open
- Reassign
Read-only Milestone
Examples
- Expected Award
- Expected Delivery
- Approval Due
- Quotation Expiration
Supports
- Open Source
- View Detail
- Create Related Activity
No editing.
Part 13 — Drag and Drop
For Activities
Drag
↓
Activity API
↓
Business Event
↓
Projection Update
↓
Calendar Refresh
No direct Calendar persistence.
Milestones cannot be dragged.
Part 14 — User Filter
Integrate upstream user filter with:
- CRM permissions
- team hierarchy
- ownership
- manager scope
Never load unauthorized users.
Part 15 — Working Hours
Support
- organization defaults
- user preferences
- Bangkok timezone
- all-day events
- current time
- business hours
Part 16 — Schedule Conflict Detection
Detect
- overlapping visits
- meetings
- site surveys
- tasks
Read-only advisory.
No blocking.
Part 17 — Calendar Summary
Display
- Due Today
- Overdue
- Meetings
- Visits
- Milestones
- Approval Due
- Hot Projects
Derived from Calendar projection.
Part 18 — Calendar Performance
Support
- indexes
- bounded queries
- lazy loading
- virtual agenda
- cursor pagination
- projection batching
No N+1.
Part 19 — Projection Health
Track
- lag
- retries
- dead letters
- row count
- stale rows
- rebuild status
Part 20 — Calendar Delivery Matrix
Document
Source
↓
Business Event
↓
Projection
↓
Calendar Item
↓
Workspace
Include:
- Activity
- Opportunity
- Quotation
- Approval
Part 21 — Calendar UI / UX Review
Review with
- ui-ux-pro-max
- LAYOUT.md
- ui-ux-rules.md
Validate
- hierarchy
- spacing
- typography
- icons
- filters
- density
- accessibility
- dark mode
- responsiveness
- keyboard
- loading
- empty state
Part 22 — Upstream License
Retain
MIT License
Document
- adopted files
- attribution
- modification history
Deliverables
- Calendar Projection Schema
- Calendar Builder
- Calendar Projection Consumer
- Calendar Query Service
- Calendar Rebuild
- Calendar Workspace
- Day / Week / Month / Agenda
- Big Calendar Source Audit
- Big Calendar Adaptation
- Calendar Adapter Layer
- Activity Calendar Actions
- Milestone Projection
- Drag & Drop Integration
- User Filter Integration
- Working Hours Support
- Schedule Conflict Detection
- Calendar Summary Panels
- Projection Health
- Calendar Delivery Matrix
- UI/UX Review Report
- Upstream License & Attribution Report
- EP.1.7 Readiness Report
Constraints
Must preserve:
- Activity ownership
- Opportunity ownership
- Quotation ownership
- Approval ownership
- Timeline
- Dashboard
- Reports
- Notifications
- Audit Log
- CRM security
- Projection Runtime
Do NOT implement:
- Google Calendar Sync
- Outlook Sync
- recurring engine
- My Day
- Manager Workspace
- Executive Workspace
- Relationship Health
- Forecast
- automatic Activity generation
- legacy migration
Calendar remains an additive projection.
Testing
- Projection
- Builder
- Consumer
- Rebuild
- Activity Events
- Milestones
- Query
- Permissions
- Drag & Drop
- Resize
- Agenda
- Day
- Week
- Month
- Timezone
- Conflict Detection
- UI
- Accessibility
- Dark Mode
- Performance
- Compatibility
Acceptance Criteria
- Calendar Projection is fully rebuildable.
- Calendar uses Business Events for incremental updates.
- Activity remains the only editable operational work source.
- Opportunity, Quotation, and Approval milestones are projected as read-only Calendar items.
lramos33/big-calendaris successfully adopted as the UI foundation without importing its application shell or backend.- A dedicated adapter maps
CalendarProjectionItemto the Calendar UI event model. - Drag-and-drop and resize update Activities only through Activity Services and Business Events.
- Read-only milestones cannot be dragged or resized.
- Personal, Team, Manager, and Executive lenses enforce existing CRM authorization.
- Day, Week, Month, and Agenda views are available, with Agenda optimized for managers and mobile.
- Working hours, timezone, and schedule conflict detection behave consistently.
- Calendar integrates with the Projection Runtime (checkpoint, retry, rebuild, health).
- UI conforms to
LAYOUT.md,ui-ux-rules.md, andui-ux-pro-max. - Existing Activity, Timeline, Dashboard, Reports, Notifications, Approval flows, and Follow-up APIs remain unchanged.
Success Criteria
ALLA OS gains a production-ready Calendar Workspace built on a governed Projection architecture.
Users can plan and execute daily operational work from a single Calendar while preserving Activity, Opportunity, Quotation, and Approval as the authoritative business domains.
The Calendar foundation is ready for:
EP.1.7 – My Day Workspace Foundation