Book Tracker 是一個給喜歡讀書的人使用的個人書庫管理工具。
它的目標不是只做一張簡單書單,而是幫你回答日常整理書籍時常遇到的問題:
- 這本書我買過了嗎?
- 我買的是紙本、電子書、特裝版,還是不同版本?
- 這本書放在哪個書架、哪個平台、哪個資料夾?
- 我讀到哪裡了?讀完了嗎?評分是多少?
- 如果電腦壞掉,我的書庫資料和封面圖片能不能安全備份?
這個專案目前適合「本機單人使用」。資料存在你自己的電腦中,可以備份、匯出、匯入,也可以之後再逐步搬到雲端。
- 新增、編輯、刪除與還原書籍。
- 用 ISBN 從 Google Books 抓取基本資料。
- 手動管理中文、英文、日文等多語系書籍資料。
- 記錄購買日期、價格、購買地點、書架、收藏位置、閱讀狀態、閱讀進度、個人評分與備註。
- 管理系列書與閱讀順序。
- 用 ISBN 或書名提醒可能重複的書,避免重複購買。
- 上傳自訂封面,前端會先壓縮圖片並轉成 WebP。
- 用格狀或列表瀏覽書庫。
- 依書名、作者、出版社、書架、系列、閱讀狀態、格式、持有狀態等條件篩選。
- 依最近新增、最近更新、書名、作者、閱讀進度、評分、系列排序。
- 匯出 JSON 或 CSV。
- 匯入 JSON 或 CSV 前先預覽,確認後才寫入資料庫。
- 建立 SQLite 資料庫備份與完整備份包。
- 還原備份前會先建立安全備份,避免直接覆蓋目前資料。
一般書單工具常常只記錄「書名、作者、ISBN」。但真正整理個人書庫時,常見問題更複雜:
- 同一本書可能有紙本、電子書、精裝版、簽名版、再版或不同封面。
- 書可能買了但還沒讀,也可能讀到一半、暫停、重讀。
- 中文書資料不一定能從單一 API 完整取得,所以需要手動補資料與保留原始文字。
- 封面、備註、購買紀錄、書架位置都是個人資料,不能只靠公開書目資料。
- 匯入大量資料前需要預覽與備份,避免一次操作毀掉原本書庫。
Book Tracker 因此把資料分成兩層:
- 書目資料:ISBN、書名、作者、出版社、出版日期、語言、封面。
- 個人藏書資料:持有狀態、格式、書架、購買紀錄、閱讀狀態、進度、評分、備註。
請先安裝:
- Git
- Python 3.11 或更新版本
- Node.js 20 LTS 或更新版本
先下載專案:
git clone https://github.com/micheallin/book-tracker.git
cd book-tracker設定後端:
cd backend
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
cd ..設定前端:
cd frontend
npm install
cd ..Windows 使用者可以直接在專案根目錄執行:
start-dev.cmd它會啟動:
- Flask API:
http://127.0.0.1:5000 - React 前端:通常是
http://127.0.0.1:5173
如果 5173 已被占用,啟動腳本會自動改用下一個可用 port,並開啟正確網址。
也可以手動分開啟動:
cd backend
.\.venv\Scripts\Activate.ps1
python app.py另一個終端機:
cd frontend
npm run devWindows 使用者可以執行:
verify.cmd這會檢查:
- 後端 Python 語法
- 後端單元測試
- 前端 production build
也可以手動執行:
cd backend
.\.venv\Scripts\Activate.ps1
python -m unittest discover -s tests
cd ..\frontend
npm run build本機資料預設放在:
backend/data/
其中:
backend/data/book_tracker.db是主要 SQLite 資料庫。backend/data/images/是上傳封面。backend/data/backups/是備份檔。
這些資料不會被提交到 Git。請自行保留備份。
在前端可以建立備份與還原備份。備份會包含:
.db:資料庫備份。_full.zip:完整備份包,包含資料庫、封面圖片與 manifest。
JSON / CSV 適合資料交換;完整災難還原請優先保留 .db 與 _full.zip。
前端提供 匯入預覽:
- 貼上 JSON 或 CSV。
- 先預覽,不會直接寫入資料庫。
- 系統檢查必填欄位與可能重複資料。
- 確認匯入時會先建立備份。
- 有效列才會匯入。
匯入欄位細節請看 匯入、匯出與資料交換規格。
本機使用不需要 Firebase。
如果你想把它改成自己的私人線上版,可以使用 Firebase Auth 作為登入基礎。請參考:
frontend/.env.examplebackend/.env.example- 目前版本完整說明
注意:目前專案仍以本機單人使用為主,不能直接把 SQLite 資料庫當成多人雲端資料庫。
目前尚未指定授權條款。公開使用或再散布前,請先補上正式 LICENSE。