docs: Add comprehensive multi-child implementation plan
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

Added detailed implementation plan covering:
- Frontend: Dynamic UI, child selector, bulk activity logging, comparison analytics
- Backend: Bulk operations, multi-child queries, family statistics
- AI/Voice: Child name detection, context building, clarification flows
- Database: Schema enhancements, user preferences, bulk operation tracking
- State management, API enhancements, real-time sync updates
- Testing strategy: Unit, integration, and E2E tests
- Migration plan with feature flags for phased rollout
- Performance optimizations: Caching, indexes, code splitting

Also includes:
- Security fixes for multi-family data leakage in analytics pages
- ParentFlow branding updates
- Activity tracking navigation improvements
- Backend DTO and error handling fixes

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-10-04 21:05:14 +00:00
parent f854fe6fcd
commit 95ef0e5e78
12 changed files with 2778 additions and 321 deletions

View File

@@ -19,10 +19,11 @@ import { TabBar } from '../TabBar/TabBar';
import { useMediaQuery } from '@/hooks/useMediaQuery';
import { ReactNode } from 'react';
import { useWebSocket } from '@/hooks/useWebSocket';
import { Wifi, WifiOff, People, AccountCircle, Settings, ChildCare, Group, Logout, Gavel } from '@mui/icons-material';
import { Wifi, WifiOff, People, AccountCircle, Settings, ChildCare, Group, Logout, Gavel, Favorite } from '@mui/icons-material';
import { useTranslation } from '@/hooks/useTranslation';
import { useRouter } from 'next/navigation';
import { useAuth } from '@/lib/auth/AuthContext';
import Link from 'next/link';
interface AppShellProps {
children: ReactNode;
@@ -93,7 +94,7 @@ export const AppShell = ({ children }: AppShellProps) => {
}}
>
{/* Left Side - Family Members Online Indicator */}
<Box>
<Box sx={{ width: 80, display: 'flex', justifyContent: 'flex-start' }}>
{isConnected && presence.count > 1 && (
<Tooltip title={t('connection.familyMembersOnline', { count: presence.count })}>
<Chip
@@ -109,7 +110,47 @@ export const AppShell = ({ children }: AppShellProps) => {
)}
</Box>
{/* Center - Logo */}
<Box
component={Link}
href="/"
sx={{
display: 'flex',
alignItems: 'center',
gap: 1,
textDecoration: 'none',
'&:hover': {
opacity: 0.8,
},
cursor: 'pointer',
}}
>
<Box
component="img"
src="/icon-192x192.png"
alt="ParentFlow logo"
sx={{
width: 32,
height: 32,
borderRadius: 1,
}}
/>
<Box
component="span"
sx={{
fontWeight: 700,
fontSize: { xs: '0.95rem', sm: '1.1rem' },
background: (theme) => `linear-gradient(135deg, ${theme.palette.primary.main} 0%, ${theme.palette.secondary.main} 100%)`,
WebkitBackgroundClip: 'text',
WebkitTextFillColor: 'transparent',
}}
>
ParentFlow
</Box>
</Box>
{/* Right Side - User Menu Button with Status Indicator */}
<Box sx={{ width: 80, display: 'flex', justifyContent: 'flex-end' }}>
<Tooltip title={isConnected ? t('connection.syncActive') : t('connection.syncDisconnected')}>
<IconButton
onClick={handleMenuOpen}
@@ -207,6 +248,7 @@ export const AppShell = ({ children }: AppShellProps) => {
<ListItemText>{t('navigation.logout')}</ListItemText>
</MenuItem>
</Menu>
</Box>
</Box>
<Container