A clean, modern desktop app for tracking your books and reading progress.
Built with Go and Fyne. Runs on Linux, Windows, and macOS.
📸 Screenshots
Features
- Add books with title, author, and page count
- Track reading progress with a page stepper — tap
+/−or jump to any page - Status tracking — Unread, Reading, Finished, Abandoned
- 🌙 Dark mode — toggle between light and dark themes; your preference is remembered
- 🔍 Search & filter — instantly find books by title or author with live search
- 📝 Book notes — add and edit reading notes directly from the book detail view
- 📊 Reading stats — see how many books you've finished, how many you're reading, and total pages read
- 📤📥 Export & import — back up your library to JSON or import books from a file; duplicates are skipped automatically
- 🔄 Sort — sort your library by last updated, title, or reading status
- Persistent storage — your library is saved locally in SQLite
- Modern UI — card-based layout, floating action button, teal accent theme
- No account needed — everything stays on your machine
Install
Download a release (easiest)
Go to Releases and download the archive for your OS:
| OS | File | Install |
|---|---|---|
| Linux | bookeeper-linux-amd64.tar.gz |
Extract, run ./bookeeper |
| Windows | bookeeper-windows-amd64.zip |
Extract, run bookeeper.exe |
| macOS | bookeeper-macos-arm64.zip |
Extract, move Bookeeper.app to Applications |
Install from source (Linux)
Requires Go 1.22+ and a C compiler (gcc).
# Install system dependencies (Debian/Ubuntu/Mint) sudo apt install libgl-dev libxi-dev libxcursor-dev libxrandr-dev libxinerama-dev libxxf86vm-dev # Clone and install git clone https://github.com/VahidR/bookeeper.git cd bookeeper make install
Bookeeper now appears in your application menu.
To uninstall: make uninstall
Build from source
# Build the binary make build # Or directly go build -o bookeeper ./cmd/bookeeper # Run ./bookeeper
Package for distribution
Requires the Fyne CLI: go install fyne.io/tools/cmd/fyne@latest
make package-linux # → bookeeper.tar.xz make package-windows # → bookeeper.exe make package-macos # → Bookeeper.app
Usage tips
| Action | How |
|---|---|
| Add a book | Tap the + floating button |
| Track progress | Open a book → tap +/− or tap the page count to jump to a page |
| Switch theme | Tap the 🌙 / ☀ button in the library header |
| Search | Type in the search bar — results update live |
| Sort | Use the Sort dropdown (Last Updated, Title, Status) |
| Add notes | Open a book → type in the Notes section → Save Notes |
| Export library | Tap 📤 in the header → choose a save location |
| Import books | Tap 📥 in the header → select a JSON file |
Project structure
cmd/bookeeper/ Entry point
internal/
model/ Domain types (Book, ReadingStatus)
storage/ SQLite database layer
app/ Business logic (CRUD, stats, export/import)
ui/ Fyne GUI (colors, widgets, views)
assets/ App icon (SVG + PNG), desktop entry
Data storage
Your book library is stored in a local SQLite database:
| OS | Location |
|---|---|
| Linux | ~/.config/bookeeper/bookeeper.db |
| Windows | %AppData%\bookeeper\bookeeper.db |
| macOS | ~/Library/Application Support/bookeeper/bookeeper.db |
No data is sent anywhere. Everything stays on your machine.
Contributing
Contributions are welcome! To get started:
git clone https://github.com/VahidR/bookeeper.git cd bookeeper go mod tidy go test ./... make build
The project follows standard Go conventions — cmd/ for the binary, internal/ for private packages, table-driven tests with t.Run() subtests.