Two months ago I wrote about launching Fretlist and what the first two weeks looked like. I said I'd come back with an update. Then I shipped a bunch of stuff and didn't write anything for ten weeks.
Time to fix that. Here's where Fretlist is now.
Fretlist by the numbers
- 138 users (was 60)
- 55 users have added at least one song. The other 74 opened the app, saw an empty library, and bounced
- 9,183 songs in the platform. 127 setlists
- 42 users have used Play Mode. 23 installed the PWA. 38 used import
- 0 paying customers — Fretlist is free during Early Access
- My heaviest user has 4,224 songs
The headline: more signups, more activity at the top end, same bottleneck at the bottom. People who get past the empty-library moment use the app heavily. People who don't, never come back.
What I shipped that I'm proud of
Bulk import landed properly. A user named Lisa brought 830 songs into Fretlist from SongbookPro in one go. Another, Nate, brought 4,224 ukulele songs in a single ChordPro zip. Tony, an OnSong user, brought 1,454. Watching those imports land was the most satisfying stretch of this project. Fretlist now holds over 9,000 songs across 129 accounts. A handful of people are doing most of the heavy lifting and that is fine.
The auth refresh race condition. Fretlist sits on Supabase, and for three weeks I chased intermittent "session expired" errors that nobody could reliably reproduce. Root cause: middleware and the data layer were both refreshing the same session at the same time, and one would clobber the other's token. Fix was architectural — pulled @supabase/ssr out of middleware entirely, separate createDataClient for queries, no contention. The kind of bug that doesn't exist on localhost and only shows up under real concurrent load.
The bug only a real gig could find. A user in Ireland plays in four bands. He took Fretlist on stage. The venue's mixing desk was broadcasting its own WiFi network for the engineer's iPad. His tablet auto-joined it. The browser said "WiFi connected" and Fretlist trusted that signal — even though the network had no internet. The app tried to fetch fresh data instead of falling back to the local copy. I'd never have found that one in development. I now check actual reachability, not just "WiFi exists." Fixed within a week.
The polish layer arrived by email. A user named Bruce sent me an eight-page PDF of UX feedback on Fretlist in week four, then followed up with a multi-browser bug sweep — different OSes, different browsers, an issue that only happened in lite-mode Safari, an underlining bug nobody else had seen. Most of Fretlist's mid-April release notes are me working through Bruce's list. He doesn't know it yet but he's roadmap-shaping.
What my changelog actually tells me
Almost every line above traces back to an email.
Bulk import scaled because Lisa, Nate and Tony pushed me to make it scale. The auth fix shipped because users were hitting it. The venue-WiFi fix exists because Geoff took the app to a real gig. The browser-polish work is Bruce's PDF turned into commits. Even the next thing — chord diagrams, "Frets" — is being built largely because Nate named it as the blocker between him and full activation, and kept naming it.
I'm not building Fretlist for a market. I'm building it for thirty-or-so people who reply to my emails, and everyone else benefits. That probably stops working at some scale. It's working at this one.
The thing I'd tell another solo dev who is sitting on a side project: read every email twice, reply to all of them, and assume the people who write back are doing more for your product than you are.
What didn't go well
Fretlist lost two months of Google indexing. Vercel's free Hobby tier puts your app to sleep when there's no traffic. Googlebot would arrive at fretlist.com, hit a slow cold start, and bail. Search Console showed almost nothing for those three months. I noticed in mid-April, upgraded to Vercel Pro, indexing recovered within a week.
If SEO matters to your side project, do not stay on the free tier past day one of launch.
What's shipping next in Fretlist
Chord diagrams. The most-requested feature after bulk import. Not a chord library lookup — a renderer that draws the actual fingering you've defined for a song, multi-instrument (guitar, ukulele, mandolin, banjo), with per-song voicing overrides. I'm in the middle of execution now. Should land in Fretlist within the next two weeks.
After that: a proper print/export, then a persona-based onboarding flow that picks an experience based on who you are (gigging musician / learner / collector). The activation problem solved properly, not patched.
Closing
If you're a musician, Fretlist is free during Early Access. If you've got 50+ songs in OnSong, SongbookPro, ChordPro files, or a folder of PDFs, Fretlist's bulk import will eat all of it in one go.
If you're a builder, the only thing I'd repeat from the last two months of Fretlist: do the unsexy infrastructure stuff — auth, indexing, schema markup, backups — before you need it. Every painful thing in this update is something I should have done in week one and didn't.
— Dear John, building Fretlist alone from Alkmaar, Netherlands
Top comments (0)