47 Repos, Zero Users: The Side Project Graveyard Most Developers Won't Talk About
Open up the average developer's GitHub profile and you'll find something that looks a lot like ambition — but smells a little like avoidance. Dozens of repositories. Colorful contribution graphs. READMEs that start with "🚀 A blazing-fast tool for..." and trail off somewhere around the Installation section.
Zero stars. Zero forks. Zero users. Last commit: fourteen months ago.
This is the side project graveyard, and almost every developer reading this has one.
The Illusion of Progress
Here's what nobody talks about at meetups or in Slack communities: building a side project feels exactly like shipping one. You're writing code. You're solving real problems. You're learning things. The dopamine loop is indistinguishable from actual productive work — right up until the moment you realize you've spent four weekends picking a color palette for a landing page that doesn't exist yet.
Marcus, a backend engineer based out of Austin, has 52 GitHub repos. He laughed when asked how many had paying users. "One," he said. "And I built that one in a weekend because a friend needed it and I promised I'd send it to him by Sunday."
That accidental deadline is the whole story, really.
The projects Marcus chose to start — the ones with no external pressure, no waiting user, no skin in the game — those are the ones gathering digital dust. "I have a SaaS idea I've been 'building' for two years," he said. "It has a database schema. It has a logo. It has absolutely no users because I keep finding one more thing to fix before I launch."
Why Developers Are Wired for This Trap
The side project death spiral has a few reliable stages. First comes the idea — usually triggered by a pain point, a conversation, or a late-night Reddit thread. Then comes the excitement phase, where you pick a stack, spin up a repo, and feel genuinely energized. Then comes the architecture phase, where you make seventeen decisions that don't matter yet. Then comes the refinement phase, where you polish things nobody has seen. Then comes the quiet phase, where the project just... sits.
Psychologists call the underlying mechanism something like "completion anxiety" — the fear that finishing a thing exposes it (and you) to judgment. As long as a project is "in progress," it exists in a protected state. It can still be great. It hasn't failed yet. Shipping kills that comfortable ambiguity.
For developers specifically, there's an added layer: technical perfectionism. The codebase is a reflection of your skill, and a messy codebase launched publicly feels like showing up to a job interview with mustard on your shirt. So you clean it up. And then you clean it up again. And then you add tests. And then you refactor the thing you just tested.
"I literally rewrote the auth system three times on a project that had zero users," said Priya, a full-stack developer from Seattle. "Like, who was I securing it for?"
The Builders Who Broke the Cycle
The developers who actually ship — the ones with real users, real feedback, occasionally real revenue — tend to share one trait: they made a rule with themselves about what "done" means before they started.
Jordan, an indie developer who's launched six products in three years (three of which he's since killed), keeps a simple personal policy: if it's not live within 30 days of the first commit, he archives the repo and moves on. "I used to think that was quitting," he said. "Now I think of it as a forcing function. Either I ship it rough, or I admit I was never that serious about it."
Two of Jordan's products make money. One of them is embarrassingly simple — a glorified email digest he built in a weekend and charged $4/month for. "The code is terrible," he said, with zero apparent shame. "There are comments in there that say 'fix this later.' It's been two years. I haven't fixed it. People keep paying me."
That's the part that stings a little: the market genuinely does not care about your architecture decisions. Users care whether the thing works well enough to solve their problem. That's it. The gap between "good enough to ship" and "ready to ship" in most developers' heads is measured in months of work that produces zero additional user value.
The Monetized Failure Playbook
Some builders have taken this further, turning the failure of side projects into a content strategy or a learning signal. Posting a "what I built and why it flopped" writeup on Indie Hackers or a dev blog has become its own genre — and occasionally, those postmortems attract more attention than the product ever did.
There's something genuinely useful in that habit. Shipping rough forces you to confront what actually matters in a product versus what you imagined mattered while building in isolation. The feedback loop is brutal and fast and humbling. But it's real. Fourteen months of solo refinement in a private repo gives you exactly zero of that signal.
Priya eventually launched her project — the one with the three auth rewrites. She put it up with a "beta" label, charged nothing, and told twenty people in a Discord she was in. Four of them used it. Two gave her feedback that changed the entire direction of the product. "I would have kept building the wrong thing forever if I hadn't just posted the link," she said.
The Repo Count Is a Vanity Metric
There's a version of developer culture that celebrates the side project as an end in itself — the learning, the exploration, the craft. And that's not entirely wrong. Building things is how you get better at building things.
But there's a difference between a learning project and a launch-avoidance project dressed up as a learning project. One of them is honest about what it is. The other one has a half-written README and a Stripe account you set up "just in case."
If you've got a repo you've been "almost ready" to launch for more than three months, it might be worth asking yourself a direct question: are you building a product, or are you building the idea of a product? Because the idea of a product is comfortable and safe and infinitely improvable. An actual product is messy and exposed and occasionally embarrassing.
It's also the only kind that has users.
The graveyard will always be there. The question is whether you're going to keep adding to it, or finally just send the link.