# yaml-language-server: $schema=https://schema.zeabur.app/template.json
apiVersion: zeabur.com/v1
kind: Template
metadata:
    name: S4N Donate System
spec:
    description: Open source streamer sponsorship platform with ECPay/O'Pay support and OBS alerts.
    icon: https://raw.githubusercontent.com/LokiSalmonNeko/s4n-donate-system/refs/heads/main/public/15.png
    variables:
        - key: PUBLIC_DOMAIN
          type: DOMAIN
          name: Domain
          description: '您想要綁定的網域 (例如: my-donate.zeabur.app)'
        - key: ECPAY_MERCHANT_ID
          type: STRING
          name: ECPay Merchant ID
          description: 綠界商店代號 (非必填)
        - key: ECPAY_HASH_KEY
          type: STRING
          name: ECPay Hash Key
          description: 綠界 Hash Key (非必填)
        - key: ECPAY_HASH_IV
          type: STRING
          name: ECPay Hash IV
          description: 綠界 Hash IV (非必填)
        - key: OPAY_MERCHANT_ID
          type: STRING
          name: O'Pay Merchant ID
          description: 歐付寶商店代號 (非必填)
        - key: OPAY_HASH_KEY
          type: STRING
          name: O'Pay Hash Key
          description: 歐付寶 Hash Key (非必填)
        - key: OPAY_HASH_IV
          type: STRING
          name: O'Pay Hash IV
          description: 歐付寶 Hash IV (非必填)
        - key: ADMIN_USERNAME
          type: STRING
          name: Admin Username
          description: 後台管理員帳號
        - key: ADMIN_PASSWORD
          type: PASSWORD
          name: Admin Password
          description: 後台管理員密碼
        - key: JWT_SECRET
          type: PASSWORD
          name: JWT Secret
          description: JWT 加密密鑰，用於身份驗證 (請設定一個強隨機字串)
    tags:
        - Website
    readme: "# S4N Donate System (S4N 贊助系統)\n開源且輕量的實況主贊助平台，支援 ECPay (綠界科技) 與 O'Pay (歐付寶) 金流整合，提供 OBS 即時動態通知、獨立後台管理與自訂廣播樣式功能。\n\n## 功能特色\n\n- **公開贊助頁面** (`/`)：觀眾填寫暱稱、贊助金額、留言並選擇金流支付。\n- **實況主管理後台** (`/dashboard`)：查看贊助紀錄、動態設定通知圖片、音效、字型與主題配色。\n- **OBS 瀏覽器來源** (`/obs`)：專屬動畫與音效播放頁面，可直接嵌入 OBS Studio 進行實況廣播。\n- **現代化日系 UI**：採用 Tocas UI 設計系統，提供柔和流暢的視覺體驗。\n- **一鍵部署**：自動配置 PostgreSQL 資料庫與網域環境。\n\n## 部署後設定\n\n1. 部署完成後，使用您設定的 `ADMIN_USERNAME` / `ADMIN_PASSWORD` 登入 `/dashboard`。\n2. 若要啟用金流，請在服務的環境變數中填入綠界或歐付寶的商店代號與金鑰。\n3. 在 OBS 中新增「瀏覽器來源」，網址填入 `https://您的網域/obs`。\n\n## 資料持久化\n\nPostgreSQL 資料存放於 `/var/lib/postgresql/data`，已掛載持久化磁碟。\n請注意：刪除服務或磁碟會永久遺失贊助紀錄，建議定期使用 `pg_dump` 備份。\n\nGitHub: https://github.com/LokiSalmonNeko/s4n-donate-system  \nDocker Hub: https://hub.docker.com/r/lokisalmonneko/s4n-donate-system  \nZeabur Template: https://zeabur.com/zh-TW/templates/PZ7FR9  "
    services:
        - name: s4n-donate-system
          icon: https://raw.githubusercontent.com/LokiSalmonNeko/s4n-donate-system/refs/heads/main/public/15.png
          dependencies:
            - postgres
          template: PREBUILT_V2
          spec:
            id: s4n-donate-system
            source:
                image: lokisalmonneko/s4n-donate-system:latest
            ports:
                - id: web
                  port: 3000
                  type: HTTP
            env:
                ADMIN_PASSWORD:
                    default: ${ADMIN_PASSWORD}
                ADMIN_USERNAME:
                    default: ${ADMIN_USERNAME}
                DATABASE_URL:
                    default: postgresql://${POSTGRES_USERNAME}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DATABASE}
                ECPAY_HASH_IV:
                    default: ${ECPAY_HASH_IV}
                ECPAY_HASH_KEY:
                    default: ${ECPAY_HASH_KEY}
                ECPAY_MERCHANT_ID:
                    default: ${ECPAY_MERCHANT_ID}
                JWT_SECRET:
                    default: ${JWT_SECRET}
                NEXT_PUBLIC_BASE_URL:
                    default: ${ZEABUR_WEB_URL}
                OPAY_HASH_IV:
                    default: ${OPAY_HASH_IV}
                OPAY_HASH_KEY:
                    default: ${OPAY_HASH_KEY}
                OPAY_MERCHANT_ID:
                    default: ${OPAY_MERCHANT_ID}
          domainKey: PUBLIC_DOMAIN
        - name: postgres
          icon: https://raw.githubusercontent.com/zeabur/service-icons/main/marketplace/postgresql.svg
          template: PREBUILT_V2
          spec:
            id: postgres
            source:
                image: postgres:15-alpine
            ports:
                - id: database
                  port: 5432
                  type: TCP
            volumes:
                - id: data
                  dir: /var/lib/postgresql/data
            instructions:
                - title: Connection String
                  content: ${POSTGRES_CONNECTION_STRING}
                - title: Public Host
                  content: ${PORT_FORWARDED_HOSTNAME}
                - title: Public Port
                  content: ${DATABASE_PORT_FORWARDED_PORT}
                - title: Username
                  content: postgres
                - title: Password
                  content: ${PASSWORD}
            env:
                PGDATA:
                    default: /var/lib/postgresql/data/pgdata
                POSTGRES_CONNECTION_STRING:
                    default: postgresql://postgres:${PASSWORD}@${CONTAINER_HOSTNAME}:${DATABASE_PORT}/postgres
                    expose: true
                POSTGRES_DATABASE:
                    default: postgres
                    expose: true
                POSTGRES_DB:
                    default: postgres
                POSTGRES_HOST:
                    default: ${CONTAINER_HOSTNAME}
                    expose: true
                POSTGRES_PASSWORD:
                    default: ${PASSWORD}
                    expose: true
                POSTGRES_PORT:
                    default: ${DATABASE_PORT}
                    expose: true
                POSTGRES_USER:
                    default: postgres
                POSTGRES_USERNAME:
                    default: postgres
                    expose: true
            healthCheck:
                type: TCP
                port: database
            portForwarding:
                enabled: true
localization:
    zh-TW:
        description: 開源實況主贊助平台，支援綠界／歐付寶金流與 OBS 即時通知。
        variables:
            - key: PUBLIC_DOMAIN
              type: STRING
              name: 網域
              description: '您想要綁定的網域 (例如: my-donate.zeabur.app)'
            - key: ECPAY_MERCHANT_ID
              type: STRING
              name: 綠界商店代號
              description: 綠界科技商店代號 (非必填)
            - key: ECPAY_HASH_KEY
              type: STRING
              name: 綠界 Hash Key
              description: 綠界科技 Hash Key (非必填)
            - key: ECPAY_HASH_IV
              type: STRING
              name: 綠界 Hash IV
              description: 綠界科技 Hash IV (非必填)
            - key: OPAY_MERCHANT_ID
              type: STRING
              name: 歐付寶商店代號
              description: 歐付寶商店代號 (非必填)
            - key: OPAY_HASH_KEY
              type: STRING
              name: 歐付寶 Hash Key
              description: 歐付寶 Hash Key (非必填)
            - key: OPAY_HASH_IV
              type: STRING
              name: 歐付寶 Hash IV
              description: 歐付寶 Hash IV (非必填)
            - key: ADMIN_USERNAME
              type: STRING
              name: 管理員帳號
              description: 後台管理員帳號
            - key: ADMIN_PASSWORD
              type: STRING
              name: 管理員密碼
              description: 後台管理員密碼
            - key: JWT_SECRET
              type: STRING
              name: JWT 密鑰
              description: JWT 加密密鑰，用於身份驗證 (請設定一個強隨機字串)
        readme: "# S4N 贊助系統\n開源且輕量的實況主贊助平台，支援綠界科技與歐付寶金流整合，提供 OBS 即時動態通知與後台管理。\n\n部署完成後請使用設定的管理員帳密登入 `/dashboard`，並在 OBS 新增瀏覽器來源指向 `https://您的網域/obs`。\n\n資料庫資料存放於持久化磁碟，建議定期使用 `pg_dump` 備份贊助紀錄。\n\nGitHub: https://github.com/LokiSalmonNeko/s4n-donate-system  \nDocker Hub: https://hub.docker.com/r/lokisalmonneko/s4n-donate-system  \nZeabur Template: https://zeabur.com/zh-TW/templates/PZ7FR9  "
