🥱 - TL;DR
I used Claude Code to build a standalone web thing to manage bookmarks.
It’s at https://darcynorman.net/bookmarks/
I’ve also shared the code in case it’s useful to anyone. It’s AI Slop, with no warranty or support or whatever.
Back in the olden days, I was a pretty heavy user of the del.icio.us web bookmarking service1. Then, it was acquired by Yahoo! and sold, then relaunched, then mothballed, then who knows? It’s been offline for awhile. I stopped using it somewhere in the Yahoo! era - I didn’t feel like feeding Yahoo!2 so in 2013 I started using an open source bookmarking application called SemanticScuttle.
I hosted it on a subdomain on my web enterprise at links.darcynorman.net, using the clever site name of “Linky Linky”, and even shared access to it with a couple of friends who were looking to rebuild some of the del.icio.us magic. It worked ok for a while, then the open source project was basically abandoned. I don’t like running abandoned software on a server because it just begs to be hacked or be more trouble than it’s worth in general. So I reverted to browser-based bookmarks like some kind of caveman or something and shut down the SemanticScuttle app in 2020.
Some people have still been actively using social bookmarking tools for years - Alan has his Pinboard thing, Stephen’s newsletter is basically an annotated bookmarks list. Etc. etc. There’s still something “there”, there.
So. Just for kicks, I fired up Claude Code and gave it a starting prompt:
I want to build a self-hosted bookmarks application (at something like /links on my server). It needs to be simple and lightweight - ideally, just basic PHP and SQLite. It’s a single-user application (me). I will need to access it from multiple computers of different types (macbook air, iphone, etc.) and need to be able to view bookmarks, search them, and add them. Adding could be done with a bookmarklet to share the current web page (which would ideally pull things like Title, Description, and Tags from the page’s meta elements if possible). I’d like to have an RSS feed of bookmarks. And, ideally, a “recent bookmarks” thing that I could embed on a page on my Hugo website.
It chewed for a bit and created a PHP and SQLite application that actually worked. Over the following couple of weeks, I kept coming back with new feature ideas, bug fixes, tweaks. It has an RSS feed. A “Recent Bookmarks” page on my main website, updated whenever I run Hugo to publish the site. And a “gallery” view to show the thumbnail images for saved bookmarks. And a “dashboard” view for me to see the tag network and bookmarking activity. And lightweight markdown support in the bookmark description, so I can blockquote etc. And an “archive” tool so I can generate markdown or HTML for bookmarks saved in a given day/week/month, in case I want to do some kind of linkblogging thing at some point. And a process to check for broken links and flag them. I mean, it’s pretty fully-featured, aside from being intentionally a single-user application so it’s more of Antisocial Bookmarking but it works for me.
It initially used the og:image meta element from a bookmarked page to display an icon for the bookmark. Some of those were kind of huge (like the guy with a 12MB png file as the default og:image for his WordPress site - YIKES!) so I had it add a processing thing to resize images if needed. Then I thought it might be cool to have screenshots of the pages instead, so I asked it to try to build something to do that. It proposed installing Chrome on the server and running it headless to generate screenshots on demand. I don’t think my hosting provider would be cool with me running random binaries on the server, so I put the kibosh on that. Then it suggested using Google’s PageSpeed Insights API. I know. Gag. Google. And an external dependency. But it’d work, so I said to go ahead to try it out.
I’ve been finding it surprisingly useful, especially as a tool to help organize info for my Horizon Report panel suggestions.
Is it full of security holes? Maybe? I did have Claude Code run a couple of security audits on the code and it found a bunch of scary-sounding things that it then fixed. Who knows if it’s actually secure, or if I’ve somehow opened up a wormhole into the server for ne’er-do-wells to be crappy.
The process of vibecoding (gag) this thing went pretty well. To be transparent, it was definitely not a one-shot vibecoding thing. It took 46 sessions spread over 3 weeks - 237 “turns” of going back-and-forth to get the application to this point. It’s like working with a novice intern that can kinda-sorta do the thing, with enough guidance.
Over the 3 weeks of development, I slowly improved the application. Well, Claude slowly improved the application, with my nudging/feedback/direction. When I’m doing these coding experiments, I force myself to not edit the code directly myself - Claude Code does everything. One of my goals is to see how that goes. It went reasonably OK. There were 2 pretty frustrating parts:
- Hitting the usage limit mid-thought. “You’ve reached your limit, come back in like 8 hours or something” (paraphrased). Cool. Or when the context window fills up and Claude has to “compact” the conversation.
- Although Claude mostly gets things right - and has actually surprised me by adding things I hadn’t thought of, or adding them as much more fully-realized than I could have cobbled together that quickly - it sometimes gets stuck. Something won’t work, and I’ll go back and forth with “it’s not working. check your code. make it work. why is this so difficult?”. It’ll apologize. Or “apologize” - it’s just software running on someone else’s computer. And then eventually it’ll say “Oh my! Silly me! That API never existed / was updated like 5 years ago / doesn’t work like that. Let me look up current info and rebuild it.” (which, why wouldn’t it just do that initially instead of botsplaining incorrect code and approaches?)
Anyway. It works for me. Maybe it’d work for you? Maybe there’s some fatal flaw that would make that difficult? Who knows.
Some screenshots of the bookmarks manager thing as it stands now:
The main bookmarks list.
Screenshot of the standalone bookmarks manager thing, showing a list of bookmarks, search tool, and navigation links to other parts of the application.
Image by D'Arcy Norman
The gallery view.
Screenshot of the gallery view, showing thumbnails of bookmarks' screenshots. Screenshot of screenshots, as it were.
Image by D'Arcy Norman
The Dashboard view
Screenshot of the Dashboard view of the bookmarks application, showing some numbers about the bookmarks, a 'tag co-occurrence network' visualization of tags, as well as fancy charts showing bookmarking activity over time.
Image by D'Arcy Norman
Tag co-occurrence visualization
A screenshot of the concept-map-ish view of tags, showing connections between tags that have been used together (click for full size screenshot)
Image by D'Arcy Norman
and wrote a few blog posts about using it. apparently I didn’t properly tag them all, so here’s some from 2005-2008: https://darcynorman.net/tags/del.icio.us/ ↩︎
which is also a huge part of the reason I dropped out of Flickr, despite having been very active on the platform for years. ↩︎




