This major refactor eliminates manual string parsing throughout the codebase and introduces proper RFC 5545 iCalendar specification compliance with significant code simplification benefits. ## Backend Improvements - Add complete RFC 5545-compliant data structures (VEvent, VTodo, etc.) - Create simplified v2 API endpoints with direct DateTime support - Eliminate ~150 lines of manual string parsing in handlers - Add structured attendee and alarm support - Maintain backward compatibility with existing v1 APIs ## Frontend Improvements - Replace 16+ parameter create_event calls with single structured request - Add automatic date/time conversion in EventCreationData - Eliminate enum-to-string conversions throughout event creation - Add v2 API models with proper type safety ## Technical Benefits - Direct DateTime<Utc> usage instead of error-prone string parsing - Proper RFC 5545 compliance with DTSTAMP, SEQUENCE fields - Vec<AttendeeV2> instead of comma-separated strings - Structured alarm system with multiple reminder types - Enhanced RRULE support for complex recurrence patterns ## Code Quality - Reduced create_event call from 16 parameters to 1 structured request - Added comprehensive integration plan documentation - Both backend and frontend compile successfully - Maintained full backward compatibility during transition 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
5.4 KiB
5.4 KiB
RFC 5545 Integration Plan
Phase 1: Core Structure Replacement (High Impact, Low Risk)
1.1 Replace Event Models
Files to Update:
backend/src/calendar.rs- ReplaceCalendarEventwithVEventsrc/services/calendar_service.rs- ReplaceCalendarEventwithVEvent- Remove duplicate structures, use single source of truth
Benefits:
- ✅ Eliminate duplicate event definitions
- ✅ Add missing DTSTAMP (RFC required)
- ✅ Add SEQUENCE for proper versioning
- ✅ Standardize on DateTime instead of string parsing
1.2 Simplify Request/Response Models
Files to Update:
backend/src/models.rs- Replace string-based fields
Current (Complex):
pub start_date: String, // YYYY-MM-DD format
pub start_time: String, // HH:MM format
pub categories: String, // comma-separated
pub attendees: String, // comma-separated
New (Simple):
pub dtstart: DateTime<Utc>,
pub categories: Vec<String>,
pub attendees: Vec<Attendee>,
Benefits:
- ✅ Remove ~50 lines of manual string parsing in handlers
- ✅ Better type safety
- ✅ Automatic validation
Phase 2: Enhanced Functionality (Medium Impact, Medium Risk)
2.1 Add Rich Attendee Support
Current: Vec<String> (just emails)
New: Vec<Attendee> with roles, status, RSVP
Benefits:
- ✅ Proper meeting invitations
- ✅ RSVP tracking
- ✅ Role-based permissions (Chair, Required, Optional)
2.2 Structured Reminders/Alarms
Current: Simple reminder minutes
New: Full VAlarm component with actions, triggers
Benefits:
- ✅ Multiple reminder types (email, display, audio)
- ✅ Complex trigger patterns
- ✅ Better CalDAV compatibility
2.3 Geographic Location Support
New Addition: GEO property for latitude/longitude
Benefits:
- ✅ Map integration possibilities
- ✅ Location-based reminders
- ✅ Travel time calculations
Phase 3: Advanced Components (High Impact, Higher Risk)
3.1 Add VTODO Support
New Component: Task/To-Do management
Benefits:
- ✅ Unified calendar + task system
- ✅ Due dates, completion tracking
- ✅ Priority management
3.2 Add VJOURNAL Support
New Component: Journal/diary entries
Benefits:
- ✅ Meeting notes integration
- ✅ Daily journaling
- ✅ Full calendar suite
3.3 Add VFREEBUSY Support
New Component: Availability tracking
Benefits:
- ✅ Meeting scheduling optimization
- ✅ Conflict detection
- ✅ Resource booking
Implementation Strategy
Immediate Actions (Can Start Now)
- Add compatibility layer in existing
CalendarEventto support new fields - Implement conversion functions between old/new structures
- Update backend models to use DateTime instead of string parsing
Quick Wins (1-2 hours each)
- Replace string date parsing in
backend/src/handlers.rs - Add missing DTSTAMP to all events (RFC compliance)
- Convert categories/attendees from comma-separated strings to vectors
Medium Effort (3-5 hours each)
- Unified event structure across frontend/backend
- Rich attendee management with roles and status
- Structured alarm system
Long Term (Future enhancements)
- Full VTODO implementation
- VJOURNAL support
- VFREEBUSY and scheduling
Risk Mitigation
Backward Compatibility
- Keep existing API endpoints working
- Add conversion functions between old/new formats
- Gradual migration, not big-bang replacement
Testing Strategy
- Add tests for RFC 5545 compliance
- Test CalDAV interoperability
- Validate against multiple calendar clients
Rollback Plan
- Keep old structures as fallback
- Feature flags for new functionality
- Incremental deployment
Expected Benefits
Developer Experience
- 50% reduction in date/time parsing code
- Elimination of string-based field parsing
- Type safety for all calendar operations
- Standards compliance reduces debugging
User Experience
- Better CalDAV compatibility with all clients
- Rich attendee management for meetings
- Proper timezone handling
- Future-proof for advanced features
Maintenance
- Single source of truth for event data
- RFC 5545 compliance eliminates compatibility issues
- Cleaner codebase with less duplication
- Easier testing with structured data
File Impact Analysis
High Impact Files (Need Updates)
backend/src/models.rs - Replace request/response structs
backend/src/handlers.rs - Remove string parsing logic
backend/src/calendar.rs - Replace CalendarEvent
src/services/calendar_service.rs - Use unified structures
Medium Impact Files (Minor Changes)
src/components/create_event_modal.rs - Update form handling
src/components/event_modal.rs - Display enhancements
backend/src/lib.rs - Add new modules
Low Impact Files (Minimal/No Changes)
src/components/week_view.rs - Just use new event structure
src/components/month_view.rs - Just use new event structure
styles.css - No changes needed
Next Steps
- Review this plan with team/stakeholders
- Create branch for RFC 5545 integration
- Start with Phase 1.1 - Core structure replacement
- Implement conversion functions for compatibility
- Update one handler at a time to reduce risk
The integration will significantly simplify the codebase while adding professional-grade calendar functionality!