Back to Lab
RAXXO Studios 2 min read No time? Make it a 1 min read

Building a Global Leaderboard with Neon Postgres and Zero Infrastructure Cost

database
2 min read
TLDR
×

Serverless databases changed how small projects ship. No connection pooling headaches. No idle server costs. Just a URL and a query.

Neon Postgres for Side Projects

Neon gives you a full Postgres database with a generous free tier. The serverless driver works in edge functions, Vercel Functions, and any serverless environment without the TCP connection overhead traditional Postgres clients need.

Setup in 60 Seconds

One npm install. One environment variable. One function call. Import neon from the serverless package, pass your POSTGRES_URL, and run tagged template queries. No pool configuration. No connection limits. No pgBouncer.

Schema Design for Leaderboards

A global leaderboard needs two things: an attempts table and a stats table.

The attempts table stores every submission with deviation, timestamp, region, and user agent. The stats table holds aggregate counters (total attempts, best ever, success count) updated atomically on each submission.

Ranking is a single query: count how many attempts have a lower deviation than yours. Your rank is that count plus one.

Rate Limiting Without Redis

For a side project, in-memory rate limiting works. A Map of IP addresses to last-submission timestamps. Check the gap before accepting. Clean up entries older than 10 seconds when the map grows past 10,000 entries.

Not production-grade for high traffic. Perfect for a game that gets a few hundred players a day.

Percentile Calculation

With the total attempt count and your rank, percentile is straightforward. Display it as "Top X%" on the result card. Makes every player feel competitive even when they lost.

Cost

Free tier covers it entirely. Neon's free plan includes 0.5 GB storage, 190 compute hours per month, and unlimited reads. A leaderboard game with a few thousand daily submissions stays well within limits.

Total infrastructure cost for a global multiplayer game: zero.

Stay in the loop
New tools, drops, and AI experiments. No spam. Unsubscribe anytime.
Back to all articles