- 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>
14 KiB
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:
- ✅
useLocalizedDatehook 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 displayapp/insights/page.tsx- Date range selectorscomponents/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:
- ✅
useFormattinghook 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 displayapp/insights/page.tsx- Statistics and countscomponents/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:
// 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:
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, alertscomponents/features/- Activity cards, formscomponents/children/- ChildDialog, DeleteConfirmDialogcomponents/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:
# 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:
- Local Tool: Custom admin panel for translation management
- 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)
- Date/Time Localization Refinement (1-2h)
- Number Formatting Consistency (1-2h)
- Comprehensive Testing Suite (2-4h)
- Accessibility Audit (3-4h)
Total: 7-12 hours
Sprint 2 (Post-Launch - Week 1)
- Dynamic HTML Lang Attribute (30m)
- Component Localization Review (2-3h)
- Performance Optimization (2-4h)
- Developer Documentation (1-2h)
Total: 6-10 hours
Sprint 3 (Post-Launch - Week 2)
- Redux State Integration (1-2h)
- Professional Translation Review (External)
- Optimize Translation Bundle Size (2-3h)
- 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