This was actually entirely vibe coded by Sonnet 4.6, with a lot of me yelling at it!
It's essentially a SolidStart SPA with virtualized scrolling and a few other tricks (even I don't know most of them!). Vector search is entirely client-side with transformers.js and CLIP. The first load is quite slow unfortunately, cause it has to download the index of photo id -> link (~7 mb last time i checked), and same for searches, as it has to download the vector index (~28mb) and embedding model the first time. Caching is pretty good though.
I was previously using [Lychee](https://lychee.electerious.com/), which worked well but wasn't really suited for this use case. So I scrapped it and started from first principles with Claude. This entire task only used up 50% of my 5-hour quota on the $20 plan!
Since the site itself is an SPA and images are static, using a VPS is overcomplicating things since I (well, Claude) am essentially just using Caddy as a glorified CDN. But I had free DigitalOcean credits since I'm a student, and where else can I host 40 gigabytes of photos for free?
All in all, this was definitely a very fun exploration of what someone who's technical[1] can do with Claude. The code is all open-source (but it's slop) at https://github.com/aadishv/catapp.
[1]: at least I'd like to consider myself technical!
14333 cat pictures is several orders of magnitude less than the instantainious views of cats on the internet at any given moment, you could say that the whole cat thing is dogostrophic