Skip to content

micheallin/book-tracker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Book Tracker

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 dev

驗證安裝

Windows 使用者可以執行:

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

匯入資料

前端提供 匯入預覽

  1. 貼上 JSON 或 CSV。
  2. 先預覽,不會直接寫入資料庫。
  3. 系統檢查必填欄位與可能重複資料。
  4. 確認匯入時會先建立備份。
  5. 有效列才會匯入。

匯入欄位細節請看 匯入、匯出與資料交換規格

選用:Firebase 登入

本機使用不需要 Firebase。

如果你想把它改成自己的私人線上版,可以使用 Firebase Auth 作為登入基礎。請參考:

注意:目前專案仍以本機單人使用為主,不能直接把 SQLite 資料庫當成多人雲端資料庫。

更多文件

授權

目前尚未指定授權條款。公開使用或再散布前,請先補上正式 LICENSE。

About

記住我的書到底有多少,在哪裡,去哪裡,讀多少

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors