7.7 KiB
Task EP.1.6.2 – Direct Big Calendar UI Adoption
Status: Foundation Implemented
Priority: High
Type: UI Modernization / Calendar UX / Frontend Refactor
Depends On
- EP.1.6 Calendar Projection, Workspace & Big Calendar Foundation
- EP.1.6.1 Calendar Empty State Rendering Improvement
- EP.1.7 My Day Workspace Foundation
Objective
Replace the current custom Calendar UI implementation with the original lramos33/big-calendar component architecture while preserving the ALLA OS backend architecture.
This task is UI-only.
No business logic, projection model, Activity ownership, Business Events, or Calendar Projection architecture shall change.
Background
EP.1.6 successfully introduced:
- Calendar Projection
- Calendar Query Service
- Calendar Workspace
- Calendar Projection Runtime
- Activity integration
- Calendar API
- Calendar security
However the current UI only references the upstream project conceptually.
It does NOT use the original Calendar UI implementation.
The goal of EP.1.6.2 is to adopt the upstream Calendar components directly so ALLA OS gains the same interaction quality and polished UX.
Review Required
Review before implementation:
- AGENTS.md
- LAYOUT.md
- ui-ux-rules.md
- Engineering Constitution
- EP.1.6
- EP.1.6.1
- EP.1.7
Review upstream project:
https://github.com/lramos33/big-calendar
Review:
- component structure
- provider architecture
- drag & drop
- resize
- agenda
- month
- week
- day
- year
- event rendering
- toolbar
- filters
- responsive behavior
- dark mode
Architecture Principle
ALLA OS owns:
- Activity
- Calendar Projection
- Business Events
- Projection Runtime
- Permissions
- APIs
Big Calendar owns:
- Calendar rendering
- Calendar interactions
- View switching
- Event layout
- Drag UX
- Resize UX
- Toolbar
- Navigation
Data Flow
Must remain
Activity
↓
Business Event
↓
Projection Runtime
↓
crm_calendar_projection
↓
CalendarProjectionItem
↓
Calendar Adapter
↓
Big Calendar Components
No upstream component may read database rows directly.
Scope
Part 1 — Direct Component Adoption
Adopt upstream source components directly.
Do NOT recreate:
- Month Grid
- Week Grid
- Day Grid
- Agenda Layout
- Calendar Header
- Calendar Navigation
Use upstream implementation instead.
Part 2 — Remove Custom Calendar Rendering
Deprecate current custom:
- Day
- Week
- Month
renderers.
Only keep:
- ALLA adapter
- wrapper
- permissions
- Activity actions
Part 3 — Calendar Provider
Introduce upstream provider.
Wrap ALLA Calendar.
The provider receives
CalendarProjectionItem
through an adapter.
Part 4 — Adapter Layer
Implement
mapCalendarProjectionToBigCalendarEvent()
and
mapBigCalendarActionToActivityCommand()
No business logic inside UI.
Part 5 — Toolbar Integration
Use upstream toolbar.
Adapt:
- Today
- Previous
- Next
- Date Picker
- View Selector
Integrate with:
- URL search params
- React Query
Part 6 — View Integration
Support
- Day
- Week
- Month
- Agenda
Optional
- Year
Do not change upstream layout unnecessarily.
Part 7 — Event Rendering
Differentiate
Editable Activity
vs
Read-only Milestone
Show
- icon
- badge
- customer
- title
- priority
- overdue
- Hot Project
using ALLA adapter.
Part 8 — Drag & Drop
Enable upstream drag.
Rules
Editable
↓
Activity API
↓
Business Event
↓
Projection Refresh
Read-only milestones
↓
cannot move.
Part 9 — Resize
Enable resize.
Only
Activity
may resize.
Never
Milestones.
Part 10 — Event Detail
Selecting an event opens
ALLA Activity Sheet
or
Source Detail Sheet
depending on
Activity
or
Milestone.
Part 11 — Working Hours
Reuse upstream configuration.
Default
Asia/Bangkok
Support
Organization setting
Future
User preference.
Part 12 — Current Time
Enable
Now Indicator
from upstream.
Part 13 — Today Highlight
Use upstream
Today
highlight behavior.
Part 14 — User Filter
Replace upstream demo users.
Use
CRM Users API
Permission aware.
Part 15 — Theme Integration
Align
fonts
spacing
cards
buttons
badges
colors
with ALLA OS.
Avoid redesigning upstream.
Part 16 — Responsive Review
Validate
Desktop
Tablet
Mobile
Agenda remains mobile default.
Part 17 — Accessibility
Validate
- keyboard
- focus
- screen reader
- contrast
- dark mode
Part 18 — Calendar Empty State
Keep
EP.1.6.1 behavior.
Day
Week
Month
↓
render calendar.
Agenda
↓
render empty list.
Part 19 — Source Audit
Document
- adopted files
- modified files
- untouched files
- removed demo code
Part 20 — Upgrade Strategy
Record
- upstream commit hash
- version reviewed
- local patches
- synchronization strategy
Future updates must be traceable.
Part 21 — Performance
Verify
- Month rendering
- Week rendering
- Day rendering
- Agenda rendering
- Virtualization where applicable
- React re-render counts
- Lazy event loading
Part 22 — Regression Testing
Verify
Calendar
does not break
- Activity
- Timeline
- Dashboard
- My Day
- Projection Runtime
- Permission model
Deliverables
- Direct Big Calendar integration
- Calendar Provider
- Calendar Adapter Layer
- Toolbar Integration
- Day View
- Week View
- Month View
- Agenda View
- Optional Year View
- Drag & Drop
- Resize
- Current Time Indicator
- Today Highlight
- User Filter
- Theme Integration
- Responsive Review
- Accessibility Review
- Source Audit Report
- Upgrade Strategy Document
- Regression Report
Constraints
Must preserve
- Activity ownership
- Calendar Projection
- Timeline
- Projection Runtime
- Business Events
- CRM permissions
- API contracts
Must NOT
- replace Calendar Projection
- introduce local event storage
- duplicate Activity logic
- bypass Activity API
- bypass Business Events
- mutate projection rows directly
Verification
npm run typechecknpm run db:generatenpx oxlint src/features/crm/calendar- Calendar interaction tests
- Drag & Drop tests
- Resize tests
- Permission tests
- Responsive tests
- Accessibility tests
Acceptance Criteria
- The Calendar UI is built directly on the lramos33/big-calendar source components rather than custom-rendered Day, Week, and Month grids.
- ALLA OS retains ownership of Activity, Calendar Projection, Business Events, Projection Runtime, and CRM authorization.
CalendarProjectionItemis adapted into the upstream event model through a dedicated adapter layer.- Upstream toolbar, navigation, Day, Week, Month, and Agenda views are reused with minimal structural modification.
- Editable Activities support drag-and-drop and resize through the Activity API only.
- Read-only milestones cannot be dragged or resized.
- The current-time indicator and Today highlighting are enabled.
- Day, Week, and Month always render the Calendar grid; Agenda retains the list-style empty state from EP.1.6.1.
- The upstream MIT license is preserved, and an audit documents all adopted and modified source files.
- The Calendar visually matches the upstream interaction quality while following
LAYOUT.md,ui-ux-rules.md, andui-ux-pro-max. - Existing Activity, Calendar Projection, Timeline, My Day, Dashboard, Reports, Notifications, and Projection Runtime behavior remain unchanged.
Success Criteria
ALLA OS transitions from a custom Calendar implementation to a direct integration of the lramos33/big-calendar UI, delivering a polished enterprise calendar experience while preserving the existing backend architecture, business rules, security model, and Projection-based design.