Grimoire
A desktop book catalogue. Portable: a single Windows .exe with its database in the same folder, nothing to install.
- Role
- Concept, design and development, with Claude Code as coding agent.
- Stack
- Tauri 2
- Rust
- React
- TypeScript
- SQLite (FTS5)
- Vite
- Vitest
- Status
- Version 0.1 finished: an 11 MB portable build for Windows 10 and 11.
01The idea
A personal library that depends on no website and no account: copy the folder wherever you like and it works.
The name and the tone come from Vagrant Story (Square, 2000) and its cursed city, Lea Monde:
- Grimoire: in the game, grimoires are the spell books you collect. Here, your book collection.
- Sigils: tags are called sigils, like the seals that open doors in Lea Monde. Each sigil «opens» a part of the library.
- Save point: creating a book sounds like saving your game.
- Emblem: empty states show a ceremonial cross inside a ring, inspired by the game's iconography.
The nod is there for whoever recognises it.
02What it does
Grimoire was born to keep the home library catalogued in a place of my own: no accounts, no cloud and no dependence on any outside service.
What problem it solves
- Knowing which books I have, where they are (shelf, room…) and their status (to read, reading, read).
- Remembering who I lent a book to, and since when.
- Finding any book instantly by title, author, synopsis or my own tags.
- Keeping the information to bibliographic-record standard: edition, publisher, ISBN, pages, series, cover, synopsis and notes.
Principles
- Your data is yours: everything lives in an SQLite database next to the executable; copy it to a USB stick and it keeps working.
- Always fast: tested with 5,000 books, searches take between 3 and 31 ms.
- Never lose anything: trash, undo, automatic backups and strict validation.
- Beautiful without getting in the way: an aesthetic with character, but a clean interface with the «lore» kept to the details.
03Decisions
Tauri 2 instead of Electron: a small executable that uses the WebView2 Windows already ships with.
SQLite in WAL mode with versioned migrations. Validation lives in the Rust backend and every save runs in a transaction; the app refuses to open a database from a newer version.
If the .exe folder isn't writable, the data moves to the Windows user folder.