captainVersion: 4
services:
    # PostgreSQL Database
    $$cap_appname-db:
        image: postgres:16-alpine
        volumes:
            - $$cap_appname-db-data:/var/lib/postgresql/data
        restart: always
        environment:
            POSTGRES_DB: $$cap_pg_db
            POSTGRES_USER: $$cap_pg_user
            POSTGRES_PASSWORD: $$cap_pg_password
        caproverExtra:
            notExposeAsWebApp: 'true'

    # El Captain App (Laravel + Nginx + Queue + Scheduler)
    $$cap_appname:
        depends_on:
            - $$cap_appname-db
        restart: always
        environment:
            APP_NAME: $$cap_academy_name_ar
            APP_ENV: production
            APP_KEY: $$cap_app_key
            APP_DEBUG: 'false'
            APP_URL: http://$$cap_appname.$$cap_root_domain
            APP_LOCALE: ar
            APP_FALLBACK_LOCALE: en
            APP_FAKER_LOCALE: ar_EG
            APP_MAINTENANCE_DRIVER: file
            BCRYPT_ROUNDS: '12'
            LOG_CHANNEL: stack
            LOG_STACK: single
            LOG_LEVEL: error
            DB_CONNECTION: pgsql
            DB_HOST: srv-captain--$$cap_appname-db
            DB_PORT: '5432'
            DB_DATABASE: $$cap_pg_db
            DB_USERNAME: $$cap_pg_user
            DB_PASSWORD: $$cap_pg_password
            SESSION_DRIVER: database
            SESSION_LIFETIME: '120'
            BROADCAST_CONNECTION: log
            FILESYSTEM_DISK: local
            QUEUE_CONNECTION: database
            CACHE_STORE: database
            MAIL_MAILER: $$cap_mail_mailer
            MAIL_HOST: $$cap_mail_host
            MAIL_PORT: $$cap_mail_port
            MAIL_USERNAME: $$cap_mail_username
            MAIL_PASSWORD: $$cap_mail_password
            MAIL_ENCRYPTION: $$cap_mail_encryption
            MAIL_FROM_ADDRESS: $$cap_mail_from_address
            MAIL_FROM_NAME: $$cap_academy_name_ar
            MAIL_VERIFY_PEER: 'false'
            TRUSTED_PROXIES: '*'
            PLATFORM_SERVICE_FEE_PERCENT: $$cap_platform_fee
            ADMIN_EMAIL: $$cap_admin_email
            ADMIN_PASSWORD: $$cap_admin_password
            ADMIN_NAME: $$cap_admin_name
            ACADEMY_NAME_AR: $$cap_academy_name_ar
            ACADEMY_NAME_EN: $$cap_academy_name_en
            RUN_SEED_ON_FIRST_DEPLOY: 'true'
        volumes:
            - $$cap_appname-storage:/var/www/html/storage/app
        caproverExtra:
            containerHttpPort: '80'

caproverOneClickApp:
    variables:
        - id: $$cap_app_version
          label: App Version
          defaultValue: latest
          description: 'Docker image tag. Use "latest" for most recent stable.'
          validRegex: /^([^\s^\/])+$/

        - id: $$cap_academy_name_ar
          label: اسم الأكاديمية (عربي)
          defaultValue: أكاديمية الكابتن
          description: 'اسم الأكاديمية بالعربي — يظهر في الفواتير والإيصالات'

        - id: $$cap_academy_name_en
          label: Academy Name (English)
          defaultValue: El Captain Academy
          description: 'English academy name.'

        - id: $$cap_admin_email
          label: Admin Email
          defaultValue: admin@example.com
          description: 'Login email for the first admin user.'
          validRegex: /^[^@]+@[^@]+\.[^@]+$/

        - id: $$cap_admin_password
          label: Admin Password
          defaultValue: $$cap_gen_random_hex(12)
          description: 'Password for admin login (min 8 chars).'
          validRegex: /.{8,}/

        - id: $$cap_admin_name
          label: Admin Name
          defaultValue: مدير النظام
          description: 'Full name of the admin user.'

        - id: $$cap_app_key
          label: App Key (Laravel)
          defaultValue: ''
          description: 'Leave empty to auto-generate on first boot.'

        - id: $$cap_pg_db
          label: Database Name
          defaultValue: elcaptain
          validRegex: /^[a-zA-Z][a-zA-Z0-9_]*$/

        - id: $$cap_pg_user
          label: Database User
          defaultValue: elcaptain
          validRegex: /^[a-zA-Z][a-zA-Z0-9_]*$/

        - id: $$cap_pg_password
          label: Database Password
          defaultValue: $$cap_gen_random_hex(16)
          description: 'Strong password for PostgreSQL.'
          validRegex: /.{8,}/

        - id: $$cap_platform_fee
          label: Platform Fee %
          defaultValue: '0'
          description: 'Service fee % added to receipts (0 = disabled). Revenue for the platform provider.'

        - id: $$cap_mail_mailer
          label: Mail Driver
          defaultValue: log
          description: 'smtp, log, mailgun, ses. Use "log" to skip email setup.'

        - id: $$cap_mail_host
          label: SMTP Host
          defaultValue: ''
          description: 'Leave empty if using "log" driver.'

        - id: $$cap_mail_port
          label: SMTP Port
          defaultValue: '587'

        - id: $$cap_mail_username
          label: SMTP Username
          defaultValue: ''

        - id: $$cap_mail_password
          label: SMTP Password
          defaultValue: ''

        - id: $$cap_mail_encryption
          label: SMTP Encryption
          defaultValue: tls
          description: 'tls, ssl, or empty.'

        - id: $$cap_mail_from_address
          label: From Email
          defaultValue: noreply@example.com
          description: 'Sender address for outgoing emails.'

    instructions:
        start: |-
            ## نظام الكابتن لإدارة الأكاديميات الرياضية
            El Captain Sports Management — نظام ERP متكامل للأكاديميات الرياضية

            **سيتم إنشاء:**
            1. قاعدة بيانات PostgreSQL 16 (خاصة، غير معروضة للويب)
            2. تطبيق الكابتن (Laravel + Nginx + Queue Worker + Scheduler)

            يتم تشغيل الميغرشن والإعداد الأولي تلقائياً عند أول تشغيل.

            ---

            **المميزات:** فواتير، حضور وغياب، نقطة بيع، مخزون، جدولة، مجموعات، مدفوعات، محفظة، تقارير، إشعارات
        end: |-
            ## ✅ تم التثبيت بنجاح!

            **رابط التطبيق:** http://$$cap_appname.$$cap_root_domain

            **بيانات الدخول:**
            - الإيميل: `$$cap_admin_email`
            - كلمة المرور: `$$cap_admin_password`

            ---

            ⚠️ **مهم:** قم بتفعيل HTTPS من لوحة CapRover ثم سجل الدخول.

            أول تشغيل يستغرق 2-3 دقائق (إنشاء الجداول والبيانات الأساسية).

    displayName: El Captain Sports Management
    isOfficial: true
    description: نظام إدارة أكاديميات رياضية متكامل — فواتير، حضور، نقطة بيع، مخزون، جدولة، مجموعات، مدفوعات
    documentation: https://github.com/mahmoudaglan/el-captain-sports-management
