GitHub - VahidR/bookeeper: A clean, modern desktop app for tracking your books and reading progress

3 min read Original article ↗

A clean, modern desktop app for tracking your books and reading progress.

Built with Go and Fyne. Runs on Linux, Windows, and macOS.

License Go Platform


📸 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.


License

MIT