<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Peakd</title>
    <description>The latest articles on DEV Community by Peakd (@peakd).</description>
    <link>https://dev.to/peakd</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4025493%2F268986e6-abbc-439e-8c1c-08d14d8a57e6.png</url>
      <title>DEV Community: Peakd</title>
      <link>https://dev.to/peakd</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/peakd"/>
    <language>en</language>
    <item>
      <title>I Built a Community Ranking Platform Alone. Tonight It Nearly Crashed Under 500 Users.</title>
      <dc:creator>Peakd</dc:creator>
      <pubDate>Sat, 11 Jul 2026 19:12:49 +0000</pubDate>
      <link>https://dev.to/peakd/i-built-a-community-ranking-platform-alone-tonight-it-nearly-crashed-under-500-users-120e</link>
      <guid>https://dev.to/peakd/i-built-a-community-ranking-platform-alone-tonight-it-nearly-crashed-under-500-users-120e</guid>
      <description>&lt;h2&gt;
  
  
  I Built a Community Ranking Platform Alone. Tonight It Nearly Crashed Under 500 Users.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqv3mtauxe6gdan9f1c6t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqv3mtauxe6gdan9f1c6t.png" alt="Peakd.io" width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
I shipped &lt;a href="https://peakd.io" rel="noopener noreferrer"&gt;Peakd&lt;/a&gt; tonight. Posted it on Hacker News at 2am. Within an hour, 500 people showed up and my server fell over.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Peakd?
&lt;/h2&gt;

&lt;p&gt;A community-powered ranking platform for everything. Products, services, countries, universities, banks, streaming platforms — anything you'd Google "best X" for.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;15,000 entities. 1,700+ categories. One developer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I Built It
&lt;/h2&gt;

&lt;p&gt;Every "Best X in 2026" article online is SEO garbage. Written by someone who never touched the product, optimised for affiliate commissions.&lt;/p&gt;

&lt;p&gt;G2 charges companies $30k/year to look good. Trustpilot feels like a shakedown. Versus.com only does hardware specs.&lt;/p&gt;

&lt;p&gt;None of them answer the simple question: "What do real people actually think is best?"&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Next.js 16, TypeScript, Tailwind&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Node.js, Express, PostgreSQL&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cache:&lt;/strong&gt; Redis (this became important tonight)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hosting:&lt;/strong&gt; AWS Lightsail (2GB instance — this was the mistake)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CDN:&lt;/strong&gt; Cloudflare&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data pipeline:&lt;/strong&gt; Python workers pulling from Wikidata, Wikipedia, and official websites&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Images:&lt;/strong&gt; Lazy proxy with R2 CDN caching&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What Happened at Launch
&lt;/h2&gt;

&lt;p&gt;I posted on HN at 2am UK time (bad timing — Friday night US). Got 3 upvotes. Thought it flopped.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;And it collapsed.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Cascade
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Every page load made 8+ API calls to PostgreSQL&lt;/li&gt;
&lt;li&gt;No Redis caching on most routes (I'd only added it to 3 endpoints)&lt;/li&gt;
&lt;li&gt;Database connection pool (30 connections) exhausted within minutes&lt;/li&gt;
&lt;li&gt;Queries that normally take 50ms started taking 22 seconds&lt;/li&gt;
&lt;li&gt;New requests queued behind stuck ones&lt;/li&gt;
&lt;li&gt;Frontend SSR timed out waiting for backend&lt;/li&gt;
&lt;li&gt;Users saw white pages, half-loaded content, or nothing at all&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;One HN commenter said: &lt;em&gt;"I hit the back button before the page finished loading."&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The Fix (Live, Under Pressure)
&lt;/h3&gt;

&lt;p&gt;While people were browsing:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Restarted backend to clear the exhausted connection pool&lt;/li&gt;
&lt;li&gt;Added Redis cache middleware to every read endpoint (30-120s TTL)&lt;/li&gt;
&lt;li&gt;Warmed the caches by hitting every major endpoint locally&lt;/li&gt;
&lt;li&gt;Discovered Redis had disconnected and all caching was silently failing&lt;/li&gt;
&lt;li&gt;Restarted Redis connection, flushed stale data&lt;/li&gt;
&lt;li&gt;Added ISR (Incremental Static Regeneration) to entity and category pages — Next.js now serves pre-built HTML instead of rendering on every request&lt;/li&gt;
&lt;li&gt;Upgraded from 2GB to 4GB instance (snapshot → new instance → IP swap, ~10 minutes of downtime)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After the fix: 150ms response times. Load average 0.28. The site could now handle 3,000 concurrent users.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Cache everything for anonymous users.&lt;/strong&gt; 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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. You can't test for production traffic locally.&lt;/strong&gt; 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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Launch timing matters more than launch quality.&lt;/strong&gt; 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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. "Ship it" is correct advice.&lt;/strong&gt; 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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. The product feedback was more valuable than the traffic.&lt;/strong&gt; One commenter pointed out that aggregate scores don't tell you what's best &lt;em&gt;for you&lt;/em&gt;. 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.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;The site works now. Fast, cached, on a bigger server. The real question is whether anyone comes back.&lt;/p&gt;

&lt;p&gt;I'm watching for 7-day retention. If people return to vote on more things without me asking — there's something here. If they don't — I'll know what to fix.&lt;/p&gt;

&lt;p&gt;If you want to help shape the rankings: &lt;a href="https://peakd.io" rel="noopener noreferrer"&gt;peakd.io&lt;/a&gt;. Pick a category you know well, rate a few things. Every vote makes the rankings more accurate.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Solo dev. Building in public. First real users tonight. Let's see what happens.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
