๐Ÿ“š How to install & use ShelfMate

ShelfMate catalogues your books, vinyl records and CDs using your phone camera and Claude AI. Choose your install method below, then follow the cataloguing steps.

1

Install Docker Desktop

Download and install Docker Desktop from docker.com โ€” it's free.

  • Mac: download the .dmg, drag to Applications, launch it
  • Windows: download the installer, run it, restart if asked
  • Linux: follow the instructions at docs.docker.com/engine/install

When Docker starts up, it will offer to create an account โ€” you don't need one.
Look for the small 'Skip' link in the top right of that screen

Wait until Docker Desktop shows "Docker is running" before continuing.

2

Download and unzip ShelfMate

Purchase and download ShelfMate from the download page and unzip it into a permanent folder โ€” somewhere like Documents/ShelfMate/ rather than Downloads, as Docker needs to find it each time you start.

3

Start ShelfMate

๐ŸŽ Mac โ€” easiest: download the Mac Launcher and double-click ShelfMate Launcher.app โ€” it starts ShelfMate and opens your browser automatically. No Terminal needed.
โš ๏ธ Mac users: wherever you put ShelfMate Launcher.app when you first double-click it, that's where ShelfMate will be installed. Choose a permanent location โ€” such as your Applications folder or Documents โ€” before running it for the first time.
๐ŸชŸ Windows โ€” easiest: unzip the ShelfMate download, then right-click Install ShelfMate.bat and choose Run as administrator. A progress window will guide you through โ€” it asks where to install (defaults to Documents) and opens your browser when ready.

Managing via Docker Desktop

After installation, open Docker Desktop and you'll see your software listed with Start and Stop buttons. You can start and stop from there at any time (or just quit Docker to stop).

Linux / command line: navigate to the shelfmate folder and run:

docker compose up -d

Then open http://localhost:8585 in your browser.

phpMyAdmin is also available at http://localhost:8586 if you ever need direct database access.

๐Ÿ’ก First run only: the browser opens automatically but you may see an empty page โ€” the database is initialising in the background. Wait 20โ€“30 seconds and refresh. Every start after that is instant.
๐Ÿ” Next time: make sure Docker Desktop is open (launch it and wait for "Docker is running" if it's not), then double-click ShelfMate Launcher.app (Mac) or start.bat (Windows) again โ€” that's all you need to do.
4

Set your editor password

Open app/config.php in any text editor and find this line:

define('SM_EDIT_PASS_HASH', password_hash('shelfmate', PASSWORD_DEFAULT));

Replace shelfmate with your chosen password. Anyone can browse your catalogue โ€” only someone with this password can edit it.

5

Photograph, zip and upload to Claude

See Cataloguing your collection below โ€” it's the same for everyone.

6

Import the SQL Claude generates

Log in to edit (default password is 'shelfmate' change in config as above if required), then go to Import SQL in the top menu. Paste the SQL from Claude, or upload it as a .sql file โ€” check the preview, then confirm.

โœ… Uses INSERT IGNORE โ€” safe to re-run as many times as you like. Import runs as a single transaction, so a mistake can't leave your catalogue half-updated.

Already using BookBinder? Upgrade in minutes

Your entire catalogue moves across โ€” no re-photographing, no re-typing.

1

Export from BookBinder

In BookBinder, log in as editor, then go to Export SQL in the top menu and download your catalogue as a .sql file.

๐Ÿ’ก Running an older BookBinder without Export SQL? In phpMyAdmin, export the books and bookcases tables as data-only SQL with "INSERT IGNORE statements" checked.
2

Import into ShelfMate

Log in to ShelfMate as editor, then go to Import SQL in the top menu. Upload your .sql file (or paste its contents), check the preview, and confirm.

โœ… Done โ€” your full catalogue is in ShelfMate. No phpMyAdmin needed on the ShelfMate side, whether you're running Docker or shared hosting.
3

Bookcase photos

Photos don't transfer with the SQL โ€” copy the contents of your BookBinder install's uploads/bookcases/ folder into ShelfMate's uploads/bookcases/ folder. Filenames match up, so your bookcase photos appear automatically.

After import: your catalogue carries across including any genre assignments. The new ShelfMate fields โ€” condition, wishlist, purchase value and last read/played โ€” will be blank to start with. Fill them in gradually using the inline โœ๏ธ edit, or use Batch Edit to set condition or genre across a whole selection at once.

Errors about duplicate entries during import are harmless โ€” entries that already existed are just skipped. Your data is fine.

Cataloguing your collection

These steps are the same whether you used Docker or a manual install. ShelfMate handles books, vinyl LPs and CDs equally well.

A

Take photos of your shelves and stacks

For best results:

  • One shelf per photo โ€” don't try to capture everything in one shot
  • Straight on โ€” stand directly in front, not at an angle
  • Good light โ€” natural daylight or overhead; avoid flash glare on spines
  • Fill the frame โ€” get close enough that spine text is readable
  • One wide-angle overview shot per bookcase โ€” useful for the bookcase card photo
  • See also How to photograph your shelves opens in new tab
๐Ÿ“ฑ Works for books, LP spines and CD stacks equally well. Claude can even read upside-down spines. iPhone or Android both work fine.
B

Zip the photos for each location

Group each bookcase or CD/LP stack's photos into a folder and zip it. Name it clearly:

  • bcase1_lounge_main.zip
  • lounge_lps_classical.zip
  • office_cds.zip

Mac: select photos โ†’ right-click โ†’ Compress.
Windows: select photos โ†’ right-click โ†’ Send to โ†’ Compressed folder.

๐Ÿ’ก You can do multiple stacks at once โ€” just zip them separately and upload together.
C

Open a new chat with Claude

Go to claude.ai and start a new chat. Paste this prompt:

I'm cataloguing my home collection using ShelfMate. I'll upload zipped photos of each bookcase, LP stack or CD stack and I need you to:

1. Read all the spines in the photos (books, LPs and CDs)
2. Generate SQL INSERT statements in this format:

INSERT IGNORE INTO books (title, author, category, sub_category, genre, bookcase, shelf, location_name, notes) VALUES
('Title Here', 'Artist/Author', 'Category', 'Sub-category or NULL', 'Genre or NULL', BOOKCASE_NUMBER, SHELF_NUMBER, 'Room Name', 'any notes');

Rules:
- category: Fiction, Non-Fiction, Music, Classical, Medical, Sailing, TEFL, Reference, Gardening, Cookery, Art, Humour, Games, Sport, Health, Poetry, Nature, Travel, DIY, Magazines
- sub_category for Music: CD or LP
- genre: for music use Jazz, Classical, Blues, Folk, Rock, Soul, Country, World etc. For fiction use Literary, Crime, Historical etc.
- shelf numbers count from top (1=top shelf), 0 = stacked flat
- bookcase number is the number I give you with each upload
- Use NULL for unknown authors/artists
- Flag unclear titles with 'Title unclear - check' in notes

After each stack, output the complete SQL block ready to paste into ShelfMate's Import SQL page.

Ready โ€” I'll upload bookcase 1 now.
Now you can login to ShelfMate and import the SQL that Claude produces or paste it in (choose Import SQL top right after logging in)
D

Upload your zip files to Claude

Drag your zip files into the Claude chat. Tell Claude which bookcase number each one is and what it contains:

These are bookcases 1, 2 and 3.
Bookcase 1 = Lounge main bookcase (books)
Bookcase 2 = Lounge LP stack by the hifi (vinyl records)
Bookcase 3 = Office CD rack (CDs)

Claude reads the spines and generates the SQL for each location.

๐Ÿ’ก If a title is hard to read, Claude flags it in the notes column so you can check the physical item later.
E

Add location photos (optional but lovely)

Log in and go to the Bookcases page. Upload an overview shot for each bookcase or stack โ€” it appears on the location card so you can see at a glance where something lives.

F

Browse, search and tidy up

On the Browse page you can:

  • Search by title or author/artist
  • Filter by bookcase or category using the sidebar
  • Expand categories with a โ–ถ arrow to filter by sub-category or genre
  • Sort by any column โ€” including Genre
  • Edit any item inline with the โœ๏ธ button (log in first)
  • Add items manually with the + Add Book button
  • Mark items as lent out with the borrower's name
  • Wishlist items you want to find
  • Export your catalogue or wishlist to CSV
  • ๐ŸŽฒ Random pick โ€” browse by category for something to read or listen to tonight
๐Ÿ’ก Items flagged as 'Title unclear' are worth a quick follow-up photo to Claude โ€” a clearer close-up usually does it.

Organising your music collection by genre

Genre is one of ShelfMate's most powerful features for music collectors โ€” here's the best way to use it.

G

Ask Claude to assign genres when cataloguing

The setup prompt above already includes genre. When uploading a stack of jazz LPs, tell Claude:

This is bookcase 7 โ€” my jazz LP collection.
Please set genre = 'Jazz' for all of these unless you can identify a different genre from the spine.

Claude will set Jazz as the default and override where it recognises something different (Classical, Blues etc.).

๐Ÿ’ก Works equally well for book genre โ€” "this is my literary fiction shelf, set genre = Literary Fiction unless clearly otherwise."
H

Batch assign genres after import

Already imported without genres? Use the Batch Edit panel in the Browse page โ€” no need to edit each item individually.

  1. Filter the list โ€” e.g. click Music in the sidebar, then LP under sub-category
  2. Narrow further if needed โ€” e.g. filter to a specific LP bookcase
  3. Click โš™ Batch edit this selection to expand the panel
  4. Set field: Genre, To value: Classical (or Jazz, Blues, Folk etc.)
  5. Click Apply to all N books and confirm
โšก This is the fastest way to genre-tag a large collection. Filter to your Classical LP bookcase, batch set genre to Classical in one click โ€” done. Repeat for each genre/location combination.
I

Browse and sort by genre

Once genres are assigned:

  • Click the Genre column header to sort your whole catalogue by genre โ€” all your Classical together, all your Jazz together
  • Click the โ–ถ arrow next to Music in the sidebar to expand genre sub-filters
  • Click a genre in the sidebar to filter to just those items
  • Combine with category filter โ€” e.g. Music โ†’ LP โ†’ Jazz for just jazz vinyl
๐Ÿ’ก Genre works for books too โ€” sort by genre to find all your Literary Fiction, or filter to Crime for a rainy afternoon.
J

Condition grading for vinyl

For vinyl collectors, the Condition field supports standard grades: Mint, NM, VG+, VG, Good, Fair, Poor.

You can add condition when editing any record inline (โœ๏ธ button), or set it during the Add Item form. Use the Purchase value field alongside condition for insurance records.

๐Ÿ’ก Batch edit can also set condition across a selection โ€” useful if you've just acquired a collection and want to mark it all as VG to start.

ShelfMate extras

A few features worth knowing about.

โ˜…

Wishlist

Mark any item as Wishlist status โ€” either when adding manually or via the inline edit โœ๏ธ. Wishlist items appear in the sidebar with a count, styled differently in the browse list so they stand out.

Export your wishlist to CSV โ€” useful to take to record fairs, second-hand bookshops or car boot sales.

โ˜…

Export to CSV

Go to the Export page (top nav). Filter by bookcase, category or wishlist, then download a CSV that opens in Excel, Numbers or Google Sheets.

Useful for insurance schedules, sharing your catalogue, or keeping an offline backup.

โ˜…

๐ŸŽฒ Random pick

Click ๐ŸŽฒ Random in the top nav. Filter by category if you want (Fiction only, Music only), then click the button โ€” ShelfMate picks something at random from your shelves. Shows title, artist/author, location and condition. Hit it again if you're not feeling it.

๐Ÿ’ก Great for breaking the "what shall I listen to tonight?" deadlock when you have 300 LPs to choose from.

Tips & things to know

Ready to get started?

๐Ÿ“š Get ShelfMate โ€” ยฃ10