
It started on a random Saturday afternoon with a simple question from my 14-year-old son: "Dad, how much is my Brawl Stars account actually worth?"
We searched online. Nothing but shady websites asking for passwords or outdated forums. So, as a Dev with 20 years of experience, I said: "Let's build it ourselves."
48 hours later, BrawlValue.com was born.
What started as a simple API calculator accidentally turned into a massive, hyper-local gamified platform. The Gen-Z kids didn't just want to know their account value; they wanted to flex it. We introduced School and City Leaderboards.
The result? The "Dark Social" (WhatsApp school groups) exploded. In just a few days, we mapped over 1,500 schools, acquired 5,000+ verified users via Discord OAuth2, and handled massive traffic spikes driven by top gaming influencers.
Here is how I architected the system to survive the hype without paying thousands of dollars to Jeff Bezos.
1. The Nginx "Russian Roulette" Hack (Bypassing Rate Limits)
The official game API has strict rate limits per IP. When a famous YouTuber dropped a video about our site, we expected thousands of concurrent requests to fetch the same Player Tags. A standard setup would have resulted in 429 Too Many Requests and a crashed site.
The Solution: I generated 3 different API keys for my single AWS EC2 IP. Then, I used the native Nginx split_clients module to balance the load evenly across the keys based on the $request_id.
split_clients "${request_id}" $brawl_token {
33.3% "TOKEN_1";
33.3% "TOKEN_2";
* "TOKEN_3";
}
Combined with proxy_cache_lock on; (to prevent the Thundering Herd problem), this single Nginx trick absorbed the entire traffic spike. Zero Node.js overhead.
2. Offloading Compute to PostgreSQL (Supabase)
I initially ran a c6i.xlarge EC2 instance, but calculating dynamic ranks for 5,000 users across 1,500 schools in Node.js was a memory-leak nightmare waiting to happen.
I shifted the entire load to Supabase (PostgreSQL). Instead of sorting arrays in JS, I wrote a materialized View using Window Functions:
RANK() OVER (PARTITION BY season_id, school_id ORDER BY flex_score DESC) as school_rank
Node.js simply fetches a pre-calculated JSON. CPU usage on my AWS instance dropped to 0.08%. I literally downgraded the server to a t3.small during the peak and saved my wallet.
3. AI-Powered Zero-Click Moderation (Qwen3-VL)
To enter the Leaderboard, users must prove they own the account. Manual verification for 5,000 kids? Impossible.
I built a custom Discord Bot using discord.js. Users simply drop a screenshot of their game profile in a specific channel. The bot instantly opens a private thread, sends the image to Alibaba Cloud's Qwen3-VL (an ultra-fast Multimodal LLM), extracts the Player Tag via OCR, verifies it against the DB, and auto-assigns the "Verified" role. 100% automated KYC for teenagers.
4. The "Ego-Trap" Monetization (Webhook Magic)
How to monetize kids who don't have credit cards? You sell social status.
We created a "VIP Brawler" role. Users pay €3 via Ko-Fi.
Ko-Fi triggers a Webhook ➔ My Node.js server parses the payload ➔ Updates Supabase (is_vip: true) ➔ The Next.js frontend instantly turns their generated "Share Card" into a glowing Gold/Neon design.
Zero manual work. Pure passive income driven by gaming vanity.
🚀 Today, we are launching on Product Hunt!
We transitioned from a weekend toy to an enterprise-grade Data-Scouting architecture. We are now officially launching Season 1 and trying to make some noise on Product Hunt.
If you love bootstrapped projects, dirty but highly effective Nginx hacks, and indie-hacking survival stories, I would love your honest feedback and support on our launch page today! 👇
🔗 https://www.producthunt.com/products/brawl-value
Let me know in the comments if you have any questions about the stack, Supabase RLS, or how to handle Gen-Z traffic spikes!

Top comments (0)