Show HN: Vibe coding a bookshelf with Claude Code

(balajmarius.com)

113 points | by balajmarius 2 hours ago

29 comments

  • spicyusername 1 hour ago
    These are the perfect size projects vibe coding is currently good for.

    At some point you hit a project size that is too large or has too many interdependencies, and you have to be very careful about how you manage the context and should expect the llm to start generating too much code or subtle bugs.

    Once you hit that size, in my opinion, it's usually best to drop back to brainstorming mode, only use the llm to help you with the design, and either write the code yourself, or write the skeleton of the code yourself and have the llm fill it in.

    With too much code, llms just don't seem able yet to only add a few more lines of code, make use of existing code, or be clever and replace a few lines of code with a few more lines of code. They nearly always will add a bunch of new abstractions.

    • mellosouls 2 minutes ago
      Coding now is not just binary, it's a spectrum from vibe-coding through copilot-style (design and coding assistance) to your help-with-design-only to no-AI.

      The capabilities now are strong enough to mix and match almost fully in the co-pilot range on most substantial projects and repos.

    • cube2222 1 hour ago
      I agree with you as far as project size for vibe-coding goes - as-in often not even looking at the generated code.

      But I have no issues with using Claude Code to write code in larger projects, including adapting to existing patterns, it’s just not vibe coding - I architect the modules, and I know more or less exactly what I want the end result to be. I review all code in detail to make sure it’s precisely what I want. You just have to write good instructions and manage the context well (give it sample code to reference, have agent.md files for guidance, etc.)

    • solumunus 1 hour ago
      > make use of existing code, or be clever and replace a few lines of code with a few more lines of code

      You can be explicit about these things.

      • auggierose 26 minutes ago
        Yes. It is called programming.
        • solumunus 4 minutes ago
          Using agents is programming. Programming is done with the mind, the tapping of keys isn’t inherent to the process.
    • aurareturn 27 minutes ago

        These are the perfect size projects vibe coding is currently good for.
      
      So far... it's going to keep getting better to the point until all software is written this way.
      • spzb 1 minute ago
        I've got a bridge to sell you
  • Tiberium 46 minutes ago
    > What I needed was not a better app, but a way to tolerate imperfection without the whole system falling apart.

    > Claude did not invent that idea. It executed it.

    > Claude handled implementation. I handled taste.

    This style of writing always gets me now :)

    • AtreidesTyrant 42 minutes ago
      This style of writing isnt human. Its AI.

      ^^ These dramatic statements are almost always AI influenced, I seem to always see them in people's emails now as well. "we didnt reinvent the wheel. we are the wheel."

      • delichon 34 minutes ago
        We can learn useful rhetorical techniques from AI that can help us clearly communicate. We should separate those babies from the bathwater.
        • F7F7F7 19 minutes ago
          Rhetorical techniques that are so easily identifiable as AI now.
        • estearum 15 minutes ago
          So far, any "useful rhetorical technique" one could've learned from AI has become a dead giveaway of AI slop (lazy writing and lazy thinking).

          Seriously: what tool do you want to use that's immediately available to the absolute lowest common denominator "writers" on the Internet?

          "It's not X, it's Y" literally makes my stomach churn from seeing so much of it on LinkedIn.

      • Tiberium 27 minutes ago
        Yeah, I know, I just feel like at this point it's useless to call that out.
  • m-hodges 58 minutes ago
    > I decided that 90 percent accuracy was enough.

    So many systems are fault-tolerant, and it’s great to remember that in a world where LLMs introduce new faults. Kudos to OP for this mindset; more anti-AI posters would benefit from sitting with the idea from time to time.

    • JKCalhoun 51 minutes ago
      Agree. We've all had occasional hilarious results when interacting with an LLM. If 90% of the interactions produce positive results… that's an improvement over my what I've come to expect plowing through Google search results.
  • nindalf 47 minutes ago
    This is such a coincidence. I had the same idea a few days ago and also vibe coded a library using Claude. https://nindalf.com/books. The original version of this was meant to encourage me to read more, and I'm pleased to say it succeeded. I hit my goal for the year after a couple of lean years. I also like looking at my highlights and notes and this UI makes it easier to read them.

    My experience with Claude was mostly very good. Certainly the UI is far better than what I'd come up with myself. The backend is close to what I'd write myself. When I'm unhappy I'm able to explain the shortcomings and it's able to mostly fix itself. This sort of small-scale, self-contained project was made possible thanks to Claude.

    Other times it just couldn't. The validation for the start and end dates it decided was z.string().or(z.date()).optional().transform((val) => (val ? new Date(val) : undefined)). It looked way too complex. I asked if it could be simplified, Claude said no. I suggested z.date().optional(). Claude patiently explained this was impossible. I tried it anyway, it worked. Claude said "you're absolutely right!". But this behaviour was the exception rather than the rule.

  • wek 17 minutes ago
    "The gap between intention and execution was small, but it was enough to keep the project permanently parked in the someday pile." Well said!

    This is my experience with agents, particularly Claude Code. It supplies sufficient activation energy to get me over the hump. It makes each next step easy enough that I take it.

  • tahirk99 33 minutes ago
    The size boundary point is real. Once projects get past a few thousand lines, you stop vibe coding and start managing intent and context again. At that stage the LLM becomes more of a fast junior than a magic wand.
  • butlike 23 minutes ago
    It's nice that the project probably helps cut down on accidentally re-buying already owned books. I would hope the project doesn't remove the joy of randomly rediscovering joyous books in your own collection from time to time.
  • felixding 1 hour ago
    Neat. I also used to make a simple "bookshelf" web page each year for the books I read, but mine were fully static HTML and nowhere near as fancy as this.

    Side note: I once wrote about recreating Delicious Library: https://dingyu.me/blog/recreating-delicious-library-in-2025

    • dewey 1 hour ago
      I was about to post something about Delicious Library. That's one of my earlier Mac user memories and it always gave me joy to import / organize my books in there even if there's no real reason to do it.
  • ear7h 23 minutes ago
    > I own more books than I can read.

    > I started asking for things I did not need.

    For a community that prides itself on depth of conversation, ideas, etc. I'm surprised to so much praise for a post like this. I'll be the skeptic. What does it bring to you to vibe code your vibe shelf?

    To me, this project perfectly encapsulates the uselessness of AI, small projects like this are good learning or relearning experience and by outsourcing your thinking to AI you deprive yourself of any learning, ownership, or the self fulfillment that comes with it. Unless, of course, you think engaging in "tedious" activities with things you enjoy have zero value, and if getting lost in the weeds isn't the whole point. Perhaps in one of those books you didn't read, you missed a lesson about the journey being more important than the destination, but idk I'm more of a film person.

    The only piece of wisdom here is the final sentence:

    > Taste still does not [get cheaper].

    Though, only in irony.

  • monerozcash 13 minutes ago
    It's a shame the blog post had to be written by AI too. If you're going to use AI to rewrite your text, you could at least ask it to keep the changes minimal.
  • cube2222 1 hour ago
    That’s really cool, and a great use-case for vibe coding!

    I’ve been vibe-coding a personalized outliner app in Rust based on gpui and CRDTs (loro.dev) over the last couple days - something just for me, and in a big part just to explore the problem space - and so far it’s been very nice and fun.

    Especially exploring multiple approaches, because exploring an approach just means leaving the laptop working for an hour without my attendance and then seeing the result.

    Often I would have it write up a design doc with todos for a feature I wanted based on its exploration, and then just launch a bash for loop that launches Claude with “work on phase $i” (with some extra boilerplate instructions), which would have it occupied for a while.

  • vtemian 1 hour ago
    This nails what vibe coding actually is. The model handles execution, but intent and taste stay human. That’s where the real leverage is.
  • samwho 1 hour ago
    I love this, the end result looks so good.

    Something you don’t really mention in the post is why do this? Do you have an end goal or utility in mind for the book shelf? Is it literally just to track ownership? What do you do with that information?

    • balajmarius 47 minutes ago
      Thanks! Honestly, there’s no big utility behind it. I didn’t build it to optimize anything or track data, it just felt good to make.

      I want my website to slowly become a collection of things I do and like, and this bookshelf is just one of those pieces.

      • AtreidesTyrant 41 minutes ago
        I like that it's fun, and that is what AI vibe coding should be.
  • zittur 36 minutes ago
    I really love how the bookshelf display looks. Most sites just use a standard grid for books, which can feel a bit cookie-cutter. The way you’ve mixed in stacked and bookend-style arrangements is a breath of fresh air, it really stands out.
  • ionicabizau 35 minutes ago
    Wonderful project, Marius! :) I shared it with my brother who has a lot of books and tracks them in his own little app. Keep up the great work! So happy to see you around!
  • bhouston 1 hour ago
    Good job!

    I wonder if you could develop this as an add on to Hardcover.app - you could fetch people's books, images, and display the bookshelf.

    All the data seems to be there:

    https://hardcover.app/@BenHouston3D/books/read?order=owner_l...

  • pixelmonkey 23 minutes ago
    Digitizing my physical bookshelf was one of the first fun “vibe coding” projects I did with ChatGPT4o in 2024.

    First, I took photographs of all my physical books simply by photographing the bookshelves such that the book spines were visible.

    Then passed the photographs with a prompt akin to, "These are photographs of bookshelves. Create a table of book title and book author based on the spines of the books in these photographed shelves." ChatGPT4’s vision model handled this no problem with pretty high accuracy.

    I then vibe-coded a Python program with ChatGPT4 to use the Google Books API (an API key for that is free) to generate a table, and then a CSV, of: book title, book author, and isbn13. Google Books API lets you look up an ISBN based on other metadata like title and author easily.

    Finally, I uploaded the enriched CSV into a free account of https://libib.com. This is a free SaaS that creates a digital bookshelf and it can import books en masse if you have their ISBNs. You can see the result of this here for my bookshelf:

    https://www.libib.com/u/freenode-fr33n0d3

    There are some nice titles in there for HN readers! My admin app for Libib (the one at https://libib.com) is more full-featured than the above public website showcases. It's basically software for running small lending libraries. But, in my case, the “lending library” is just my office’s physical bookshelf.

    I also added a Libib collection there that is a sync of my Goodreads history, since I read way more Kindle books than physical books these days. That was a similarly vibe-coded project. But easier since Goodreads can export your book collection, including isbn13, to a file.

    As for my actual physical bookshelf, it is more a collection of books I either prefer in print, or that are old, or out-of-print, or pre-digital & never-digitized.

    I liked the Libib software so much I end up donating to it every year. I originally discovered it because it is used for Recurse Center’s lending library in the Recurse Center space in Brooklyn, NY (https://recurse.com).

    Also, Libib has a Android, iPhoneOS, and iPadOS apps -- these are very basic but they do allow you to add new books simply by scanning their ISBN barcode, which is quite handy when I pick up new items.

    I did enjoy reading the OP writeup, it’s a fun idea to vibe-code the actual digital bookshelf app, as well!

  • kgthegreat 1 hour ago
    While currently taste is what we are banking on the thing humans will continue doing but I don’t think that will last for long.
    • neogodless 1 hour ago
      It is easy to defer to the "taste" of the mathematically mixed up assessment of "all internet-recorded human taste" if you prefer. And many will choose that. But many others will choose to remain in charge of their own taste, as best they can, and request that the machines still produce output per their bidding.
      • MattRix 1 hour ago
        Well no, you just need to tune the taste of the model to produce things that humans find appealing. This has already happened with the image generation models. I don’t see any reason it can’t happen with these code generation models too.

        The whole thing feels a bit like god-of-the-gaps situation, where we keep trying to squeeze humanity into whatever remaining little gaps the current generation of AI hasn’t mastered yet.

    • micromacrofoot 1 hour ago
      yeah there's nothing special about taste most of the time, very few people even have a decent sense of it anyway

      you can tell by how many people earnestly share AI generated images, many are completely tasteless but people don't care

      • wiseowise 1 hour ago
        Author has a great taste, you can see it by just visiting their website.
  • kgthegreat 1 hour ago
    I wrote about how I think about the separation of intent and execution here : https://bikeshedding.substack.com/p/the-agency-continuum
  • stanrunge 1 hour ago
    Very very cool. It's surprisingly difficult to find applications for organizing reading material, and also to actually read them. My current "good enough" solution is just Apple Books, but I've been meaning to make a similar application for this :)
  • stevesearer 1 hour ago
    Great project!

    Vibe coding has really helped me explore skills outside of my comfort zone which can then be applied in combination with other existing skills or interests in new ways.

    In the case of your project, I imagine that now that you can gather data such as books from an image of a bookshelf, you can do something similar in infinite other ways.

  • stevesearer 1 hour ago
    Sometimes when I’m vibe coding I feel like Ender from Ender’s Game and even though I’m making a stupid web app, I’m actually somehow actually winning a battle across the universe.
  • mihaibalint 1 hour ago
    I Love the fact that the browser search functionality works in the bookshelf.
  • asasidh 49 minutes ago
    “Claude handled implementation. I handled taste.”

    This is the right mindset.

    • ikamm 41 minutes ago
      This is an LLM-ism.
  • necromanc 1 hour ago
    This is a brilliant project—small, practical, and high-leverage.
  • troupo 1 hour ago
    Speaking of SerpAPI: Why we’re taking legal action against SerpApi’s unlawful scraping https://news.ycombinator.com/item?id=46329109

    SerpAPI provides a very valuable programmatic access to search that Google are hell bent on never properly providing

  • kingkongjaffa 1 hour ago
    This is lovely, claude code is a great tool for creating software for a user of 1. Personal software that runs locally (or on your own website in your case) and works exactly you want without it doing anything you don't want.

    One-off scripts and single page html/css/js apps that run locally are fantastically accessible now too.

    As someone who doesn't code for a living, but can write code, I would often go on hours/day long side quests writing these kind of apps for work and for my personal life. I know the structure and architecture but lack the fluency for speedy execution since I'm not writing code everyday. Claude code fills that speed gap and turned my days/hours long side quests into minutes for trivial stuff, and hours for genuinely powerful stuff at home and at work.

  • k4rnaj1k 27 minutes ago
    [dead]
  • xnx 24 minutes ago
    Sounds like the author did thing the hard way when he probably could've uploaded a few seconds of video to Gemini and said "make a virtual bookshelf app" https://fedi.simonwillison.net/@simon/111971103847972384