I Built a Community Ranking Platform Alone. Tonight It Nearly Crashed Under 500 Users. - DEV Community
Add reaction
Like
Unicorn
Exploding Head
Raised Hands
Fire
Jump to Comments
Save
Boost
More...
Copy link<br>Copy link
Copied to Clipboard
Share to X
Share to LinkedIn
Share to Facebook
Share to Mastodon
Share Post via...
Report Abuse
I Built a Community Ranking Platform Alone. Tonight It Nearly Crashed Under 500 Users.
I shipped Peakd tonight. Posted it on Hacker News at 2am. Within an hour, 500 people showed up and my server fell over.
This is the story of building a ranking platform solo for months, launching it at the worst possible time, and fixing a cascading database failure in real-time while strangers on the internet told me my site was broken.
What is Peakd?
A community-powered ranking platform for everything. Products, services, countries, universities, banks, streaming platforms — anything you'd Google "best X" for.
The idea: real people rate things 1-10, rankings are trust-weighted, and companies can never buy a higher position. Like Rotten Tomatoes meets Reddit, but for every industry.
15,000 entities. 1,700+ categories. One developer.
Why I Built It
Every "Best X in 2026" article online is SEO garbage. Written by someone who never touched the product, optimised for affiliate commissions.
G2 charges companies $30k/year to look good. Trustpilot feels like a shakedown. Versus.com only does hardware specs.
None of them answer the simple question: "What do real people actually think is best?"
So I built the answer. Community votes. Trust-weighted rankings. No pay-to-play. The data is community-maintained — like Wikipedia, anyone can suggest edits and corrections.
The Stack
Frontend: Next.js 16, TypeScript, Tailwind
Backend: Node.js, Express, PostgreSQL
Cache: Redis (this became important tonight)
Hosting: AWS Lightsail (2GB instance — this was the mistake)
CDN: Cloudflare
Data pipeline: Python workers pulling from Wikidata, Wikipedia, and official websites
Images: Lazy proxy with R2 CDN caching
What Happened at Launch
I posted on HN at 2am UK time (bad timing — Friday night US). Got 3 upvotes. Thought it flopped.
Then Cloudflare analytics showed 500 unique visitors. 76,000 requests in one hour. The site didn't "go viral" — it just got real traffic for the first time.
And it collapsed.
The Cascade
Every page load made 8+ API calls to PostgreSQL
No Redis caching on most routes (I'd only added it to 3 endpoints)
Database connection pool (30 connections) exhausted within minutes
Queries that normally take 50ms started taking 22 seconds
New requests queued behind stuck ones
Frontend SSR timed out waiting for backend
Users saw white pages, half-loaded content, or nothing at all
One HN commenter said: "I hit the back button before the page finished loading."
The Fix (Live, Under Pressure)
While people were browsing:
Restarted backend to clear the exhausted connection pool
Added Redis cache middleware to every read endpoint (30-120s TTL)
Warmed the caches by hitting every major endpoint locally
Discovered Redis had disconnected and all caching was silently failing
Restarted Redis connection, flushed stale data
Added ISR (Incremental Static Regeneration) to entity and category pages — Next.js now serves pre-built HTML instead of rendering on every request
Upgraded from 2GB to 4GB instance (snapshot → new instance → IP swap, ~10 minutes of downtime)
After the fix: 150ms response times. Load average 0.28. The site could now handle 3,000 concurrent users.
Lessons
1. Cache everything for anonymous users. If a response doesn't change per-user, it should never hit the database twice. I knew this. I just hadn't done it on 80% of my routes.
2. You can't test for production traffic locally. My dev machine handles 50ms queries fine. Under 500 concurrent users, those same queries take 20 seconds because they're all fighting for the same connection pool.
3. Launch timing matters more than launch quality. 2am Saturday UK time = Friday 9pm US East Coast. Half the audience is offline. The same post Tuesday at 3pm UK would have gotten 10x the engagement.
4. "Ship it" is correct advice. I spent months polishing. I could have spent 6 more months polishing. Instead I shipped, learned my server couldn't handle 500 users, and fixed it in 2 hours. That's worth more than any amount of local testing.
5. The product feedback was more valuable than the traffic. One commenter pointed out that aggregate scores don't tell you what's best for you. We actually have per-attribute ratings and audience filtering ("best X for developers", "best X for small teams") — but if a user can't find it on first visit, it doesn't exist. The feature is built. The discoverability isn't. I wouldn't have known that without launching.
What's Next
The site works now. Fast, cached, on a bigger server. The real question is whether anyone comes back.
I'm watching for 7-day retention. If...