BookBinder helps you catalogue every book in your home using your phone camera and Claude AI. Here's how.
Download and install Docker Desktop from docker.com. It's free.
Wait until Docker Desktop shows "Docker is running" before continuing.
Unzip BookBinder into a folder. Open a Terminal (Mac/Linux) or Command Prompt (Windows), navigate to the folder, and run:
docker compose up -d
Docker will set everything up automatically — database included. When it's done, open http://localhost:8585 in your browser.
Open app/config.php in a text editor and find this line:
define('BB_EDIT_PASS_HASH', password_hash('bookbinder', PASSWORD_DEFAULT));
Replace bookbinder with your chosen password. Anyone can browse your catalogue, but only someone with this password can edit it.
See the Cataloguing your books section below — it's the same for everyone.
Copy the SQL from Claude and paste it in using either method:
If you added phpMyAdmin to your docker-compose.yml (see README), go to http://localhost:8586, select the bookbinder database, click the SQL tab, paste and click Go.
docker exec -i bookbinder_db mysql -u bookbinder -pbookbinder123 bookbinder << 'EOF' -- paste your SQL here EOF
INSERT IGNORE — safe to re-run as many times as you like.These steps are the same whether you're using Docker or a manual install.
For best results:
Group the photos for each bookcase into a folder and zip it. Name it clearly:
bcase1_lounge_main.zipbcase2_hall_by_stairs.zipbcase3_study.zipOn a Mac: select the photos → right-click → Compress.
On Windows: select photos → right-click → Send to → Compressed folder.
Go to claude.ai and start a new chat. Paste this prompt to get Claude set up:
I'm cataloguing my home library using BookBinder. I'll upload zipped photos of each bookcase and I need you to:
1. Read all the book spines in the photos
2. Generate SQL INSERT statements in this format:
INSERT IGNORE INTO books (title, author, category, sub_category, bookcase, shelf, location_name, notes) VALUES
('Title Here', 'Author Name', 'Category', 'Sub-category or NULL', BOOKCASE_NUMBER, SHELF_NUMBER, 'Room Name', 'any notes');
Rules:
- category should be one of: Fiction, Non-Fiction, Sailing, Medical, TEFL, Reference, Gardening, Cookery, Art, Music, Humour, Games, Sport, Motoring, Health, Poetry, Nature, Travel, DIY, Magazines
- sub_category for Medical: Anatomy, Osteopathy, Homeopathy, Nutrition, Physiotherapy, Orthopaedics, Clinical, Alternative Health
- shelf numbers count from top (1=top shelf)
- bookcase number is the number I give you with each upload
- Use NULL for unknown authors
- Flag unclear titles with 'Title unclear - check' in notes
After each bookcase, output the complete SQL block ready to paste into phpMyAdmin.
Ready — I'll upload bookcase 1 now.
Drag your zip files into the Claude chat (or use the attachment button). You can upload several bookcases at once. Tell Claude which bookcase number each one is and what room it's in, for example:
These are bookcases 1, 2 and 3. Bookcase 1 = Lounge Bookcase 2 = Hall by stairs Bookcase 3 = Study
Claude will read the spines and generate the SQL for each bookcase.
Log in and go to the Bookcases page. Upload an overview photo for each bookcase — it appears on the bookcase card so you can see at a glance where a book lives.
On the Browse page you can: