# Epic 6: Admin Dashboard ## Epic Goal Create a comprehensive admin dashboard providing centralized control, statistics, analytics, data exports, and system configuration for the law firm's operations. ## Epic Description ### Business Context The lawyer needs a central control panel to manage all aspects of the platform efficiently. This includes real-time metrics, quick actions, data visualization, export capabilities, and system settings. ### Technical Context - **Charts:** Chart.js for visualizations - **Exports:** CSV and PDF formats - **Real-time:** Live metrics updates - **PDF:** barryvdh/laravel-dompdf - **CSV:** league/csv ### Success Criteria - [ ] Overview dashboard with key metrics - [ ] Charts for trends and analytics - [ ] Quick access to pending actions - [ ] Data export (CSV, PDF) - [ ] System settings management - [ ] Legal pages editor (Terms, Privacy) - [ ] Audit log visibility - [ ] Responsive design for tablet use --- ## Stories ### Story 6.1: Dashboard Overview & Statistics **Description:** Main dashboard page with real-time metrics and key performance indicators. **Acceptance Criteria:** - [ ] **User Metrics Card:** - Total active clients - Individual vs company breakdown - Deactivated clients count - New clients this month - [ ] **Booking Metrics Card:** - Pending requests count (highlighted) - Today's consultations - This week's consultations - This month's consultations - Total consultations (all time) - Free vs paid breakdown - No-show rate percentage - [ ] **Timeline Metrics Card:** - Active case timelines - Archived timelines - Updates added this week - [ ] **Posts Metrics Card:** - Total published posts - Posts published this month - [ ] Clean card-based layout - [ ] Color-coded status indicators - [ ] Quick stats at a glance **Technical Notes:** - Use Livewire for real-time updates - Cache expensive queries with short TTL - Responsive grid layout --- ### Story 6.2: Analytics Charts **Description:** Visual charts showing trends and historical data. **Acceptance Criteria:** - [ ] **Monthly Trends Chart (Line):** - New clients per month - Consultations per month - [ ] **Consultation Breakdown (Pie/Donut):** - Free vs paid ratio - [ ] **No-show Rate (Line):** - Monthly no-show trend - [ ] Date range selector: - Last 6 months - Last 12 months - Custom range - [ ] Chart tooltips with exact values - [ ] Responsive charts (resize with viewport) - [ ] Bilingual labels **Technical Notes:** - Use Chart.js - Data aggregated server-side - Lazy load chart data --- ### Story 6.3: Quick Actions Panel **Description:** Quick access to pending items requiring admin attention. **Acceptance Criteria:** - [ ] **Pending Bookings:** - Count badge with urgent indicator - Link to booking management - Mini list of recent pending - [ ] **Today's Schedule:** - List of today's consultations - Time and client name - Quick status update buttons - [ ] **Recent Timeline Updates:** - Last 5 updates made - Quick link to timeline - [ ] Notification bell with pending count - [ ] One-click access to common tasks: - Create user - Create post - Block time slot **Technical Notes:** - Dashboard widgets pattern - Real-time updates via Livewire polling --- ### Story 6.4: Data Export - User Lists **Description:** Export user data in CSV and PDF formats. **Acceptance Criteria:** - [ ] Export all users - [ ] Export individual clients only - [ ] Export company clients only - [ ] **Filter options:** - Date range (created) - Status (active/deactivated) - [ ] **CSV export includes:** - Name, email, phone - User type - National ID / Company reg - Status - Created date - [ ] **PDF export includes:** - Same data with professional formatting - Libra branding header - Generation timestamp - [ ] Download directly to device - [ ] Bilingual column headers (based on admin language) **Technical Notes:** - Use league/csv for CSV - Use barryvdh/laravel-dompdf for PDF - Chunked processing for large datasets --- ### Story 6.5: Data Export - Consultation Records **Description:** Export consultation/booking data. **Acceptance Criteria:** - [ ] Export all consultations - [ ] **Filter options:** - Date range - Consultation type (free/paid) - Status (approved/completed/no-show/cancelled) - Payment status - [ ] **Export includes:** - Client name - Date and time - Consultation type - Status - Payment status - Problem summary - [ ] CSV and PDF formats - [ ] Professional PDF layout with branding **Technical Notes:** - Similar pattern to user exports - Handle large problem summaries in PDF --- ### Story 6.6: Data Export - Timeline Reports **Description:** Export timeline and case data. **Acceptance Criteria:** - [ ] Export all timelines (across all clients) - [ ] Export timelines for specific client - [ ] **Filter options:** - Status (active/archived) - Date range - [ ] **Export includes:** - Case name and reference - Client name - Status - Created date - Number of updates - Last update date - [ ] CSV and PDF formats **Technical Notes:** - Option to include update content or summary only --- ### Story 6.7: Monthly Statistics Report **Description:** Generate comprehensive monthly PDF report. **Acceptance Criteria:** - [ ] "Generate Monthly Report" button - [ ] Select month/year - [ ] **PDF report includes:** - Overview of key metrics - Charts (rendered as images) - User statistics - Consultation statistics - Timeline statistics - Post statistics - [ ] Professional layout with branding - [ ] Table of contents - [ ] Printable format - [ ] Bilingual based on admin preference **Technical Notes:** - Complex PDF generation - Pre-render charts as base64 images - Longer generation time (loading indicator) --- ### Story 6.8: System Settings **Description:** Configure system-wide settings. **Acceptance Criteria:** - [ ] **Profile Settings:** - Admin name - Email - Password change - Preferred language - [ ] **Email Settings:** - View current sender email - Test email functionality - [ ] **Notification Preferences:** - Toggle admin notifications - Summary email frequency - [ ] Settings saved and applied immediately - [ ] Validation for all inputs **Technical Notes:** - Settings can be stored in config or database - Some settings may require .env changes (display only) --- ### Story 6.9: Legal Pages Editor **Description:** Admin-editable Terms of Service and Privacy Policy pages. **Acceptance Criteria:** - [ ] Edit Terms of Service: - Rich text editor - Bilingual content (Arabic/English) - Save and publish - [ ] Edit Privacy Policy: - Rich text editor - Bilingual content - Save and publish - [ ] Pages accessible from footer (public) - [ ] Last updated timestamp displayed - [ ] Preview before publishing **Technical Notes:** - Store in database (settings table or pages table) - Public routes for viewing - No versioning required (simple overwrite) --- ### Story 6.10: Audit Log Viewer **Description:** View admin action history for accountability. **Acceptance Criteria:** - [ ] List admin actions from admin_logs table - [ ] **Display:** - Action type (create, update, delete) - Target (user, consultation, timeline, etc.) - Old and new values (for updates) - Timestamp - IP address - [ ] Filter by: - Action type - Target type - Date range - [ ] Search by target name/ID - [ ] Pagination - [ ] Export audit log (CSV) **Technical Notes:** - admin_logs table from Epic 1 - Read-only view - Consider retention policy (future) --- ## Dependencies | Epic | Dependency | |------|------------| | Epic 1 | Base UI, authentication, database | | Epic 2 | User data for metrics | | Epic 3 | Booking data for metrics | | Epic 4 | Timeline data for metrics | | Epic 5 | Posts data for metrics | ## Risks & Mitigations | Risk | Impact | Mitigation | |------|--------|------------| | Large export performance | Medium | Chunked processing, background jobs | | PDF generation memory | Medium | Limit data per report, optimize | | Real-time metric performance | Low | Cache with short TTL, efficient queries | ## Definition of Done - [ ] All stories completed with acceptance criteria met - [ ] Metrics display accurately - [ ] Charts render correctly - [ ] Exports generate valid files - [ ] PDF branding correct - [ ] Settings save and apply - [ ] Legal pages editable and public - [ ] Audit log queryable - [ ] Responsive on tablet - [ ] Code formatted with Pint