# Menu & Page Consolidation Plan ## Current State Analysis ### Pages Breakdown - **5 page.tsx files** located in different routes - **55 view/page components** across the codebase - **Multiple menu implementations** (sidebar, navbar, dropdown) - **Repeated navigation logic** in different sections ### Identified Duplications #### 1. Dashboard Pages ``` Current State: - /app/dashboard/page.tsx (main) - src/components/dashboard-view.tsx - src/components/teacher-dashboard.tsx - src/components/student-dashboard.tsx - src/components/admin-dashboard.tsx Issues: - Same filters, charts, and layout logic repeated - Different API calls for same data - Inconsistent styling and interactions ``` #### 2. Grading/Assessment Pages ``` Current State: - src/components/grading-view.tsx - src/components/tablet-grading-view.tsx - src/components/grade-analytics-view.tsx - src/components/assessments-view.tsx - src/components/ai-tests-view.tsx - src/components/exam-view.tsx Issues: - Grading logic duplicated 3 times - Assessment creation logic in 2 places - Different state management approaches ``` #### 3. Communication Pages ``` Current State: - src/components/communication-view.tsx - src/components/messaging-view.tsx - src/components/announcements-view.tsx Issues: - Same message filtering logic - Duplicate attachment handling - Repeated notification sending ``` #### 4. Attendance/Behavior Pages ``` Current State: - src/components/attendance-view.tsx - src/components/wellness-check-view.tsx - src/components/behavior-tracking-view.tsx Issues: - Same tabular data display - Duplicate filtering and search - Repeated export functionality ``` --- ## Consolidation Strategy ### Target Architecture ``` /app/routes (Role-based) ├── /teacher (All teacher features) ├── /student (All student features) └── /admin (All admin features) /components/modules (Feature-based) ├── /dashboard (Dashboard widget system) ├── /grading (All grading modes) ├── /assessments (Assessment creation & taking) ├── /communication (Messages, announcements) ├── /attendance (Attendance, behavior, wellness) ├── /analytics (Reports and insights) └── /compliance (Legal and audit) ``` ### Step-by-Step Consolidation #### Phase 1: Dashboard Consolidation **Before:** ```typescript // src/components/dashboard-view.tsx export function DashboardView() { ... } // src/components/teacher-dashboard.tsx export function TeacherDashboard() { ... } // src/components/student-dashboard.tsx export function StudentDashboard() { ... } ``` **After:** ```typescript // src/components/modules/dashboard/Dashboard.tsx export function Dashboard() { const { role } = useAuth(); const layouts = { TEACHER: , STUDENT: , ADMIN: , PARENT: , }; return {layouts[role]}; } // src/components/modules/dashboard/layouts/TeacherLayout.tsx export function TeacherLayout() { ... } // src/components/modules/dashboard/layouts/StudentLayout.tsx export function StudentLayout() { ... } ``` **Benefit:** - Single component entry point - Shared dashboard logic (refresh, theme, widgets) - Unified state management - 40% code reduction #### Phase 2: Grading Consolidation **Before:** ```typescript // Three separate components with duplicated logic export function GradingView() { ... } export function TabletGradingView() { ... } export function GradeAnalyticsView() { ... } ``` **After:** ```typescript // src/components/modules/grading/GradingPanel.tsx export function GradingPanel({ mode = 'view', // 'view' | 'edit' | 'analytics' variant = 'desktop', // 'desktop' | 'tablet' | 'mobile' filters = {}, }) { const layoutComponent = layouts[variant]; const displayComponent = displays[mode]; return ( ); } ``` **Benefit:** - Single grading interface for all modes - Consistent grading logic across devices - 50% code reduction - Easier testing #### Phase 3: Assessment Consolidation **Before:** ```typescript // Two separate implementations export function AssessmentsView() { ... } // Teacher view export function AITestsView() { ... } // AI generation export function ExamView() { ... } // Student taking exam ``` **After:** ```typescript // src/components/modules/assessments/AssessmentManager.tsx export function AssessmentManager() { const { role, action } = useParams(); // 'create', 'edit', 'take', 'review' const views = { create: , edit: , take: , review: , }; return <>{views[action]}; } ``` **Benefit:** - Single assessment entry point - Shared assessment schema - Unified state management - 45% code reduction #### Phase 4: Communication Consolidation **Before:** ```typescript // Three separate message systems export function CommunicationView() { ... } export function MessagingView() { ... } export function AnnouncementsView() { ... } ``` **After:** ```typescript // src/components/modules/communication/CommunicationHub.tsx export function CommunicationHub() { const [tab, setTab] = useState('messages'); // 'messages' | 'announcements' | 'notifications' return ( ); } ``` **Benefit:** - Single communication interface - Unified message handling - 35% code reduction --- ## Navigation Consolidation ### Current Menu Issues - Sidebar repeats routes based on role - Nested menus with similar names - Duplicate action buttons ### New Navigation System **Before:** ```typescript // Multiple conditional navigation systems const teacherMenu = [ { label: 'Grades', href: '/teacher/grading' }, { label: 'Grades Analytics', href: '/teacher/grades/analytics' }, { label: 'Grade Entry', href: '/teacher/grading/entry' }, ]; const adminMenu = [ { label: 'Grading', href: '/admin/grading' }, { label: 'Grade Reports', href: '/admin/reports/grades' }, ]; ``` **After:** ```typescript // Single unified navigation config const navigationConfig = { TEACHER: [ { label: 'Dashboard', href: '/dashboard' }, { label: 'Grading', href: '/grading', submenu: [ { label: 'View Grades', href: '?mode=view' }, { label: 'Enter Grades', href: '?mode=edit' }, { label: 'Analytics', href: '?mode=analytics' }, ], }, { label: 'Assessments', href: '/assessments' }, { label: 'Communication', href: '/communication' }, { label: 'Attendance', href: '/attendance' }, ], STUDENT: [ { label: 'Dashboard', href: '/dashboard' }, { label: 'Grades', href: '/grades' }, { label: 'Assessments', href: '/assessments' }, { label: 'Messages', href: '/messages' }, ], }; // Usage ``` --- ## Implementation Roadmap ### Week 1: Foundation - [ ] Create module directory structure - [ ] Set up shared hooks and utilities - [ ] Create component templates ### Week 2: Dashboard & Grading - [ ] Consolidate dashboard components - [ ] Consolidate grading components - [ ] Test on all devices (desktop, tablet, mobile) ### Week 3: Assessments & Communication - [ ] Consolidate assessment components - [ ] Consolidate communication components - [ ] Update navigation system ### Week 4: Polish & Testing - [ ] Optimize performance - [ ] Run memory audit - [ ] QA testing on all features --- ## File Cleanup ### Files to Remove (After Consolidation) ``` src/components/dashboard-view.tsx src/components/teacher-dashboard.tsx src/components/student-dashboard.tsx src/components/admin-dashboard.tsx src/components/grading-view.tsx src/components/tablet-grading-view.tsx src/components/grade-analytics-view.tsx src/components/assessments-view.tsx src/components/ai-tests-view.tsx src/components/exam-view.tsx src/components/communication-view.tsx src/components/messaging-view.tsx src/components/announcements-view.tsx src/components/attendance-view.tsx src/components/wellness-check-view.tsx src/components/behavior-tracking-view.tsx ``` ### Estimated Savings - **55 view components** → **12 consolidated modules** = 79% reduction - **Lines of code:** ~15,000 → ~7,500 - **Duplicate code:** 40% → <5% - **Bundle size:** ~450KB → ~280KB --- ## Testing Checklist After consolidation, verify: - [ ] All teacher features work in dashboard - [ ] All student features accessible in student view - [ ] Grading works on desktop, tablet, mobile - [ ] Assessment creation and taking flows work - [ ] Message sending and receiving works - [ ] Navigation is consistent across all roles - [ ] No memory leaks on long sessions - [ ] Performance improved (check Web Vitals) --- ## Success Metrics | Metric | Before | After | Target | |--------|--------|-------|--------| | Components | 55 | 12 | ✓ | | Pages | 5 | 2 | ✓ | | Code duplication | 40% | <5% | ✓ | | Bundle size | 450KB | <300KB | ✓ | | Memory usage | 120MB | <75MB | ✓ | | Time to interactive | 3.2s | <1.5s | ✓ |