# yaml-language-server: $schema=https://schema.zeabur.app/template.json
apiVersion: zeabur.com/v1
kind: Template
metadata:
    name: TREK
spec:
    description: Self-hosted, real-time collaborative travel planner with maps, budgets, packing lists, journal, PWA support, SSO, and built-in AI/MCP.
    coverImage: https://github.com/mauriceboe/trek-media/releases/download/readme-assets/TREK1.gif
    icon: https://raw.githubusercontent.com/mauriceboe/TREK/e27be5c965af0df4b1b81c9176ac4c01d783e3ab/client/public/logo-light.svg
    variables:
        - key: PUBLIC_DOMAIN
          type: DOMAIN
          name: Domain
          description: The domain you want to bind to TREK.
    tags:
        - Travel
        - Planner
        - Collaboration
        - Tool
    readme: |-
        # TREK

        [TREK](https://github.com/mauriceboe/TREK) is a self-hosted, real-time collaborative travel planner — with maps, budgets, packing lists, a journal, and AI built in.

        ## Features

        - **Trip planning** — drag & drop day planner, interactive Leaflet/Mapbox map with 3D buildings, route optimisation, weather forecasts
        - **Travel management** — reservations (flights, hotels, restaurants), budget tracking with multi-currency, packing lists, document attachments, PDF export
        - **Collaboration** — real-time WebSocket sync, multi-user trips with role-based access, invite links, SSO (OIDC), 2FA, chat / notes / polls
        - **Mobile & PWA** — installable on iOS/Android, offline support via Service Worker, native-feel UI
        - **Addons** — Lists, Budget, Documents, Collab, Vacay, Atlas (world map of visited countries), Journey (travel journal), Naver List import, MCP
        - **AI / MCP** — built-in OAuth 2.1 MCP server with 150+ tools, 27 scopes, pre-built prompts (`trip-summary`, `packing-list`, `budget-overview`)
        - **Admin** — dashboard views, dark mode, 15 languages, auto-backups, users / invites / templates / API keys management

        ## First Boot

        On first start TREK seeds an admin account:

        - If `ADMIN_EMAIL` / `ADMIN_PASSWORD` are set, those credentials are used.
        - Otherwise, the generated credentials are printed to the container log — check the **Logs** tab of the service.

        ## Environment Variables

        Set these from the service's **Variables** tab if you need them.

        | Variable | Description |
        |----------|-------------|
        | `ENCRYPTION_KEY` | At-rest encryption key for stored secrets (API keys, TOTP, SMTP, OIDC). Pre-set by this template; if you remove it, TREK auto-generates one and persists it to `/app/data/.encryption_key`. |
        | `ADMIN_EMAIL` | Email for the seeded admin account (first boot only). |
        | `ADMIN_PASSWORD` | Password for the seeded admin account (first boot only). |
        | `JWT_SECRET` | Optional. Signing secret for session tokens; auto-generated if unset. |

        Additional configuration (SSO/OIDC, SMTP, Mapbox / Google Places API keys, addons, backups) is managed from the in-app **Admin** panel after deployment.

        ## Persistence

        Two volumes are mounted to preserve your data across restarts and redeploys:

        - `/app/data` — SQLite database, encryption key, JWT secret
        - `/app/uploads` — user-uploaded files (documents, photos, attachments)

        ## Source

        [GitHub Repository](https://github.com/mauriceboe/TREK) · [Docker Hub](https://hub.docker.com/r/mauriceboe/trek)
    services:
        - name: trek
          icon: https://raw.githubusercontent.com/mauriceboe/TREK/e27be5c965af0df4b1b81c9176ac4c01d783e3ab/client/public/logo-light.svg
          template: PREBUILT
          spec:
            id: trek
            source:
                image: mauriceboe/trek:latest
            ports:
                - id: web
                  port: 3000
                  type: HTTP
            volumes:
                - id: data
                  dir: /app/data
                - id: uploads
                  dir: /app/uploads
            env:
                ENCRYPTION_KEY:
                    default: ${PASSWORD}${PASSWORD}
          domainKey: PUBLIC_DOMAIN
localization:
    zh-CN:
        description: 自托管的实时协作旅行规划器，内置地图、预算、打包清单、旅行日志、PWA、SSO 与 AI/MCP。
        variables:
            - key: PUBLIC_DOMAIN
              type: DOMAIN
              name: 域名
              description: 你想要绑定 TREK 的域名。
        readme: |-
            # TREK

            [TREK](https://github.com/mauriceboe/TREK) 是一个自托管的实时协作旅行规划器，内置地图、预算、打包清单、旅行日志与 AI。

            ## 功能特色

            - **行程规划** — 拖放式每日行程编辑器、Leaflet/Mapbox 交互式 3D 地图、路线优化、天气预报
            - **旅行管理** — 预订管理（航班、住宿、餐厅）、多币种预算跟踪、打包清单、文档附件、PDF 导出
            - **多人协作** — WebSocket 实时同步、角色权限管理、邀请链接、SSO（OIDC）、二次验证、群组聊天/笔记/投票
            - **移动端与 PWA** — 可安装至 iOS/Android、Service Worker 离线支持、原生般的体验
            - **附加模块** — Lists、Budget、Documents、Collab、Vacay、Atlas（世界足迹地图）、Journey（旅行日志）、Naver 清单导入、MCP
            - **AI/MCP** — 内置 OAuth 2.1 MCP 服务器，含 150+ 工具、27 种权限、预制提示词（`trip-summary`、`packing-list`、`budget-overview`）
            - **管理员后台** — 仪表盘、深色模式、15 种语言、自动备份、用户/邀请/模板/API 密钥管理

            ## 首次启动

            首次启动时 TREK 会创建管理员账户：

            - 若设置了 `ADMIN_EMAIL`/`ADMIN_PASSWORD`，将使用这些凭据。
            - 否则随机生成的凭据会打印在容器日志中，请到服务的 **Logs** 标签页查看。

            ## 环境变量

            如有需要，请在服务的**环境变量**标签页中设置以下变量。

            | 变量 | 说明 |
            |------|------|
            | `ENCRYPTION_KEY` | 用于加密存储的密钥（API 密钥、TOTP、SMTP、OIDC）。本模板已预设；若移除，TREK 会自动生成并写入 `/app/data/.encryption_key`。 |
            | `ADMIN_EMAIL` | 首次启动时创建的管理员邮箱。 |
            | `ADMIN_PASSWORD` | 首次启动时创建的管理员密码。 |
            | `JWT_SECRET` | 可选。会话 token 签名密钥；未设置时自动生成。 |

            其他配置（SSO/OIDC、SMTP、Mapbox/Google Places API、附加模块、备份等）可在部署后通过应用内的**管理员后台**进行管理。

            ## 数据持久化

            本模板挂载两个 Volume，重启与重新部署时数据不会丢失：

            - `/app/data` — SQLite 数据库、加密密钥、JWT secret
            - `/app/uploads` — 用户上传的文件（文档、照片、附件）

            ## 源码

            [GitHub Repository](https://github.com/mauriceboe/TREK) · [Docker Hub](https://hub.docker.com/r/mauriceboe/trek)
    zh-TW:
        description: 自架的即時協作旅遊規劃器，內建地圖、預算、打包清單、旅遊日誌、PWA、SSO 與 AI／MCP。
        variables:
            - key: PUBLIC_DOMAIN
              type: DOMAIN
              name: 網域
              description: 你想要綁定 TREK 的網域。
        readme: |-
            # TREK

            [TREK](https://github.com/mauriceboe/TREK) 是一個自架的即時協作旅遊規劃器，內建地圖、預算、打包清單、旅遊日誌與 AI。

            ## 功能特色

            - **行程規劃** — 拖拉式每日行程編輯器、Leaflet／Mapbox 互動式 3D 地圖、路線最佳化、天氣預報
            - **旅遊管理** — 訂位管理（航班、住宿、餐廳）、多幣別預算追蹤、打包清單、文件附件、PDF 匯出
            - **多人協作** — WebSocket 即時同步、角色權限管理、邀請連結、SSO（OIDC）、二階段驗證、群組聊天／筆記／投票
            - **行動裝置與 PWA** — 可安裝至 iOS／Android、Service Worker 離線支援、原生般的使用體驗
            - **附加模組** — Lists、Budget、Documents、Collab、Vacay、Atlas（世界足跡地圖）、Journey（旅遊日誌）、Naver 清單匯入、MCP
            - **AI／MCP** — 內建 OAuth 2.1 MCP 伺服器，含 150+ 工具、27 種權限、預製提示詞（`trip-summary`、`packing-list`、`budget-overview`）
            - **管理員後台** — 儀表板、深色模式、15 種語言、自動備份、使用者／邀請／範本／API 金鑰管理

            ## 首次啟動

            首次啟動時 TREK 會建立管理員帳號：

            - 若設定了 `ADMIN_EMAIL`／`ADMIN_PASSWORD`，會使用該帳密。
            - 否則隨機產生的帳密會印在容器日誌中，請至服務的 **Logs** 分頁查看。

            ## 環境變數

            如有需要，請於服務的**環境變數**分頁中設定下列變數。

            | 變數 | 說明 |
            |------|------|
            | `ENCRYPTION_KEY` | 用於加密儲存的密鑰（API 金鑰、TOTP、SMTP、OIDC）。本模板已預設；若移除，TREK 會自動產生並寫入 `/app/data/.encryption_key`。 |
            | `ADMIN_EMAIL` | 首次啟動時建立的管理員 Email。 |
            | `ADMIN_PASSWORD` | 首次啟動時建立的管理員密碼。 |
            | `JWT_SECRET` | 選用。Session token 簽章金鑰；未設定時自動產生。 |

            其他設定（SSO/OIDC、SMTP、Mapbox／Google Places API、附加模組、備份等）可於部署後在應用內的**管理員後台**中管理。

            ## 資料持久化

            本模板掛載兩個 Volume，重啟與重新部署時資料不會遺失：

            - `/app/data` — SQLite 資料庫、加密金鑰、JWT secret
            - `/app/uploads` — 使用者上傳的檔案（文件、相片、附件）

            ## 原始碼

            [GitHub Repository](https://github.com/mauriceboe/TREK) · [Docker Hub](https://hub.docker.com/r/mauriceboe/trek)
