mauriceboe / TREK

mauriceboe / TREK

A self-hosted, real-time collaborative travel planner — with maps, budgets, packing lists, a journal, and AI built in. 这是一个可自托管的实时协作旅行规划工具,集成了地图、预算、行李清单、旅行日志以及内置 AI 功能。

What you get / 你将获得:

🧭 Trip planning / 旅行规划

  • Drag & drop planner — organise places into day plans with reordering and cross-day moves. 拖拽式规划器 — 将地点整理到每日计划中,支持重新排序和跨天移动。
  • Interactive map — Leaflet or Mapbox GL with 3D buildings, terrain, photo markers, clustering, route visualization. 交互式地图 — 支持 Leaflet 或 Mapbox GL,包含 3D 建筑、地形、照片标记、聚合显示及路线可视化。
  • Place search — Google Places (photos, ratings, hours) or OpenStreetMap (free, no API key). 地点搜索 — 支持 Google Places(照片、评分、营业时间)或 OpenStreetMap(免费,无需 API 密钥)。
  • Place import — shared Google Maps / Naver Maps lists, plus GPX and KML/KMZ/GeoJSON map files. 地点导入 — 支持共享的 Google Maps / Naver Maps 列表,以及 GPX、KML/KMZ/GeoJSON 地图文件。
  • Day notes — timestamped, icon-tagged notes with drag-and-drop reordering. 每日笔记 — 带时间戳和图标标签的笔记,支持拖拽排序。
  • Route optimisation — auto-sort places and export to Google Maps. 路线优化 — 自动排序地点并导出至 Google Maps。
  • Weather forecasts — 16-day via Open-Meteo (no key) + historical climate fallback. 天气预报 — 通过 Open-Meteo 提供 16 天预报(无需密钥),并支持历史气候参考。
  • Category filter — show only matching pins on the map. 类别筛选 — 仅在地图上显示匹配的图钉。

🧳 Travel management / 旅行管理

  • Reservations — flights, accommodations, restaurants with status, confirmation numbers, files; import from booking confirmation emails and PDFs (KDE Itinerary). 预订管理 — 管理航班、住宿、餐厅,包含状态、确认号和文件;支持从预订确认邮件和 PDF(KDE Itinerary)导入。
  • Costs — track and split trip expenses (Splitwise-style): per-person / per-day breakdowns, settle-up, multi-currency. 费用管理 — 追踪并分摊旅行支出(类似 Splitwise):支持人均/每日明细、结算及多币种。
  • Packing lists — categories, templates, user assignment, progress tracking. 行李清单 — 支持分类、模板、用户分配及进度追踪。
  • Bag tracking — optional weight tracking with iOS-style distribution. 行李追踪 — 可选的重量追踪功能,采用 iOS 风格的分布显示。
  • Document manager — attach docs, tickets, PDFs to trips / places / reservations (≤ 50 MB each). 文档管理 — 可将文档、票据、PDF 附加到旅行、地点或预订中(每个文件不超过 50 MB)。
  • PDF export — full trip plan as PDF with cover page, images, notes. PDF 导出 — 将完整旅行计划导出为 PDF,包含封面、图片和笔记。

👥 Collaboration / 协作

  • Real-time sync — WebSocket. Changes appear instantly across all connected users. 实时同步 — 基于 WebSocket,所有连接用户的更改即时可见。
  • Multi-user trips — invite members with role-based access. 多用户旅行 — 邀请成员并设置基于角色的访问权限。
  • Invite links — one-time or reusable links with expiry. 邀请链接 — 支持一次性或可重复使用的带过期时间链接。
  • SSO (OIDC) — Google, Apple, Authentik, Keycloak, or any OIDC provider. 单点登录 (SSO) — 支持 Google、Apple、Authentik、Keycloak 或任何 OIDC 提供商。
  • 2FA — TOTP + backup codes. 双重验证 (2FA) — 支持 TOTP 和备份代码。
  • Passkeys — passwordless WebAuthn login (fingerprint / face / PIN / security key), admin-toggleable. 通行密钥 (Passkeys) — 无密码 WebAuthn 登录(指纹/面容/PIN/安全密钥),管理员可开关。
  • Collab suite — group chat, shared notes, polls, day check-ins. 协作套件 — 群聊、共享笔记、投票、每日签到。

📱 Mobile & PWA / 移动端与 PWA

  • Installable — iOS and Android, straight from the browser, no App Store needed. 可安装 — 支持 iOS 和 Android,直接从浏览器安装,无需 App Store。
  • Offline support — Service Worker caches tiles, API, uploads via Workbox. 离线支持 — 通过 Service Worker 使用 Workbox 缓存地图瓦片、API 和上传内容。
  • Native feel — fullscreen standalone, themed status bar, splash screen. 原生体验 — 全屏独立运行、主题状态栏、启动画面。
  • Touch optimised — mobile-specific layouts with safe-area handling. 触控优化 — 针对移动端优化的布局,支持安全区域处理。

🧩 Addons (admin-toggleable) / 插件(管理员可开关)

  • Lists — packing lists + to-dos with templates, member assignments, optional bag tracking. 清单 — 行李清单 + 待办事项,支持模板、成员分配及可选的行李追踪。
  • Costs — expense tracker with splits and settle-up (who owes whom), multi-currency. 费用 — 支出追踪器,支持分摊、结算(谁欠谁)及多币种。
  • Documents — file attachments on trips, places, and reservations. 文档 — 旅行、地点和预订的文件附件。
  • Collab — chat, notes, polls, day-by-day attendance. 协作 — 聊天、笔记、投票、每日出勤。
  • Vacay — personal vacation planner with calendar, 100+ country holidays, carry-over tracking. 假期 — 个人假期规划器,包含日历、100 多个国家的节假日及假期结转追踪。
  • Atlas — world map of visited countries, bucket list, travel stats, streak tracking, liquid-glass UI. 地图集 — 已访问国家的世界地图、愿望清单、旅行统计、连续记录追踪及流体玻璃 UI。
  • Journey — magazine-style travel journal with entries, photos (Immich/Synology), maps, moods. 旅程 — 杂志风格的旅行日志,包含条目、照片(支持 Immich/Synology)、地图和心情记录。
  • AirTrail — connect a self-hosted AirTrail instance to import and sync flights into reservations. AirTrail — 连接自托管的 AirTrail 实例,将航班导入并同步到预订中。
  • MCP — expose TREK to AI assistants via OAuth 2.1. MCP — 通过 OAuth 2.1 将 TREK 暴露给 AI 助手。

🤖 AI / MCP

  • Built-in MCP server — OAuth 2.1 authenticated. 150+ tools, 30 resources. 内置 MCP 服务器 — OAuth 2.1 认证,提供 150+ 工具和 30 个资源。
  • Granular scopes — 27 OAuth scopes across 13 permission groups. 细粒度权限 — 涵盖 13 个权限组的 27 个 OAuth 作用域。
  • Full automation — AI can create trips, plan days, build packing lists, manage budgets, mark countries visited. 全自动化 — AI 可创建旅行、规划日程、生成行李清单、管理预算、标记已访问国家。
  • Pre-built prompts — trip-summary, packing-list, budget-overview. 预设提示词 — 旅行摘要、行李清单、预算概览。
  • Addon-aware — exposes Atlas, Collab, Vacay when those addons are on. 插件感知 — 当插件开启时,自动暴露 Atlas、Collab、Vacay 功能。

⚙️ Admin & customisation / 管理与自定义

  • Dashboard views — card grid or compact list. 仪表盘视图 — 卡片网格或紧凑列表。
  • Dark mode — full theme with matching status bar. 深色模式 — 完整主题支持,包含匹配的状态栏。
  • 20 languages — EN, DE, ES, FR, IT, NL, HU, RU, ZH, ZH-TW, PL, CS, AR (RTL), BR, ID, TR, JA, KO, UK, GR. 20 种语言 — 支持英语、德语、西班牙语、法语、意大利语、荷兰语、匈牙利语、俄语、中文(简体/繁体)、波兰语、捷克语、阿拉伯语(从右向左)、巴西葡萄牙语、印尼语、土耳其语、日语、韩语、乌克兰语、希腊语。
  • Admin panel — users, invites, packing templates, categories, addons, API keys, backups, GitHub history. 管理面板 — 用户、邀请、行李模板、类别、插件、API 密钥、备份、GitHub 历史记录。
  • Notifications — per-user preferences across email (SMTP), webhook, ntfy, and an in-app notification center. 通知 — 用户自定义偏好,支持邮件 (SMTP)、Webhook、ntfy 及应用内通知中心。
  • Auto-backups — scheduled with configurable retention. 自动备份 — 定时备份,支持配置保留策略。
  • Units — °C/°F, 12h/24h, map tile sources, default coordinates. 单位 — 支持摄氏度/华氏度、12/24 小时制、地图瓦片源、默认坐标。

Get started in 30 seconds / 30 秒快速上手

ENCRYPTION_KEY=$(openssl rand -hex 32)
docker run -d -p 3000:3000 \
  -e ENCRYPTION_KEY=$ENCRYPTION_KEY \
  -v ./data:/app/data -v ./uploads:/app/uploads mauriceboe/trek

Open http://localhost:3000. On first boot TREK seeds an admin account — if you set ADMIN_EMAIL/ADMIN_PASSWORD those are used, otherwise the credentials are printed to the container log (docker logs trek). 打开 http://localhost:3000。首次启动时,TREK 会初始化一个管理员账户。如果你设置了 ADMIN_EMAIL/ADMIN_PASSWORD,则使用该凭据;否则,凭据将打印在容器日志中 (docker logs trek)。

  • Docker Compose
  • Helm / Kubernetes
  • Install as PWA
  • Reverse Proxy

Tech stack / 技术栈

Real-time sync via WebSocket (ws). Backend on NestJS 11. State with Zustand. Auth via JWT + OAuth 2.1 + OIDC + Passkeys (WebAuthn) + TOTP MFA. Weather via Open-Meteo (no key required). Maps with Leaflet and Mapbox GL. 通过 WebSocket (ws) 实现实时同步。后端基于 NestJS 11。状态管理使用 Zustand。认证方式包括 JWT + OAuth 2.1 + OIDC + Passkeys (WebAuthn) + TOTP 多重验证。天气数据来自 Open-Meteo(无需密钥)。地图使用 Leaflet 和 Mapbox GL。