Max Basev.
← Writing
buildOctober 1, 20265 min read

I Went Through 60 of My Repos. Here's What Survived

I Went Through 60 of My Repos. Here's What Survived

One morning, over coffee, I decided to "quickly tidy up" my GitHub: write descriptions, add topics, archive a few things. It wasn't quick. There were about sixty repositories, and roughly half of them didn't have a single line of description.

A couple of them genuinely stumped me. I'd look at the name and honestly not remember what was inside. It's an awkward feeling, having to explain your own code to yourself.

But by the end I had a pretty honest map of what I actually do. Here it is.

The numbers

Sorted into piles:

  • Live products — about half a dozen: apps on the App Store and the Mac App Store, plus a couple of SaaS tools. Real people pay for them, even if not many yet.
  • Personal tools — surprisingly, the biggest pile. A budgeting app, English flashcards, a nutrition tracker, a time tracker, a local image generator, a comics-to-PDF converter, a sitemap parser. Most of them have exactly one or two users: me and my wife.
  • Games and creative stuff — browser games made for game jams, a site for a concept album, a horror concept that so far only exists as a teaser.
  • Sites and blogs — my current site, a creative hub, archives of old blogs, a couple of domains that just redirect.
  • Client work — WordPress themes, dashboards, an inventory system, documentation. Not mine, but for years it paid for everything else.
  • The archive — everything that died but felt too precious to delete.

If I'm honest, roughly a tenth of it ever reached real users. Even less of it reached money.

Names lie

The first thing that jumped out: repository names almost never match what the project became.

hack-them-all is now Scanwise, a website security scanner. A great name for a side project, a terrible one the moment you have to explain to a payment processor what your business does. cheqly is Ovanri: it was the same life tracker from day one, only the name changed. I renamed a bunch of repos along the way.

I also spotted a pattern I'd never noticed in myself: several repos start with aka-. aka-cleanshot became Screo, my CleanShot replacement. aka-timestripe became Lived. aka-go-full-page is a half-finished replacement for a screenshot extension that got removed from my browser.

So a lot of my products aren't born from "let's start a startup". They're born from "I like this thing, but I want my own". I wrote about that in Soon Everyone Builds Their Own, but I didn't expect it to be visible this literally in my folder names.

Personal tools are the main genre

What surprised me most wasn't the number of dead projects. It was the number of living ones nobody knows about.

A budgeting app my wife and I use every day. English flashcards. A nutrition tracker. A tiny Telegram bot that rewrites my rough drafts into decent English. None of them are for sale, none of them have a landing page. And yet they're the ones that make the biggest difference in my everyday life.

I used to think of these as "distractions from the real products". Now I think they're the main body of my work — and the products are just the few personal tools that turned out to be useful to someone else too.

What the cleanup turned up

The tidy-up turned out to be more useful than I expected, because it surfaced things that had been quietly breaking:

  • Links to nowhere. An old blog post linked to a GitHub repo that had been private for ages, so visitors got a 404. A project card in my portfolio pointed to a site I'd shut down myself.
  • Unnecessary publicity. A couple of repos were public for no particular reason. Nothing dramatic, but keeping things public that were never meant to be open source is a bad habit.
  • Archived isn't "off". An archived repo goes read-only, but its Vercel deployment keeps running. And redirects from old domains only work because I set them up somewhere, once, years ago. Delete the "old, unused project" later and you can break something you forgot existed.
  • Descriptions are for your future self. One line of description saves five minutes a year from now. Now every repo has a line saying what it is and, if it's dead, where the living version moved to.

A graveyard is a portfolio too

Archived software experiments on a shelf, connected by a growing vine.

You could look at sixty repos and a handful of living projects as a failure rate. I don't.

A QR code generator taught me that commodity utilities are a dead end. A joke Chrome extension taught me to ship small and fast. An old inventory system for a clinic taught me what it's like to work with real data and real people who don't forgive bugs. The first, React Native version of UghOkay taught me that sometimes the right move is to throw it all out and rebuild it natively.

None of those projects were mistakes. Not starting them would have been.

If you want to do the same

An hour of work that pays for itself:

  1. Go through your repo list and give each one a single line: what it is, and whether it's alive.
  2. Archive the dead ones, with a note pointing to where the living version is.
  3. Check visibility: does everything public actually need to be public?
  4. Find the GitHub links in your blog and portfolio and make sure none of them lead to a 404.
  5. Before deleting old deployments, check that no redirect depends on them.

Then pour a second coffee. The first one goes to remembering projects you forgot you'd built.

Build
← Back to writing