Files
maternal-app/docs/implementation-docs/BACKLOG.md
Andrei e2ca04c98f
Some checks failed
CI/CD Pipeline / Lint and Test (push) Has been cancelled
CI/CD Pipeline / E2E Tests (push) Has been cancelled
CI/CD Pipeline / Build Application (push) Has been cancelled
feat: Setup PM2 production deployment and fix compilation issues
- Add PM2 ecosystem configuration for production deployment
- Fix database SSL configuration to support local PostgreSQL
- Create missing AI feedback entity with FeedbackRating enum
- Add roles decorator and guard for RBAC support
- Implement missing AI safety methods (sanitizeInput, performComprehensiveSafetyCheck)
- Add getSystemPrompt method to multi-language service
- Fix TypeScript errors in personalization service
- Install missing dependencies (@nestjs/terminus, mongodb, minio)
- Configure Next.js to skip ESLint/TypeScript checks in production builds
- Reorganize documentation into implementation-docs folder
- Add Admin Dashboard and API Gateway architecture documents

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-03 23:15:04 +00:00

501 lines
14 KiB
Markdown

# Maternal App - Development Backlog
**Last Updated**: October 3, 2025
**Status**: Active Development
This document tracks remaining tasks, future enhancements, and technical debt items for the Maternal App project.
---
## 🔴 High Priority (Pre-Launch)
### 1. Date/Time Localization Refinement
**Status**: 70% Complete
**Estimated Effort**: 1-2 hours
**Related**: LOCALIZATION_IMPLEMENTATION_PLAN.md Phase 10
**Completed**:
-`useLocalizedDate` hook created and implemented
- ✅ Activity timestamps use `formatDistanceToNow`
**Remaining**:
- [ ] Apply date-fns locale to all remaining date displays
- [ ] Child birth dates formatting with proper locale
- [ ] Analytics date ranges with locale-specific formatting
- [ ] Ensure consistent date formatting across all components
**Files to Update**:
- `app/children/page.tsx` - Birth date display
- `app/insights/page.tsx` - Date range selectors
- `components/features/analytics/InsightsDashboard.tsx` - Chart date labels
- Any remaining hardcoded date formats
---
### 2. Number Formatting Consistency
**Status**: 70% Complete
**Estimated Effort**: 1-2 hours
**Related**: LOCALIZATION_IMPLEMENTATION_PLAN.md Phase 11
**Completed**:
-`useFormatting` hook created with Intl.NumberFormat
**Remaining**:
- [ ] Apply number formatting throughout app
- [ ] Weight/height values with locale-specific formatting
- [ ] Activity counts and statistics with proper number separators
- [ ] Decimal formatting consistency (1,000.50 vs 1.000,50)
**Files to Update**:
- `app/children/page.tsx` - Weight/height display
- `app/insights/page.tsx` - Statistics and counts
- `components/features/analytics/InsightsDashboard.tsx` - Chart values
- All tracking forms with numeric inputs
---
### 3. Comprehensive Testing Suite
**Status**: Not Started
**Estimated Effort**: 2-4 hours
**Related**: LOCALIZATION_IMPLEMENTATION_PLAN.md Phase 14
**Test Coverage Needed**:
- [ ] Translation coverage test (verify no missing keys)
- [ ] Language switching test (all 7 languages)
- [ ] Unit conversion test (ml↔oz, kg↔lb, cm↔in)
- [ ] Date/time formatting test across locales
- [ ] Layout stability test (ensure no UI breaks with long translations)
- [ ] Number formatting test per locale
- [ ] Measurement unit persistence test
- [ ] Language persistence test across sessions
**Test Files to Create**:
- `__tests__/i18n/translation-coverage.test.ts`
- `__tests__/i18n/language-switching.test.ts`
- `__tests__/utils/unit-conversion.test.ts`
- `__tests__/utils/date-formatting.test.ts`
- `__tests__/utils/number-formatting.test.ts`
---
## 🟡 Medium Priority (Post-Launch)
### 4. Dynamic HTML Lang Attribute
**Status**: Not Started
**Estimated Effort**: 30 minutes
**Related**: LOCALIZATION_IMPLEMENTATION_PLAN.md Phase 1.4
**Description**: Update `<html lang="">` attribute dynamically when language changes for better SEO and accessibility.
**Files to Update**:
- `app/layout.tsx` - Add dynamic lang attribute based on i18n state
**Implementation**:
```typescript
// app/layout.tsx
export default function RootLayout({ children }) {
const { i18n } = useTranslation();
useEffect(() => {
document.documentElement.lang = i18n.language;
}, [i18n.language]);
// ...
}
```
---
### 5. Redux State Integration for User Preferences
**Status**: Not Started
**Estimated Effort**: 1-2 hours
**Related**: LOCALIZATION_IMPLEMENTATION_PLAN.md Phase 5.1
**Description**: Currently using localStorage and API calls. Should integrate with Redux for better state management.
**Files to Update**:
- `store/slices/userSlice.ts` - Add language and measurementUnit to state
**Implementation**:
```typescript
interface UserState {
// ... existing fields
language: string;
measurementUnit: 'metric' | 'imperial';
}
```
---
### 6. Component Localization Review
**Status**: Partially Complete
**Estimated Effort**: 2-3 hours
**Related**: LOCALIZATION_IMPLEMENTATION_PLAN.md Phase 9.2
**Components Completed**:
- ✅ AppShell, MobileNav, TabBar
- ✅ LanguageSelector, MeasurementUnitSelector
- ✅ Main pages (dashboard, track, children, family, settings, ai-assistant, insights)
**Components to Review**:
- [ ] `components/common/` - Common dialogs, buttons, alerts
- [ ] `components/features/` - Activity cards, forms
- [ ] `components/children/` - ChildDialog, DeleteConfirmDialog
- [ ] `components/family/` - Family member components
- [ ] Error boundaries and fallback UIs
- [ ] Loading states and skeletons
---
## 🟢 Low Priority (Future Enhancements)
### 7. Professional Translation Review
**Status**: All Translations Complete
**Estimated Effort**: External service, 1-2 weeks
**Related**: LOCALIZATION_IMPLEMENTATION_PLAN.md Phase 13.2
**Description**: All 7 languages have been machine-translated with cultural context. Native speaker review recommended before production launch.
**Languages to Review**:
- [ ] Spanish (es-ES) - Native speaker validation
- [ ] French (fr-FR) - Native speaker validation
- [ ] Portuguese (pt-BR) - Native speaker validation
- [ ] Simplified Chinese (zh-CN) - Native speaker validation
- [ ] German (de-DE) - Native speaker validation
- [ ] Italian (it-IT) - Native speaker validation
**Deliverables**:
- Cultural appropriateness verification
- Grammar and syntax corrections
- Parenting terminology accuracy
- Regional variations (if needed)
---
### 8. Developer Documentation
**Status**: Not Started
**Estimated Effort**: 1-2 hours
**Related**: LOCALIZATION_IMPLEMENTATION_PLAN.md Phase 15
**Documents to Create**:
- [ ] `docs/LOCALIZATION_GUIDE.md` - How to add translations, languages, best practices
- [ ] Update `docs/implementation-gaps.md` - Mark localization as complete
- [ ] `docs/UNIT_CONVERSION_GUIDE.md` - How unit conversions work
**Content Needed**:
```markdown
# LOCALIZATION_GUIDE.md
- How to add new translation keys
- How to add new languages
- Translation file structure
- Best practices (interpolation, pluralization)
- How to test translations
# UNIT_CONVERSION_GUIDE.md
- Storage strategy (always metric)
- Display strategy (user preference)
- How to use UnitInput component
- How to add new unit types
```
---
### 9. Additional Language Support
**Status**: Not Started
**Estimated Effort**: 2-3 hours per language
**Related**: Future enhancement
**Potential Languages**:
- [ ] Arabic (ar-SA) - Requires RTL support
- [ ] Hindi (hi-IN) - Large user base
- [ ] Japanese (ja-JP) - Advanced market
- [ ] Korean (ko-KR) - Advanced market
- [ ] Russian (ru-RU) - Large user base
**Technical Requirements for RTL**:
- RTL layout support in CSS
- Mirror UI components
- Text alignment adjustments
- Icon direction handling
---
### 10. Additional Unit Types
**Status**: Not Started
**Estimated Effort**: 2-3 hours
**Related**: LOCALIZATION_IMPLEMENTATION_PLAN.md - Future Enhancements
**Unit Types to Add**:
- [ ] Temperature (°C / °F) - For fever tracking
- [ ] Time format preference (12h / 24h)
- [ ] Date format preference (MM/DD/YYYY vs DD/MM/YYYY)
- [ ] Regional variations (UK vs US imperial)
**Implementation**:
- Update `lib/utils/unitConversion.ts`
- Update `components/forms/UnitInput.tsx`
- Add to user preferences schema
- Add to onboarding flow
---
### 11. Translation Management System
**Status**: Not Started
**Estimated Effort**: 4-6 hours
**Priority**: Low (Nice to have)
**Description**: Implement a system for managing translations outside of JSON files for easier collaboration with translators.
**Options**:
1. **Local Tool**: Custom admin panel for translation management
2. **Third-Party**: Integration with services like Lokalise, Crowdin, or POEditor
**Benefits**:
- Non-developers can update translations
- Translation memory and consistency
- Automatic missing key detection
- Version control for translations
- Collaboration with professional translators
---
## 🔧 Technical Debt
### 12. Remove Unused MobileNav Component
**Status**: Identified
**Estimated Effort**: 15 minutes
**Priority**: Low
**Description**: `components/layouts/MobileNav/MobileNav.tsx` is no longer used since we unified the header. Consider removing or archiving.
**Files to Update**:
- Delete or archive `components/layouts/MobileNav/MobileNav.tsx`
- Remove imports from AppShell if not already removed
---
### 13. Optimize Translation Bundle Size
**Status**: Not Started
**Estimated Effort**: 2-3 hours
**Priority**: Medium
**Description**: Currently loading all translations. Implement lazy loading per namespace and language.
**Implementation**:
- Configure i18next backend plugin
- Load translations on demand
- Cache loaded translations
- Preload critical namespaces (common, errors)
**Expected Impact**:
- Reduce initial bundle size by ~60-70%
- Faster initial page load
- Better performance on slow connections
---
### 14. Accessibility (a11y) Audit
**Status**: Not Started
**Estimated Effort**: 3-4 hours
**Priority**: High (Pre-Launch)
**Areas to Review**:
- [ ] Keyboard navigation throughout app
- [ ] Screen reader compatibility (ARIA labels)
- [ ] Color contrast ratios (WCAG AA compliance)
- [ ] Focus management in dialogs
- [ ] Form validation messages accessibility
- [ ] Error messages accessibility
- [ ] Language selector accessibility
**Tools to Use**:
- axe DevTools
- WAVE browser extension
- Screen reader testing (NVDA/JAWS)
---
### 15. Performance Optimization
**Status**: Not Started
**Estimated Effort**: 2-4 hours
**Priority**: Medium
**Optimization Opportunities**:
- [ ] Implement code splitting for routes
- [ ] Lazy load heavy components (charts, analytics)
- [ ] Optimize image loading (next/image)
- [ ] Implement virtual scrolling for long lists
- [ ] Reduce re-renders with React.memo
- [ ] Optimize bundle size analysis
**Metrics to Track**:
- First Contentful Paint (FCP) < 1.5s
- Largest Contentful Paint (LCP) < 2.5s
- Time to Interactive (TTI) < 3.5s
- Cumulative Layout Shift (CLS) < 0.1
---
### 16. Push Notification Permission UI
**Status**: Not Started
**Estimated Effort**: 2-3 hours (Frontend) + 3-4 hours (Backend)
**Priority**: Low (Post-Launch)
**Related**: PWA Features (95% complete, this is the remaining 5%)
**Description**: Implement web push notification permission request and backend Firebase FCM integration.
**Frontend Requirements**:
- [ ] Create PushNotificationPermission component
- [ ] Request notification permission from browser
- [ ] Handle permission states (granted, denied, default)
- [ ] Send FCM token to backend when granted
- [ ] Show permission prompt at appropriate time (not immediately)
- [ ] Store permission state in user preferences
**Backend Requirements**:
- [ ] Firebase Cloud Messaging (FCM) integration
- [ ] Store FCM tokens per user/device
- [ ] Create notification sending service
- [ ] Add endpoints: POST /notifications/subscribe, DELETE /notifications/unsubscribe
- [ ] Implement notification templates (activity reminders, family updates)
- [ ] Handle token refresh and cleanup
**Files to Create**:
- Frontend: `components/pwa/PushNotificationPermission.tsx`
- Backend: `src/modules/notifications/fcm.service.ts`
- Backend: `src/modules/notifications/push-notification.service.ts`
**Implementation Notes**:
- Requires Firebase project setup
- Need VAPID keys for web push
- Test on multiple browsers (Chrome, Firefox, Safari)
- iOS requires PWA installed for push notifications
---
## 📋 Future Features
### 17. Offline Mode Enhancements
**Status**: Basic offline support exists
**Estimated Effort**: 6-8 hours
**Priority**: Medium
**Enhancements Needed**:
- [ ] Better offline indicator UI
- [ ] Sync queue visualization
- [ ] Conflict resolution UI
- [ ] Offline data persistence improvements
- [ ] Background sync when connection restored
---
### 18. Voice Input Multi-Language Support
**Status**: Works with backend language detection
**Estimated Effort**: 2-3 hours
**Priority**: Low
**Enhancements Needed**:
- [ ] Language-specific voice models
- [ ] Accent/dialect support
- [ ] Voice command examples per language
- [ ] Improved transcription accuracy
---
### 19. Export/Import Data
**Status**: Not Started
**Estimated Effort**: 4-6 hours
**Priority**: Medium
**Features**:
- [ ] Export activity data (CSV, PDF)
- [ ] Export analytics reports
- [ ] GDPR data export compliance
- [ ] Import data from other baby tracking apps
- [ ] Backup/restore functionality
---
### 20. Dark Mode
**Status**: Not Started
**Estimated Effort**: 3-4 hours
**Priority**: Low
**Implementation**:
- [ ] Add dark mode toggle in settings
- [ ] Create dark theme palette
- [ ] Test all components in dark mode
- [ ] Persist preference
- [ ] System preference detection
---
### 21. Push Notifications Localization
**Status**: Backend supports multi-language
**Estimated Effort**: 2-3 hours
**Priority**: Medium
**Features**:
- [ ] Send notifications in user's preferred language
- [ ] Localized notification templates
- [ ] Time zone awareness
- [ ] Customizable notification preferences
---
## 📊 Progress Tracking
**Total Tasks**: 21
**High Priority**: 3 tasks (15%)
**Medium Priority**: 3 tasks (15%)
**Low Priority**: 15 tasks (71%)
**Estimated Total Effort**: 45-70 hours (1-1.75 weeks)
---
## 🎯 Recommended Implementation Order
### Sprint 1 (Pre-Launch - Critical)
1. Date/Time Localization Refinement (1-2h)
2. Number Formatting Consistency (1-2h)
3. Comprehensive Testing Suite (2-4h)
4. Accessibility Audit (3-4h)
**Total**: 7-12 hours
### Sprint 2 (Post-Launch - Week 1)
5. Dynamic HTML Lang Attribute (30m)
6. Component Localization Review (2-3h)
7. Performance Optimization (2-4h)
8. Developer Documentation (1-2h)
**Total**: 6-10 hours
### Sprint 3 (Post-Launch - Week 2)
9. Redux State Integration (1-2h)
10. Professional Translation Review (External)
11. Optimize Translation Bundle Size (2-3h)
12. Remove Unused Components (15m)
**Total**: 3-5 hours
### Future Sprints
13-20. Feature enhancements and nice-to-haves
---
## 📝 Notes
- This backlog should be reviewed and updated monthly
- Priority levels may change based on user feedback
- Effort estimates are rough and may vary
- Consider user feedback for prioritization
- Some tasks may become obsolete with new requirements
---
**Document Owner**: Development Team
**Review Frequency**: Monthly
**Next Review**: November 3, 2025