# Filament Panels Configuration

## Overview
The application uses **two Filament v3 panels** for separate admin and program interfaces.

## Admin Panel (`/admin`)

### Panel Provider: `AdminPanelProvider`
**ID:** `admin`
**Path:** `/admin`
**Auth Guard:** Default web guard
**Primary Color:** Amber

### Resources
| Resource | Description |
|----------|-------------|
| `CountryResource` | Country management |
| `ProgramResource` | Program CRUD (system-level) |
| `UserResource` | User management |
| `NotificationSettingResource` | Notification settings |
| `SubscriptionRequestResource` | Subscription requests |
| `PaymentResource` | Payment records |

### Pages
- `ManageGeneral` — General settings (branding, site info)
- `WhatsappSettings` — WhatsApp integration settings
- `Subscriptions` — Subscription management
- `Plans` — Plan management
- `ManageTranslations` — Translation management
- `SendCustomNotification` — Ad-hoc notification sender

### Widgets (Header)
- `OnlineUsersStats` — Currently online users
- `SubscriptionStatusWidget` — Subscription status overview
- `ExpiringSubscriptionsWidget` — Subscriptions expiring soon
- `PaymentQueueWidget` — Pending payment queue
- `ParticipationPendingRequestsWidget` — Pending participation requests

### Middleware
- Custom: `EnsureUserIsVerified`, `EnsureUserIsSuper`
- Standard Filament middleware stack

### Plugins
- `FilamentLanguageSwitcherPlugin` — Language switching

### Features
- Database notifications (polling every 30s)
- PanelSwitch for super-admins to switch between panels

## Program Panel (`/program`)

### Panel Provider: `ProgramPanelProvider`
**ID:** `program`
**Path:** `/program`
**Auth Guard:** `web` (default)
**Primary Color:** Amber
**Default Panel:** Yes

### Resources
| Resource | Description |
|----------|-------------|
| `ProgramLevelResource` | Program levels |
| `CourseResource` | Course management |
| `LessonResource` | Lesson management |
| `TrainingResource` | Training assessments |
| `ExamResource` | Exam management |
| `VideoResource` | Video management |
| `UserResource` | User management (teachers/students) |
| `ProgramResource` | Program profile (edit only) |
| `TeamResource` | Team/Group management |
| `StudentResource` | Student management |
| `PathStepResource` | Learning path steps |
| `ClassroomResource` | Classroom sessions |
| `AssessmentResource` | Assessment management |
| `CompetitionResource` | Competition management |
| `LevelClassificationResource` | Level classifications |
| `RankingTitleResource` | Ranking titles |
| `MarathonResource` | Marathon events |
| `AnnouncementResource` | Announcements |

### Pages
- Dashboard
- `AssessmentRanking` — Assessment rankings
- `MySubscription` — User's subscription view
- `AssessmentClassification` — Assessment classification
- `AssessmentsClassification` — Bulk classification
- `Activities` — Activity log
- `EligibilityManagerPage` — Participation eligibility
- `ParticipationRequestManagementPage` — Participation requests
- `PaymentVerificationPage` — Payment verification
- `StudentEnrollmentPage` — Student enrollment

### Widgets (Header)
- `OnlineUsersStats`
- `SubscriptionStatusWidget`
- `ExpiringSubscriptionsWidget`
- `MarathonParticipationWidget`
- `CompetitionParticipationWidget`
- `StudentEnrollmentWidget`
- `TeacherParticipationWidget`
- `ParticipationPendingRequestsWidget`

### User Menu Items
- Teacher/Student registration link (copy to clipboard)
- Edit Profile (links to appropriate resource)
- My Subscription
- Program edit page (for portal-admins)

### Middleware
- Custom: `EnsureUserIsVerified`, `EnsureUserBelongsToProgram`, `UpdateLastActivity`, `RecordUserActivity`
- Standard Filament middleware stack

### Plugins
- `FilamentLanguageSwitcherPlugin`
- `ChatifyPlugin` (messaging)
- `FilamentUserActivityPlugin` (activity tracking)

### Features
- Database notifications (polling every 3s)
- Announcement bars via render hook (`BODY_START`)
- Unverified user sidebar hiding (CSS injection)
- Breadcrumbs enabled

## BaseResource (`app/Filament/Resources/BaseResource.php`)
Shared base resource class for common Filament resource configuration.

## Traits
- `HasPerValueFilterRemoval` — Trait for removing per-value filters

## Custom Pages Location
All custom Filament pages are in `app/Filament/Pages/`:
- Auth pages (login, register, verify, password reset) in subdirectories
- Settings pages: `ManageGeneral`, `ManageMail`, `WhatsappSettings`, `SiteSettings`, etc.
- Feature pages: `MentalMathTimer`, `AssessmentRanking`, `EligibilityManagerPage`, etc.
