Your Personal Book Catalogue

Scan ISBNs, fetch metadata from Open Library, and organize your collection — all stored locally in a SQLite database. Built for Linux, designed for collectors.

Linux Native MIT License C + C++
Leonis Main Interface

Features

Everything you need to catalog and manage your book collection

ISBN Lookup

Automatically fetches book metadata from the Open Library API. Just enter an ISBN and get title, author, publisher, edition, and more.

USB Scanner Support

Connect a USB barcode scanner and scan ISBNs directly. The scanner acts as a keyboard wedge — just scan and press Enter.

Web-Based UI

Full-featured web interface for browsing, searching, editing, and managing your collection. Built-in HTTP server with no external dependencies.

Local SQLite Storage

All data stored locally in leonis.db. No cloud dependency, no account required, complete ownership of your data.

Duplicate Detection

Warns on duplicate ISBN entries before inserting. Choose to view existing records or add another copy.

Rate-Limited API

Respects Open Library's request limits with built-in throttling. Be a good citizen of the open data community.

Advanced Search

Search across title, author, publisher, genre, condition, value ranges, and more. Boolean AND/OR modes with partial matching.

PDF/CSV Reports

Generate collection reports and export to PDF or CSV. Track your collection's value, category distribution, and more.

Detailed Tracking

Track edition, printing, binding, condition, purchase cost, projected value, location, signatures, dust jackets, and notes.

Screenshots

A glimpse into the Leonis interface

Technical Details

Built with performance and simplicity in mind

System Requirements

  • Platform: Linux only (x86_64)
  • Supported Distributions:
  • Ubuntu 22.04+
  • Debian 12 (Bookworm)+
  • Fedora 44+
  • Linux Mint 21+
  • Arch Linux (current)

Dependencies

  • Build: GCC, CMake, pkg-config
  • Runtime:
  • SQLite3 — Local database
  • libcurl — HTTP requests
  • libcJSON — JSON parsing
  • libmicrohttpd — Embedded web server
  • libharu — PDF generation
  • WebKitGTK — Native window (optional)

Build from Source

# Install dependencies (Ubuntu/Debian)
sudo apt install build-essential cmake pkg-config \
    libsqlite3-dev libcurl4-openssl-dev libcjson-dev \
    libmicrohttpd-dev libhpdf-dev libwebkit2gtk-4.1-dev

# Build
cmake -B build && cmake --build build

# Run
./build/leonis

Data Model

Work Level

  • Title, Author, Subtitle
  • Series, Series Number
  • Language, Category, Genre
  • Description/Summary

Edition Level

  • ISBN-13, ISBN-10
  • Publisher, Publish Date
  • Country, Editor
  • Edition, Printing
  • Binding Type, Page Count

Copy Level

  • Condition (Book/Jacket)
  • Signed, Dust Jacket, Ex-Library
  • Purchase Cost, Current Value
  • Location, Source, Date Acquired
  • Notes

Download

Get started with Leonis today

Windows (WSL2)

Unsupported: Leonis is Linux-only. There is no native Windows build, and WSL2 is not officially supported.

WSL2 runs a full Linux environment, so the Install from Repository and Build from Source options on this page work unchanged inside WSL2.

Requires WSLg: Leonis's default interface is a WebKit GUI window, which needs a display server. WSLg, bundled with WSL2, provides it.

USB barcode scanners work as-is — no setup required. A scanner is just a keyboard to Windows, so it types into whatever has focus: click into the ISBN field in the Leonis window and scan — WSLg forwards your keyboard input into it. No USB passthrough needed.

USB passthrough is only needed when the scanner is not a keyboard-wedge device — for example, one in serial/USB-VCP mode. To attach it to WSL2, use usbipd-win:
# Install (Windows PowerShell)
winget install --interactive --exact dorssel.usbipd-win

# List devices; note the scanner's BUSID
usbipd list

# Share the scanner (elevated PowerShell); persists across reboots
usbipd bind --busid <BUSID>

# Attach to WSL2; re-run after every reboot or replug
usbipd attach --wsl --busid <BUSID>

Full usbipd usage: github.com/dorssel/usbipd-win

While attached, the scanner stops acting as a Windows keyboard, so the "works as-is" flow above won't apply.

Build from Source

Get the latest version with all features. Requires build tools and dependencies.

1 Clone the repository
2 Install dependencies
3 Build with CMake
View on GitLab

What's Included

  • Leonis binary with embedded web UI
  • SQLite database schema
  • HTML/CSS/JS interface files
  • Session logging system
  • Auto-shutdown after inactivity

About Leonis

Inspired by the guardians of knowledge

Leonis is named after Patience and Fortitude — the two majestic marble lions that stand guard outside the New York Public Library. These iconic sculptures have welcomed millions of visitors for more than a century, symbolizing the qualities needed in the pursuit of knowledge.

The names were bestowed during the Great Depression by Mayor Fiorello La Guardia, who believed New Yorkers needed patience to persevere and fortitude to overcome adversity. These same qualities define the dedicated book collector — patiently building a collection over time, with the fortitude to hunt for rare finds.

Leonis was created for the home book collector. Whether your collection is 10 or 10,000 books, you can catalogue them, report on what you own, and better understand your collection. It's not trying to be a full Library Management System — it's focused on what individual collectors actually need.

100% Local Storage
0 Cloud Dependencies
MIT Open Source License