Fundamentally refactors booking system to support:
- Split-resource bookings
- Service-level resource assignment
- Clear separation between booking and calendar events
Introduces new interfaces and type definitions to model complex booking scenarios, enabling more flexible and accurate resource management
Improves type safety by removing ambiguous type annotations
Centralizes date calculation logic into DateColumnDataSource
Improves separation of concerns across rendering components
Key changes:
- Introduces IColumnInfo interface for flexible column data
- Moves date calculation from multiple managers to dedicated datasource
- Removes duplicate date rendering logic
- Prepares architecture for future resource-based views
Replaces date-fns library with day.js to reduce bundle size and improve tree-shaking
- Centralizes all date logic in DateService
- Reduces library footprint from 576 KB to 29 KB
- Maintains 99.4% test coverage during migration
- Adds timezone and formatting plugins for day.js
Improves overall library performance and reduces dependency complexity
Documents two consecutive failed attempts at AllDayManager architectural refactoring, including:
- Detailed analysis of architectural and implementation failures
- Lessons learned about upfront design and systematic debugging
- Root cause identification for repeated refactoring mistakes
- Recommendations for future implementation approaches
Highlights critical issues in code design, DI principles, and functional testing strategies
Extracts workweek preset logic from ViewManager into WorkweekPresetsManager
Improves separation of concerns by:
- Creating a dedicated manager for workweek preset UI
- Simplifying ViewManager to focus only on view selector
- Implementing event-driven CSS updates
- Reducing code duplication in ConfigManager
Follows "each UI element has its own manager" architectural principle