Interactive 3D book archive
The Abeer Minhas Collection
75 book reviews in a dark 3D vault, with ten named pigments. I wanted to see if I could vibe code something as nice as Stripe Press.

TL;DR
- A 3D archive of the 75 books I've reviewed on Goodreads. It's live on Replit.
- I did the product, design and code with Three.js and Claude Code, starting from Mint's open-source Complete Shelf.
- Goodreads no longer has a public API, so the data comes from a spreadsheet export, filtered so only books I reviewed get published.
- My first real 3D work since a HoloLens app: AI-generated materials from Mint, including metallic foil titles.
How it started
I was looking at Stripe Press, where the books sit on the page like real objects you want to pick up, and asked myself two questions. Could I vibe code something like this? And how do people actually bring 3D elements into a website?
I didn’t start from scratch. I started with Mint’s free, open-source Complete Shelf and kept working on it until it had 3D effects, the Stripe Press look, and my own stuff in it.
A shelf needs books, and I’ve written a lot of reviews on Goodreads, so those became the books. Goodreads shut down its public API in 2020, which was annoying. It was a good way to connect my own reading history to other things. But it still lets you export your library as a spreadsheet, and nobody ever thinks about the spreadsheet. A small script keeps only the books I’ve read and reviewed. My other shelves and private notes stay on my laptop. The site publishes exactly what it shows and nothing else.
What it is
Books float in a dark vault like something a museum forgot to label. Scroll to browse, click to pull one out, and the whole page floods with that book’s color while my review unfolds like a manuscript page, gilded first letter and all. Press C and the stack becomes a timeline of my reading life, with a thread running through the years.
It’s deployed on Replit.
The redesign
The first version was a loving tribute to Stripe Press. It looked great. It looked like theirs. So I kept every interaction and replaced the vocabulary:
- Named pigments, not brand colors. Every book gets one of ten pairs from the history of color, like Ultramarine & Saffron or Cochineal & Turquoise.
- The khatam, not stars. Ratings are eight-pointed stars from Islamic manuscript tradition, and the same geometry is woven faintly into the dark.
- Actual materials. AI-generated linen, page edges and silver leaf, so the foil titles catch the light as a book turns. Five-star books get gilt edges, because they earned it.
Materials
The only 3D thing I’d built before this was a HoloLens app in Unity. I had never really thought about what a 3D object is made of, so the textures, which Mint generates with AI, were where I spent most of my curiosity. It turns out materials have properties, and one of them is how metallic something is. Turn it up and the foil titles start catching the light. I thought this was very cool.
Getting the book textures right took a long time.
Notes
- Updating the shelf means exporting a new spreadsheet from Goodreads and uploading it by hand. With the API it would just update itself. Automating this is on the list.
- The redesign didn’t change a single interaction.
- I rebuilt the book three times. The last one is the simplest.