Post

💼 旅途手帖 — 多人共遊旅遊規劃平台

💼 旅途手帖 — 多人共遊旅遊規劃平台

專案簡介

因為我自己想要去日本玩,有抽空的時間就來創建一下自己的旅遊規劃平台。

旅途手帖(Trip Planner) 是一款以莫蘭迪色系設計、支援多人共同編輯的 PWA 旅遊規劃平台。

從行程建立、景點安排、多人分帳,到地圖瀏覽與旅途相簿,整合了旅行前中後所需的功能。本專案使用 Claude Code 輔助開發,以 Firebase 作為後端,無需自架伺服器。

🔗 Live Demo:旅途手帖 Trip Planner


功能總覽

頁面功能
首頁行程卡片總覽、建立 / 刪除行程、即時匯率顯示
行程規劃天數管理、景點新增與編輯、景點複製/移動、每日備忘、注意事項、攜帶物品清單
記帳多人分帳、幣別換算、圖表統計
地圖Leaflet 互動地圖、景點大頭針標示、底部抽屜行程列表
相簿旅途照片上傳與瀏覽
好友旅伴管理、邀請連結加入行程
個人資料頭貼裁切、邊框顏色自訂、自我介紹

技術架構

前端

  • 純 HTML / CSS / JavaScript(無框架)
  • 莫蘭迪設計系統(CSS 變數統一管理色彩與元件)
  • PWA:支援離線快取(Service Worker)、可安裝至桌面

後端 / 雲端服務

  • Firebase Authentication:Google 一鍵登入
  • Firestore:即時多人同步資料(行程、景點、記帳)
  • Firebase Storage:相簿照片儲存
  • Firestore Security Rules:依行程成員身分控制讀寫權限

第三方服務

  • Leaflet.js:開源地圖套件
  • 匯率 API:即時顯示日圓 / 台幣匯率

專案結構

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
trip/
├── index.html               ← 首頁(登入 + 行程列表)
├── sw.js                    ← Service Worker(PWA 快取)
├── firestore.rules          ← Firestore 安全規則
│
├── pages/
│   ├── trips.html           ← 行程列表
│   ├── itinerary.html       ← 行程規劃(天數 / 景點)
│   ├── expenses.html        ← 記帳
│   ├── map.html             ← 地圖
│   ├── memories.html        ← 相簿
│   ├── friends.html         ← 好友 / 旅伴
│   ├── profile.html         ← 個人資料
│   └── join.html            ← 邀請加入行程
│
├── js/
│   ├── app.js               ← 核心資料層
│   ├── auth.js              ← 登入 / 登出
│   ├── firebase-sync.js     ← Firestore 同步
│   ├── trips.js             ← 行程 CRUD、邀請
│   ├── itinerary.js         ← 天數 / 景點管理
│   ├── expenses.js          ← 記帳、分帳計算
│   ├── map-page.js          ← 地圖邏輯
│   ├── memories.js          ← 相簿
│   ├── friends.js           ← 好友列表
│   ├── profile.js           ← 個人資料
│   ├── join.js              ← 邀請連結處理
│   └── exchange.js          ← 匯率查詢
│
└── css/
    ├── style.css            ← 設計系統(莫蘭迪色系)
    ├── itinerary.css
    └── map-page.css

開發特色

  • Claude Code 輔助開發:本專案主要透過 Claude Code CLI 工具進行功能設計與程式碼生成,大幅縮短開發週期。
  • 多人即時同步:透過 Firestore 即時監聽,多位旅伴同時編輯行程時可即時看到對方的變動。
  • 邀請制協作:透過專屬邀請連結加入行程,無需手動加好友。
  • PWA 支援:可安裝至手機桌面,支援部分離線使用。

開發心得

這個專案其實是從一個很生活化的出發點開始的——因為想去日本玩,在規劃行程的過程中發現市面上的工具要嘛功能太雜,要嘛不支援多人協作,就乾脆自己做一個。

開發過程中大量使用了 Claude Code 來加速,從功能設計、資料結構規劃到 UI 細節調整都有它的參與。體驗下來確實感受到 AI 輔助開發的效率——很多過去要花時間查資料或反覆試錯的環節,現在可以在對話中快速解決,讓我可以把更多心思放在「這個功能到底好不好用」這件事上。

比較有挑戰的部分是多人同步的設計,要確保不同旅伴同時修改行程時不會互相蓋掉,Firestore 的即時監聽機制解決了大部分問題,但邊界情況還是需要自己去處理。

整體來說,這是一個從「自己有需求」出發、用來解決真實問題的小專案,也是我第一次認真把 PWA 和 Firebase 完整整合在一起。歡迎有興趣的朋友直接試用,或有想一起規劃旅遊的也可以找我 😄

p.s Bug還很多,所以同時也有在慢慢修正


This post is licensed under CC BY 4.0 by the author.