Well, “blew up” is probably an overstatement, but we will let you be the judge of that.
The beginning
A few months ago, we launched Couplescade on ProductHunt. It was… an epic fail. By the end of the launch day we had 3 total upvotes(Notably less than the number of emails we got from marketeers trying to sell us their products based on the campaign. Of course!), and 0 new downloads. There were tens of visits on the site but nothing beyond views on the home page.
Recovering from the failed launch
How do you market a product with zero income and a nonexistent audience? For us, the answer to this question was SEO(Search Engine Optimization). But it’s a slow process, and it takes weeks or months to see any results. Because of how slow it is, it’s very hard to know if you’re doing it right, especially if this is your first time even looking into this, which was our case. But this is what we did. Every page on the website got proper metadata; titles, descriptions, social preview cards, structured data. We set up a blog, with the not-so-secret goal of generating backlinks. Really, anything we could do to direct people to Couplescade.
The result?
Our pages got indexed by Google, and for a few months we had the occasional 1-3 clicks a day. Nothing exciting, but that didn’t stop us from looking at the analytics every day.
The unexpected happens!
First, I have to say that even with very little engagement on Couplescade, I was still obsessed with the analytics. Every day, I looked at GA(Google Analytics) to see how many users had been active, then at the database to see how many rooms had been created, then at the search console to see how many clicks we had. For the longest time, the results were always the same.
Then one day, it happened! Just like that! Real active users. That day I must have checked GA maybe once every 15 minutes, and every time, there were active users, interestingly, spread across the entire globe.

Even though the user base is spread across the globe, concentration in different regions varies depending on the time of day.


What happened?
Nothing. We scoured the internet for any viral posts, or anything that could have caused the spike, but nothing came up. At first, we thought it was just one of those days with an anomaly, but it’s been almost a week now with the same steady activity. We went from 0-20 daily active users, to 100-200+. So, maybe not necessarily blew up, but it’s steady growth.
One thing we were worried about was that these might just be bots. However, a few things that put our minds at ease were that based on the data, the users were creating rooms, joining them and completing games. In addition, approximately half the users joined via /join which means that they received a link to join a room that had already been created, which is one way Couplescade makes playing games together seamless. One player creates a room and shares it, once you receive the link, you just click it and you’re in.
The good problem
Since Couplescade doesn’t have any income, a big factor we consider when choosing our services is a platform with a generous free plan. One of those platforms is Supabase, which provides unlimited API requests, 50,000 monthly active users, 500 MB of database space, and 1 GB of file storage on the free plan. There’s more to it, of course, as we soon found out.
At the end of the second day of the spike, as I was looking at the database, I saw a read warning: “Exceeding Usage Limits.” The culprit? Realtime messages. All this time, I had been focused on storage, but no, I was looking at the wrong service.
Supabase free plan offers 2,000,000 realtime messages per month. On the second day of the spike alone, we used 1.1 million messages! The first instinct was to upgrade to pro. However, after looking into it, we discovered that the paid plan at $25 per month offers 5 million real time messages. At that rate, we would blow through that in a week.

Migration of real time messages, bug fixes and optimization
We considered several different alternatives for Supabase, but in the end, PartyKit/Cloudflare was the winner. The best possible approach for us at this point was to migrate the real time messages and keep the database on Supabase(We like Supabase). However, even though the free plan on Cloudflare is cheaper and more generous, we were likely to blow through that too at the current growth rate.
One thing we have agreed on is to not spend money unless we are making money. So, we were more focused on figuring out which game was creating so many realtime messages and if there was an opportunity to optimize. And yes, we found the culprit. Sketchduel!
How Sketchduel blew through the realtime messages quota
What it was doing before: every single pixel/point of a pen stroke, as the player drags their finger or mouse, was being broadcast to the other player individually and immediately. This is potentially dozens of tiny messages per second while someone’s mid-stroke.
The optimization: the code now batches points into small chunks and only sends a chunk when both of these are true: at least 2 new points have accumulated, and at least 50ms have passed since the last broadcast. We reduced the number of messages by around 70%. We are currently utilizing approximately 200k realtime messages per day on Cloudflare which is well within the free plan quota.

We also used this opportunity to find and fix bugs, specifically around how player presence was being tracked. In one edge case, if a player disconnected at just the wrong moment, the sync could crash for the other player in the room instead of simply skipping that one player.
Supabase’s offer(a little too late though)
Like I said, we like Supabase. And this only made us like it a little more, even though, perhaps, a little too late. After we completed the migration, we got the following email from Supabase, offering us free continued usage on the platform at the current numbers. If only it had come a few days before! But it’s good to know that they weren’t just going to shut us down(for future reference).

What next?
Does it feel validating going from a completely flat ProductHunt launch to watching users connect across the globe? Absolutely. Especially since we still haven’t spent a single dime on marketing. But this is just the beginning(of something great?). For now, the plan is to try to keep the momentum going and to continue to grow and maintain our user base.
We already have new games in the pipeline to add to the Couplescade roster, and planned improvements and polish to the existing ones.
On the backend, we will also dive deeper into optimizing our Supabase architecture and database queries. With Cloudflare, we will be looking into tightening up message-handling logic further, keeping an eye on compute duration and realtime traffic volume as usage grows, and possibly applying similar throttling logic we did with Sketchduel to other games where it makes sense.
There’s a lot to be done on the marketing and social media side as well, and we are aiming to use this opportunity to start growing an online presence and community. So please take a moment to follow us on Instagram @couplescade.
And more importantly, if you haven’t checked out Couplescade, now would be a great time to do so. With 12 games to pick from across 4 different genres, there’s definitely something for you and your favorite person(or someone you just met!)