341 lines
8.4 KiB
Markdown
341 lines
8.4 KiB
Markdown
# 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
|