1. 09 Jul, 2026 9 commits
    • Mahmoud Aglan's avatar
      Make website light theme + skeletons the default for ALL new instances · 45593f71
      Mahmoud Aglan authored
      - Auto-seed default sections on first visit when none exist
      - Every section now shows skeleton placeholders when empty (branches,
        partners, pricing, trainers, stats, schedule)
      - Converted remaining dark sections to light theme (branches, trainers,
        pricing, contact, schedule) for consistency
      - Stats band keeps dark bg for visual contrast
      - Fresh deploy = beautiful skeleton website ready for client to imagine
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      45593f71
    • Mahmoud Aglan's avatar
      Add Purchase Order create/show/edit routes and components · 0c31ec65
      Mahmoud Aglan authored
      Fixes Route [inventory.purchase-orders.create] not defined error by adding
      the missing routes and creating PurchaseOrderForm + PurchaseOrderShow
      Livewire components with full Arabic UI.
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      0c31ec65
    • Mahmoud Aglan's avatar
      Redesign academy website to light theme with skeleton empty states · 85cf6677
      Mahmoud Aglan authored
      - Default background: white, text: dark gray, accent: blue
      - Hero/navbar/footer stay dark (branded primary color)
      - All sections show skeleton placeholder cards when no data exists
      - Removed all hard-coded oklch dark values from section views
      - Cards, testimonials, FAQ items now use white bg + subtle borders
      - Empty states show shimmer animation + "لم تُضف ... بعد" message
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      85cf6677
    • Mahmoud Aglan's avatar
      Fix website programs view + stale cache crash on deploy · 9ea528af
      Mahmoud Aglan authored
      - Use null-coalescing for age_from/age_to/duration_months (columns don't exist yet)
      - Handle __PHP_Incomplete_Class from stale cache by re-fetching on type mismatch
      - Add cache:clear to deploy entrypoint to prevent stale cache after rebuilds
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      9ea528af
    • Mahmoud Aglan's avatar
      Fix Blade compile error: move @if out of JSON-LD script block · d4ecf0e2
      Mahmoud Aglan authored
      Livewire's ExtendedCompilerEngine misparses @if inside <script> tags.
      Replaced inline Blade conditionals with @php block + json_encode.
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      d4ecf0e2
    • Mahmoud Aglan's avatar
      Make public website the home page + add Website CMS to sidebar · 891abd7d
      Mahmoud Aglan authored
      - Route / now serves academy public website (no auth required)
      - Dashboard moved to /dashboard
      - Login/Dashboard button added to website navbar (desktop + mobile)
      - Added "الموقع الإلكتروني" section to sidebar with all 9 CMS pages
      - Added missing inventory items (POs, Kits, Stock Counts) to sidebar
      - Configured explicit middleware redirects for guest/auth flows
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      891abd7d
    • Mahmoud Aglan's avatar
      Enforce role-based data scoping across all list components · 97db5304
      Mahmoud Aglan authored
      - Add branch_id accessor to User model (resolves from role_user pivot)
      - Create AppliesRoleScope trait for one-liner scope enforcement
      - Enhance PermissionService: include head_trainer_id in group lookup,
        add training_programs and invoices table support for own_groups scope
      - Apply AppliesRoleScope to 16 list components:
        ParticipantList, GroupList, EnrollmentList, AttendanceList,
        InvoiceList, ProgramList, EvaluationList, CashSessionList,
        WalletList, AssignmentList, PersonList, FacilityList,
        ProductList, PurchaseOrderList, KitList, StockCountList
      
      Now trainers only see their assigned groups/participants,
      branch managers only see their branch data, parents only
      see their children, and receptionists are branch-scoped.
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      97db5304
    • Mahmoud Aglan's avatar
      Fix UserForm to detect existing entities and repair orphan role states · ecf6909c
      Mahmoud Aglan authored
      - Detect on mount if user already has Trainer/Employee/Guardian records
      - Show green notice when record exists, amber warning when role implies
        record but none exists (orphan state)
      - Allow entity creation on save even without role change when entities
        are missing (repair orphaned users from before the redesign)
      - Disable create toggles when record already exists to prevent duplicates
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      ecf6909c
    • Mahmoud Aglan's avatar
      Redesign all entity creation flows into integrated workflows · c000ea07
      Mahmoud Aglan authored
      - CreateTrainerWizard: 9-step flow with activities, user account creation,
        and initial group assignment (was 6 disconnected steps)
      - CreateProgramWizard: 7-step flow with head trainer, schedule template,
        initial group, BasePrice record, facility (was 4 steps, no group/trainer)
      - NewRegistrationWizard: add parent account creation step so guardians
        can log in to the Parent Portal immediately
      - UserForm: role-aware prompts — assigning trainer role creates
        Trainer+Employee records, parent role links Guardian, staff creates Employee
      - EnrollmentForm: 3-panel guided experience with group cards, capacity bars,
        live price preview from PricingService, and schedule conflict detection
      - TrainerCredentialsGenerated event for async email delivery
      
      Closes the "isolated CRUD screens" problem — every entity creation now
      handles the full business workflow in a single transaction.
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      c000ea07
  2. 07 Jul, 2026 3 commits
  3. 06 Jul, 2026 1 commit
  4. 05 Jul, 2026 27 commits