๐Ÿ“š Book Manager v0.1.0

Your local e-book library โ€” Windows, macOS and Linux

Book Manager

A local-first e-book manager built with Wails v2, Go and React. Point it at your folders, keep the shelf tidy with tags, read epub / pdf / mobi right inside the app, and clean up your PDFs with fourteen built-in tools โ€” nothing ever leaves your disk, everything lives in a single SQLite file.

Windows 10/11 ยท macOS ยท Linux ยท portable, no installer ยท MIT licensed

Features

๐Ÿ“‚

Folder scanning

Scan local folders and pull out title, author, publisher, language, description, size and MD5, plus the cover art. EPUB, PDF, MOBI, AZW3 and KEPUB are supported.

๐Ÿ“š

Bookshelf

A cover grid with keyword search, format filter, multi-tag ยซor / andยป filtering and several sort orders; cards show reading progress and the Douban rating, and the scroll position is remembered.

๐Ÿท๏ธ

Tags

Create, rename, recolor, freeze or delete tags, drag them into your own order, roll a random color, or browse them as a tag cloud whose size follows the book count.

๐ŸŒ

Douban metadata

Fetch covers, links, ratings and rating counts from Douban by title โ€” in batches, or one book at a time from the detail dialog.

๐Ÿ“–

Built-in reader

EPUB / KEPUB through epub.js, PDF through pdf.js, and MOBI / AZW3 with a built-in PalmDoc decoder that renders the embedded images too. Position, page count and progress are recorded per book, and encrypted PDFs ask for the password once.

๐Ÿ”ค

Comfortable reading

Change the font size from the reader toolbar and flip on eye-care mode for a warm page; both are session-local, so your global settings stay untouched.

โฑ๏ธ

Reading timer

Every session adds to the total reading time. Staying on one page only counts one minute, and that idle cap is configurable in Settings.

๐Ÿ“

Notes

Select any text while reading to attach a note with its quote and position; notes can be reviewed and deleted later.

๐Ÿงฐ

Fourteen tools

Passwords, merge, page extraction, metadata, compression, PDF โ†’ EPUB, EPUB โ†’ PDF and image export โ€” all offline, all on your own files.

๐Ÿšซ

Misrecords

Mark a mis-detected file as a misrecord and the next scan skips it by path and MD5; restore it whenever you like.

๐Ÿ“Š

Stats

Totals for books, size, reading time and notes, the format breakdown, the latest additions and the full list of reading sessions.

๐ŸŒ

Three languages

The interface ships in English, Simplified Chinese and Traditional Chinese.

๐Ÿ’พ

Local-first

No account, no cloud, no telemetry โ€” one SQLite file next to the executable.

๐Ÿ–ฅ๏ธ

Tray and single instance

Closing the window keeps the app in the system tray, and starting it again simply reopens the window that is already there.

Screenshots

Bookshelf
BookshelfCover grid, search, format and tag filters, batch actions.
Reading
ReadingUnfinished and finished books, one click to continue.
Tags
TagsDrag to reorder the list, or switch to the tag cloud.
Stats
StatsReading time, format breakdown and the session log.
Tools
ToolsFourteen utilities on one page.
Settings
SettingsShelf defaults, idle cap, language and data location.

Fourteen built-in tools

Everything runs offline, on files you pick โ€” including the PDFs already on your shelf.

PDF

๐Ÿ”’

Set password

Set an open password on a PDF.

๐Ÿ”“

Remove password

Remove the open password from a PDF.

๐Ÿงท

Merge PDFs

Merge several PDFs into one new file, in order.

โœ‚๏ธ

Extract pages

Pick pages out of a PDF and save them as a new PDF.

๐Ÿ–ผ๏ธ

Export images

Save PDF pages as PNG / JPEG images, optionally only the pages you name.

๐Ÿ“

Edit metadata

View and edit the title, author, subject and keywords of a PDF.

๐Ÿ—œ๏ธ

Compress

Rewrite a PDF with Ghostscript, downsampling images per preset to shrink it.

๐Ÿ“—

PDF โ†’ EPUB

Lay out the text layer of a PDF as an epub, with an optional output folder.

EPUB

๐Ÿ“•

EPUB โ†’ PDF

Lay out an epub as a PDF with a bookmark outline, embedded fonts and selectable text.

Other

๐Ÿ”

Scan library

Scan local folders and add new e-books to the shelf.

๐Ÿท๏ธ

Manage tags

Create, recolor, freeze and delete tags; browse books by tag.

๐Ÿšซ

Misrecords

Review and restore files marked as misrecords.

๐ŸŒ

Douban sync

Batch-fetch Douban information for books missing ratings or covers.

๐Ÿ“‚

Data folder

Where book.db and the cover cache live, with a button to open it.

Quick start

Requirements

  • Go 1.21+
  • Node.js 18+
  • Wails CLI: go install github.com/wailsapp/wails/v2/cmd/wails@latest
  • Windows: the WebView2 runtime (already part of Windows 10 / 11)
  • macOS: unsigned build โ€” run xattr -dr com.apple.quarantine book-manager.app on first launch
  • Linux: libwebkit2gtk-4.1 and libgtk-3 (built on Ubuntu 24.04, glibc 2.39+)

Handy commands (just)

just setupinstall the frontend dependencies
just devdev mode with hot reload
just buildproduction build โ†’ src/build/bin/book-manager.exe
just releaserelease build โ†’ release/book-manager.exe
just testGo backend tests, JS parsers and the i18n check
just ui-testheadless browser smoke test of the UI (needs Edge + playwright-core)
just iconregenerate the app icons from asserts/logo.png
just fmtgofmt and go vet the backend
just docsregenerate the READMEs and the docs site
just site-testrender the docs site in a headless browser and check every link and image
just push "msg"commit everything and push to main

Development conventions live in agents.md โ€” every session ends with a commit and a push.

Data storage

Known issue (Windows only): blank window (WebView2 stops repainting)

In production builds (with the assets embedded) some WebView2 + GPU combinations stop repainting because of the Wails hide / show visibility workaround โ€” the window shows nothing but its background colour. The workaround lives in src/platform_windows.go:

app.Windows = &windows.Options{
    WebviewGpuIsDisabled: true, // --disable-gpu; harmless for a text app
    WebviewUserDataPath: resolveWebviewUserDataPath(dataDir),
},

To diagnose this, build with wails build -debug to get DevTools, or attach a debugger with WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS=--remote-debugging-port=9333.

Version

Download

Every release ships portable packages for three platforms, built by GitHub Actions and published with the commit log as its release notes: a single exe for Windows (book-manager-<version>-windows-x64.zip), a universal app for macOS (...-macos-universal.zip) and a tarball for Linux x64 (...-linux-x64.tar.gz). Unzip, run, and the app creates its data folder next to itself.