Michael Tromba
Michael Tromba

100K developers across 7 sites — and why I shut them all down

Network of developer discovery sites across Vue, React, Svelte, and more. 100K+ developers served.

100K developers across 7 sites — and why I shut them all down

I noticed something about developer curation sites — the "awesome lists" and "made with X" directories scattered around the web were pulling serious organic traffic. Developers were constantly searching for the best tools in their ecosystems, and the sites ranking for those queries weren't doing anything particularly sophisticated. Just organized lists. I figured I could build something better and do it at scale — so I did the keyword research, confirmed there was a real opportunity, and started building.

The first site was Best of Vue.js: a platform that automatically discovered, scraped, categorized, and presented the best open source Vue.js projects. Automated scrapers ran on schedules, pulling projects from awesome lists and community directories across the web, extracting metadata, generating live screenshots with headless browsers, and publishing everything through a server-rendered frontend optimized for search.

But the real idea was never a single site. I designed the whole system as a multi-tenant platform from day one — one codebase that could power a "best of" site for any developer ecosystem. Adding a new ecosystem meant adding a config file: domain name, theme colors, scraping sources. The system handled the rest — routing, sitemaps, SEO-optimized category pages, everything. Within a few months I had seven sites live: Vue.js, React, Svelte, Tailwind CSS, GraphQL, Laravel, and CSS. Seven domains, seven themes, one codebase.

The infrastructure underneath was one of the more interesting things I've built. Docker microservices handled each concern independently — scrapers, API, server-rendered frontend, sitemap generation — each scaling on its own. The scraping layer rotated through proxies to avoid rate limits, managed a pool of headless browser instances for generating screenshots at scale, and ran collision detection to deduplicate the same project appearing across multiple sources. I designed the architecture to automatically generate landing pages targeting long-tail developer searches for each ecosystem, and the SEO strategy worked exactly as planned. The network grew to serve over 100,000 developers across the seven sites, with organic traffic climbing steadily month over month.

And then I shut all of them down.

Traffic was solid. The system mostly ran itself. Developers were genuinely discovering useful tools through the network. But "mostly ran itself" was the key phrase — keeping content quality high still required regular attention. Reviewing what the scrapers pulled in, tuning categorization, managing infrastructure across seven domains. This was before AI APIs were sophisticated enough to handle that curation layer automatically, so there was always going to be a human in the loop.

The honest realization was simpler than a maintenance problem, though. These sites aggregated other people's work into searchable directories. That's a real service — a hundred thousand developers found it useful — but it wasn't the kind of work I wanted to spend my limited headspace on. I'd rather build things that create new value than maintain systems that organize existing value. So I killed all seven, freed up the bandwidth, and redirected it toward projects that mattered more to me.

What I still carry from this isn't the architecture or the SEO playbook — it's the lesson about traction as a trap. Momentum feels like proof that you should keep going, and walking away from something that's working feels wasteful. But attention is the scarcest resource I have, and not everything that works deserves to keep running. Sometimes the most productive decision is to shut it all down and move on.