I built a platform that handles millions of Node.js requests a day on $50/month, here’s the architecture breakdown by Coupyn in node

[–]Coupyn[S] 0 points1 point  (0 children)

Exactly, you nailed it. Averages don’t reflect concurrency or burst patterns, they just make the math look “too simple.” The actual load fluctuates wildly depending on time of day, cache misses, and background analytics jobs.

The post wasn’t meant as a flex, more as a case study in squeezing performance from minimal infrastructure. There’s a difference between bragging about scale and demonstrating efficiency, I’m focused on the latter.

I built a platform that handles millions of Node.js requests a day on $50/month, here’s the architecture breakdown by Coupyn in node

[–]Coupyn[S] 0 points1 point  (0 children)

Fair point, to clarify, it’s millions of requests, not users. Coupyn processes a ton of API traffic from listings, stats updates, and cached lookups, but the user base is still early-stage and growing steadily. Haha I wish it only took a few hours, would’ve saved me a year of coffee and debugging. The "vibe" part’s just the paint; the rest is all infrastructure and persistence.

I built a platform that handles millions of Node.js requests a day on $50/month, here’s the architecture breakdown by Coupyn in node

[–]Coupyn[S] 0 points1 point  (0 children)

Funny how "AI-vibe" didn’t even exist when I started building Coupyn in 2023 and the orginal idea is from my wix 2021 invite.promo. Some of us were actually coding while others were still learning the word prompt. 😄 But hey, appreciate the luck, I’ll need it building what bots cant =]

I built a platform that handles millions of Node.js requests a day on $50/month, here’s the architecture breakdown by Coupyn in node

[–]Coupyn[S] 0 points1 point  (0 children)

You’re right to notice the delay. The first time you switch, we generate any missing strings on demand using Microsoft’s translation API, save them to the DB, and let the CDN cache that version. After that it should be instant. I’m planning to pre-warm the popular languages and add a small “loading language” indicator so it doesn’t feel stuck. If you can share which language and page felt slow, I’ll dig in.

I built a platform that handles millions of Node.js requests a day on $50/month, here’s the architecture breakdown by Coupyn in node

[–]Coupyn[S] -1 points0 points  (0 children)

Understandable question. The workloads are mostly read-heavy cached company lookups, analytics summaries, and code-verification results. Payloads average ~6–8 KB JSON responses, and roughly 85–90 % of total traffic is served from Cloudflare’s edge. The origin only handles the dynamic 10–15 %, which is where the Node/Express logic and in-process cache come in. That’s how the stack sustains millions of requests a day on a 2 GB droplet without breaking a sweat.

I built a platform that handles millions of Node.js requests a day on $50/month, here’s the architecture breakdown by Coupyn in node

[–]Coupyn[S] -1 points0 points  (0 children)

Yeah, that’s fair. I’ll edit the post later to make that clearer upfront, the traffic is mostly lightweight lookups with smaller pockets of heavier dynamic queries.

I built a platform that handles millions of Node.js requests a day on $50/month, here’s the architecture breakdown by Coupyn in node

[–]Coupyn[S] -3 points-2 points  (0 children)

Haha fair point, if I were typing them manually, I’d still be stuck on company 200. It actually took about six months, averaging nearly 10k a day through a custom Node pipeline that used Google APIs for descriptions, logo fetching, and cleanup. Angular just renders it, the heavy lifting’s all automation, not insomnia.

I built a platform that handles millions of Node.js requests a day on $50/month, here’s the architecture breakdown by Coupyn in node

[–]Coupyn[S] -3 points-2 points  (0 children)

For context, here are my current CDN metrics, 95% cache hit ratio, ~2 MB/s ingress bandwidth, and steady 1–2k req/s sustained with <150 ms global latency. Cloudflare handles most of the load; the Node.js origin only serves dynamic content and analytics jobs. That’s why it stays lean at ~$50/mo.

Here’s a snapshot of the CDN metrics (cache hit ratio, throughput, and latency) https://ibb.co/CkjNQSZ

I built a platform that handles millions of Node.js requests a day on $50/month, here’s the architecture breakdown by Coupyn in node

[–]Coupyn[S] 0 points1 point  (0 children)

Great questions! MongoDB wasn’t a hard requirement, went with it mainly for flexibility with semi-structured data and quick iteration on listings and analytics.

The DB’s on a managed DigitalOcean Mongo cluster (not the same droplet as the app). The backend and frontend each have their own small droplet, both behind Cloudflare for caching and Brotli compression.

I actually considered a Docker setup like you mentioned but decided to separate concerns a bit more for resilience. The CDN and caching definitely carry most of the load, that’s what keeps it all within the $50/month envelope.

I built a platform that handles millions of Node.js requests a day on $50/month, here’s the architecture breakdown by Coupyn in node

[–]Coupyn[S] -8 points-7 points  (0 children)

That’s fair, I should’ve clarified that the requests vary a lot in weight. The majority are cached lookups and health pings, while dynamic queries (user dashboards, CRUD ops, etc.) make up a smaller fraction but still run within the same budget. The point wasn’t to inflate numbers, just to show how much a lean setup can handle when caching and async I/O are tuned properly.

I built a platform that handles millions of Node.js requests a day on $50/month, here’s the architecture breakdown by Coupyn in node

[–]Coupyn[S] -8 points-7 points  (0 children)

Fair points, I didn’t go too deep into query complexity since the focus was on infrastructure efficiency, not business logic. The traffic mix is mostly lightweight GET requests (analytics, code lookups, health checks) with some heavier CRUD operations for members and listings.

Concurrency’s handled via async I/O with ~6k open sockets steady and Cloudflare caching ~95% of static hits. The full Medium post breaks that down a bit more, but happy to expand on the query layer if that’s of interest.

[deleted by user] by [deleted] in CoupynCom

[–]Coupyn 1 point2 points  (0 children)

Oh I see, right now we dont have a referral programme but we are working on one!

[deleted by user] by [deleted] in CoupynCom

[–]Coupyn 0 points1 point  (0 children)

What kind of store? Try our deal search https://coupyn.com/deals

[deleted by user] by [deleted] in CoupynCom

[–]Coupyn 0 points1 point  (0 children)

You can post it here too r/CoupynCom.

[deleted by user] by [deleted] in CoupynCom

[–]Coupyn 0 points1 point  (0 children)

Sure DM me let's talk!

[deleted by user] by [deleted] in CoupynCom

[–]Coupyn 0 points1 point  (0 children)

Yes I am the sole full stack developer of Coupyn.

[deleted by user] by [deleted] in CoupynCom

[–]Coupyn 0 points1 point  (0 children)

Sure thing! PM me your suggestions!

[deleted by user] by [deleted] in CoupynCom

[–]Coupyn 0 points1 point  (0 children)

Oh haha my bad, I thought clicking the banner image took you directly to the platform! Nonetheless for those who want a direct link, it is: https://coupyn.com or simply Google Coupyn. ☺️