TODO Cleanup Plan - Post-Epic 5 MVP
Generated: 2026-01-18
Executive Summary
With Epics 1-5 complete and MVP ready for production, this plan categorizes all remaining TODOs by priority and provides actionable cleanup recommendations. The majority (68%) are documented future features (Epic 6+), while 32% require attention before production launch.
Priority Breakdown
- π΄ Critical (Pre-Production): 8 items - Must fix before launch
- π‘ High (Post-Launch Optimization): 12 items - Address within first month
- π’ Medium (Future Epics): 43 items - Documented Epic 6+ features
- βͺ Low (Technical Debt): 18 items - Clean up when convenient
π΄ Critical Priority (Pre-Production) - 8 Items
Timeline: Complete before production deployment
Backend Security & Authentication
1. Security Context Integration (3 items)
Impact: Security vulnerability - hardcoded usernames bypass authentication
| File | Line | Issue | Fix |
|---|---|---|---|
| SlotAssignmentController.java | 205 | Hardcoded organizer username | Extract from SecurityContext |
| SlotAssignmentController.java | 305 | Hardcoded username (clear timing) | Extract from SecurityContext |
| SlotAssignmentController.java | 329 | Hardcoded username (auto-assign) | Extract from SecurityContext |
Action:
// Replace hardcoded "organizer1" with:
@AuthenticationPrincipal CustomUserDetails userDetails
String username = userDetails.getUsername();
Acceptance Criteria:
2. Disabled Integration Tests (3 items)
Impact: False confidence - tests disabled without proper resolution
| File | Line | Issue |
|---|---|---|
| PublishingEngineControllerIntegrationTest.java | 394 | Change log tracking - 500 error |
| EventControllerIntegrationTest.java | 1731 | Intermittent 500 error - null safety |
| RegistrationCleanupServiceIntegrationTest.java | 160, 198 | Test isolation - JPA transaction issue |
Action:
- Change log test: Implement diff logic or remove feature from MVP
- 500 error test: Debug null pointer exception, add null checks
- Cleanup tests: Fix transaction isolation or mark as @Transactional
Acceptance Criteria:
Frontend Error Handling & Monitoring
3. Error Tracking Integration (2 items)
Impact: No production error visibility - blind to user issues
| File | Line | TODO |
|---|---|---|
| ErrorBoundary.tsx | 37 | Send to monitoring service (Sentry, DataDog) |
| shared/ErrorBoundary/ErrorBoundary.tsx | 65 | Integrate with Sentry or error tracking |
Action:
// Install Sentry
npm install @sentry/react @sentry/tracing
// Configure in main.tsx
Sentry.init({
dsn: import.meta.env.VITE_SENTRY_DSN,
environment: import.meta.env.MODE,
tracesSampleRate: 0.1,
});
Acceptance Criteria:
4. Analytics Integration (2 items)
Impact: No production usage metrics - canβt measure success
| File | Line | TODO |
|---|---|---|
| reportWebVitals.ts | 78, 82 | Integrate with analytics service |
Action:
// Install Google Analytics 4
npm install react-ga4
// Configure in App.tsx
ReactGA.initialize(import.meta.env.VITE_GA_MEASUREMENT_ID);
ReactGA.send({ hitType: "pageview", page: window.location.pathname });
Acceptance Criteria:
π‘ High Priority (Post-Launch Optimization) - 12 Items
Timeline: Address within first month of production
Backend API Completeness
5. Cross-Service Integration (3 items)
Impact: Incomplete data enrichment - degraded UX
| File | Line | TODO | Epic |
|---|---|---|---|
| EventController.java | 418 | Venue data expansion placeholder | 2.x |
| CompanyQueryService.java | 212-214 | Company statistics (events/speakers/partners) | 2.x |
| UserService.java | 679 | Company details for user profiles | 2.x |
Action: Implement REST client calls to Company Management Service
- EventController: Call
/api/companies/{id}for venue enrichment - CompanyQueryService: Call Event/Speaker/Partner services for counts
- UserService: Call
/api/companies/{id}for profile enrichment
Acceptance Criteria:
6. Frontend API Stubs (5 items)
Impact: Users see βComing Soonβ placeholders
| Feature | Files Affected | Backend Status |
|---|---|---|
| User /me endpoint | userAccountApi.ts (4 TODOs) | Needs implementation |
| Critical tasks endpoint | useEvents.ts, useEvents.test.tsx | Needs implementation |
| Team activity endpoint | useEvents.ts, useEvents.test.tsx | Needs implementation |
| Notifications API | useNotifications.ts | Deferred to Story 1.15a.10 |
Action:
- Priority 1: Implement
/api/users/meendpoint (remove fallback) - Priority 2: Implement
/api/events/critical-tasks?organizerUsername={username} - Priority 3: Implement
/api/events/team-activity?organizerUsername={username} - Defer: Notifications API to Epic 6
Acceptance Criteria:
Testing Quality
7. Fix Flaky Tests (4 items)
Impact: CI/CD reliability issues
| File | Line | Issue |
|---|---|---|
| useCompanyMutations.test.tsx | 265 | Race condition in CI |
| PartnerCreateEditModal.test.tsx | 276 | Loading state button not found |
| Accessibility.test.tsx | 57 | Keyboard/screen reader setup |
| ResponsiveDesign.test.tsx | 75 | Viewport mocking issues |
Action:
- Race condition: Add
waitFor()or increase timeout - Loading state: Verify button renders or adjust test expectation
- Accessibility: Use
@testing-library/jest-dommatchers - Responsive: Use
window.resizeTo()or CSS media query mocks
Acceptance Criteria:
- No
.skip()or.only()
π’ Medium Priority (Future Epics) - 43 Items
Timeline: Documented in Epic 6+ roadmap, not blocking production
Epic 6: Event-Driven Architecture
8. Domain Event Publishing (5 items)
Current: Event stubs with logging only Future: Publish to AWS EventBridge for cross-service coordination
| Service | Events | Files |
|---|---|---|
| Event Management | SpeakerContactedEvent, SpeakerWorkflowStateChangeEvent, SpeakerConfirmedEvent, OverflowDetectedEvent | SpeakerOutreachService.java:112, SpeakerWorkflowService.java:97/205, OverflowManagementService.java:100 |
| Company-User Management | UserRoleChangedEvent | RoleService.java:5/39/203 |
Defer Reason: MVP uses synchronous REST calls; events optimize for scale (>5000 users)
Epic 8: Advanced Partner Management
9. Partner Engagement Features (15 items)
Current: UI placeholders showing βComing Soonβ Future: Full partner analytics, meetings, notes
| Feature | Frontend Files | Backend Status |
|---|---|---|
| Meetings API | PartnerMeetingsTab.tsx, usePartnerMeetings.ts, partnerApi.ts | Not implemented |
| Activity API | PartnerActivityTab.tsx, usePartnerActivity.ts, partnerApi.ts | Not implemented |
| Notes API | usePartnerNotes.ts, partnerApi.ts | Not implemented |
| Previous Tier Tracking | PartnerOverviewTab.tsx:64/98 | Backend field missing |
| Company Details (swissUid, taxStatus) | PartnerOverviewTab.tsx:124 | Backend field missing |
| Auto-Renewal Settings | PartnerSettingsTab.tsx:32 | Backend field missing |
Defer Reason: MVP focuses on basic partner CRUD; analytics deferred to post-launch
Epic 9: Workflow Validation Enhancements
10. Advanced State Validations (2 items)
| File | Line | TODO | Story |
|---|---|---|---|
| EventWorkflowStateMachine.java | 184 | Replace with actual speaker count validation | 5.3 |
| EventWorkflowStateMachine.java | 204 | Replace with actual content submission validation | 5.6 |
Current: Placeholder validations that always fail (for TDD) Future: Real validation logic checking speaker counts and content submissions
Defer Reason: Stories 5.3/5.6 explicitly marked as future work in Epic 5 planning
Epic 10: External API Integrations
11. Swiss Business Registry API (2 items)
| File | Line | TODO |
|---|---|---|
| SwissUIDValidationService.java | 64 | Integrate with Swiss Business Registry API (AC12.3) |
| SwissUIDValidationService.java | 76 | Implement API integration |
Current: Format validation only (checksum verification) Future: Real-time validation against Swiss government registry
Defer Reason: Format validation sufficient for MVP; real-time checks add cost/latency
Epic 11: User Management Enhancements
12. User Lifecycle Features (7 items)
| Feature | File | Lines | Status |
|---|---|---|---|
| User Invitation System | UserService.java | 569 | Token generation, email, registration flow |
| User Deletion Business Rules | UserService.java | 462-464 | Last organizer check, cascade delete |
| Cognito Email Sync | UserService.java | 114 | Pre-token-generation hook |
| Audit Trail (previousValues) | UserService.java | 141/210 | Event enrichment |
| User Sync Panel (AWS Credentials) | UserList.tsx | 50/187 | STS SDK role assumption |
Defer Reason: MVP supports basic CRUD; advanced lifecycle deferred
βͺ Low Priority (Technical Debt) - 18 Items
Timeline: Address during refactoring sprints
Code Quality Improvements
13. Email Templates (1 item)
File: NotificationService.java:196 TODO: Add Thymeleaf templates for richer formatting Current: Plain text emails Future: HTML templates with branding
14. Agenda Finalization Tracking (1 item)
File: PublishingService.java:585 TODO: Add agendaFinalizedAt/agendaFinalizedBy to Event entity Current: No audit trail for agenda finalization Future: Track who finalized and when
15. Upload ID Validation (1 item)
File: SessionMaterialsServiceTest.java:191 TODO: Revisit if validation needed against GenericLogoService Current: Test placeholder comment Action: Remove comment or implement validation
Frontend Technical Debt
16. Hardcoded Values & Placeholders (8 items)
| File | Line | Issue | Fix |
|---|---|---|---|
| userAccountApi.ts | 224 | Language hardcoded to βdeβ | Get from i18n context |
| userAccountApi.ts | 230-231 | quietHours undefined | Add to DTO type |
| userAccountApi.ts | 263-265 | allowCalendarSync, timezone, 2FA | Add to DTO type |
| userAccountApi.ts | 421/494 | SHA256 checksum empty | Implement checksum |
| publishingService.ts | 168 | Phase parameter not used | Wait for backend |
| EventOverviewTab.tsx | 127 | Notification modal placeholder | Implement modal |
Action: Create tech debt tickets, prioritize by user impact
17. Test Improvements & Documentation (7 items)
| Category | Files | Count |
|---|---|---|
| Missing test-id attributes | event-type-selection.spec.ts, topic-selection.spec.ts | 2 |
| Missing error handling tests | speaker-status-tracking.spec.ts:413 | 1 |
| Missing advanced features | ConflictDetectionAlert.test.tsx, SpeakerPreferencePanel.test.tsx | 5 |
| Missing ARIA labels/live regions | Multiple test files | 4 |
Action: Create accessibility improvement epic
Cleanup Workflow
Phase 1: Pre-Production (Week 1-2)
# 1. Fix critical security issues
git checkout -b fix/security-context-integration
# Implement SecurityContext in SlotAssignmentController (3 files)
# Run tests: ./gradlew :services:event-management-service:test
# Commit: fix(event-management): replace hardcoded usernames with SecurityContext
# 2. Integrate error tracking
git checkout -b feat/sentry-integration
npm install @sentry/react @sentry/tracing
# Configure Sentry in ErrorBoundary
# Test: trigger error and verify in Sentry dashboard
# Commit: feat(monitoring): integrate Sentry error tracking
# 3. Integrate analytics
git checkout -b feat/google-analytics
npm install react-ga4
# Configure GA4, add Web Vitals tracking
# Test: verify events in GA4 dashboard
# Commit: feat(analytics): integrate Google Analytics 4
# 4. Fix disabled tests
git checkout -b fix/disabled-integration-tests
# Debug and re-enable 3 disabled tests
# Commit: test(integration): fix disabled tests
Phase 2: Post-Launch Optimization (Week 3-6)
# 5. Implement missing backend endpoints
git checkout -b feat/user-me-endpoint
# Implement /api/users/me
# Remove frontend fallback logic
# Commit: feat(api): implement /users/me endpoint
# 6. Fix flaky tests
git checkout -b fix/flaky-tests
# Address race conditions, viewport mocking
# Commit: test(frontend): fix flaky accessibility and responsive tests
Phase 3: Epic 6+ Planning (Post-Launch)
# 7. Create GitHub Issues for future work
# - Epic 6: Event-Driven Architecture (5 domain events)
# - Epic 8: Partner Engagement (15 features)
# - Epic 9: Workflow Validations (2 stories)
# - Epic 10: Swiss Registry API (1 integration)
# - Epic 11: User Management (7 features)
# 8. Clean up TODO comments
git checkout -b chore/cleanup-documented-todos
# Replace Epic 6+ TODOs with GitHub issue links
# Example: // TODO Epic 6: Publish to EventBridge -> // See GitHub Issue #123
# Commit: chore: replace TODO comments with GitHub issue references
Success Criteria
Pre-Production Checklist
Post-Launch Checklist (Month 1)
Epic 6+ Planning
Appendix: Full TODO Inventory
Backend TODOs (27 items)
Event Management Service (17)
- NotificationService.java:196 - Thymeleaf templates
- SpeakerOutreachService.java:112 - SpeakerContactedEvent
- EventWorkflowStateMachine.java:184 - Speaker count validation
- EventWorkflowStateMachine.java:204 - Content submission validation
- OverflowManagementService.java:100 - OverflowDetectedEvent
- SpeakerWorkflowService.java:97 - SpeakerWorkflowStateChangeEvent
- SpeakerWorkflowService.java:205 - SpeakerConfirmedEvent
- PublishingService.java:585 - Agenda finalization tracking
- SessionMaterialsServiceTest.java:191 - Upload ID validation
- EventController.java:418 - Venue data expansion
- SlotAssignmentController.java:205 - Security context (organizer)
- SlotAssignmentController.java:305 - Security context (clear timing)
- SlotAssignmentController.java:329 - Security context (auto-assign)
- PublishingEngineControllerIntegrationTest.java:394 - Change log tracking
- EventControllerIntegrationTest.java:1731 - 500 error debugging
- RegistrationCleanupServiceIntegrationTest.java:160 - Test isolation
- RegistrationCleanupServiceIntegrationTest.java:198 - Test isolation
Company-User Management Service (10)
- CompanyQueryService.java:212 - Event count integration
- CompanyQueryService.java:213 - Speaker count integration
- CompanyQueryService.java:214 - Partner count integration
- RoleService.java:5 - UserRoleChangedEvent
- RoleService.java:39 - DomainEventPublisher unused warning
- RoleService.java:203 - UserRoleChangedEvent stub
- SwissUIDValidationService.java:64 - Swiss Registry API
- SwissUIDValidationService.java:76 - Swiss Registry API implementation
- UserService.java:114 - Cognito email sync
- UserService.java:120 - Audit trail tracking
- UserService.java:141/210 - previousValues placeholder
- UserService.java:462-464 - User deletion business rules
- UserService.java:569 - Invitation system
- UserService.java:679 - Company details fetch
Frontend TODOs (54 locations)
API Services (10)
- eventService.ts:10 - Task 5b implementation 2-10. userAccountApi.ts - /users/me fallback, preferences, checksum (9 items) 11-15. partnerApi.ts - Future features (meetings, activity, notes)
Components & Pages (15)
- App.tsx:147 - onBackToLogin callback refactor 17-18. HomePage.tsx - Topic preview support
- EventOverviewTab.tsx:127 - Notification modal 20-27. Partner Management components - Epic 8 features (8 items) 28-30. Publishing components - Version control, timeline features
Error Handling & Monitoring (4)
- ErrorBoundary.tsx:37 - Monitoring service 32-33. reportWebVitals.ts - Analytics integration
- errorMessages.ts:43 - i18n translation
- shared/ErrorBoundary.tsx:65 - Sentry integration
Testing (20)
36-37. Accessibility tests - Screen reader, high contrast 38. navigation.spec.ts - Login flow 39-40. E2E tests - testid attributes needed 41. speaker-status-tracking.spec.ts - Error handling 42-54. Various component tests - Disabled/skipped tests (13 items)
User & Company Management (3)
55-56. UserList.tsx - User sync panel (AWS credentials) 57. CompanyDetailView.tsx - User linking/unlinking
Hooks & Services (2)
- useNotifications.ts:87 - Notifications API 59-60. useEvents.ts - organizerUsername filter support
Notes
Document Maintenance:
- Update this plan weekly during pre-production phase
- Mark items as β when completed
- Move completed items to
docs/changelog/todo-cleanup-log.md
GitHub Issue Tracking:
- Create labels:
todo-critical,todo-high,todo-epic-6+ - Link issues to this plan for traceability
- Update Epic 6+ roadmap when prioritizing medium-priority TODOs
Team Communication:
- Share this plan in weekly standup
- Assign critical TODOs to team members
- Review high-priority TODOs in sprint planning