The archive · Product Ideas · Technical decision · 2016
GoSnaps rides the Pokémon GO wave: 500k users in 5 days on one $100 server
A 24-hour Pokémon GO app built to scale from day one: pre-sorted data buckets and object storage carried 500k users in five days on a $100 server.
GoSnaps
What it had to solve
In July 2016 Pokémon GO's launch sent users flooding into app stores. GoChat, a rival fan app approaching one million users in five days, was crashing under 600 requests per second while a contractor estimated $4,000 for new servers — the MVP-dies-of-success failure Erik Duindam, a veteran of platforms serving hundreds of millions of users, had seen before. His answer was GoSnaps, a map-based app for sharing Pokémon GO screenshots, built in 24 hours.
How it works
In July 2016 Pokémon GO launched into an app-store gold rush, and GoChat — a chat app for players — reached nearly one million users within five days only to start failing: registering was impossible much of the morning, crashes were frequent, and a contractor estimated $4,000 for new servers. The Verge's headline described the app's own success as 'driving him bankrupt'. Erik Duindam, who had spent his career building web platforms for hundreds of millions of users, read that as a failure of design rather than scale.
His answer was GoSnaps, an Instagram-for-Pokémon-GO app where players shared screenshots on a map, written in 24 hours on a NodeJS hackathon boilerplate with MongoDB and no caching layer. The MVP status did not stop him from designing for success: the naively simple choices — storing images in the database, running one heavy query over every snap — were the ones he refused, because they work on small data and disintegrate under load.
Uploaded images were checked by custom image-recognition code, resized and sent to Google Cloud Storage, so the server and database never paid for file traffic. Snaps were mirrored into separate prepared collections — all, most liked, newest, newest valid — so a map request ran one indexed geospatial query with a single sort instead of a multi-condition scan over the whole pile. When four Node processes hit 90% CPU under 800–1000 concurrent users, enabling Mongoose's lean() mode to return plain objects cut the load to 5–10%.
The result was 60,000 users on day one, 160,000 on day two and 500,000 unique users within five days, with 150–200k uploaded snaps and roughly 1,000 concurrent users, all on one $100/month Google Cloud server plus cheap storage. The article drew 423 points and 168 comments on Hacker News, where the thread's answer to 'how did you market it?' was that no marketing was needed — Pokémon GO was already popular in most countries but not yet available in official stores, so people searching app stores found companion apps like GoSnaps instead.
Why it lands
- Pre-sorted buckets turned every read into one indexed geospatial query with a single sort, instead of the multi-condition scan over every snap that would have melted down under load.
- Offloading files to object storage moved the heaviest traffic — serving hundreds of thousands of images — off the $100 server and onto Google's infrastructure.
- The two or three extra hours of architecture were cheap insurance against the exact failure GoChat demonstrated: an MVP that succeeds and dies because it was built to fail.
- Lean tooling compounded the effect: switching on Mongoose's lean() mode dropped CPU from 90% to 5–10% once the ORM stopped hydrating full objects.
What it did
GoSnaps grew to 60,000 users on day one, 160,000 on day two and 500,000 unique users within five days, with 150–200k uploaded snaps and roughly 1,000 concurrent users — served from one $100/month Google Cloud server plus cheap object storage. The article drew 423 points and 168 comments on Hacker News on 21 July 2016, where the debate was about the architecture, not the numbers.
What you can take
Two or three hours of up-front design — files out of the database, queries aimed at pre-sorted buckets — is the difference between an MVP riding a user spike and one crushed by it.
Since then
GoSnaps' later history is not documented in the material — the account ends five days after launch with the app still riding the wave, and the author pointing readers to Unboxd and a restaurant app called Cuisine. What survived was the argument: a 24-hour fan app handled half a million users on one small server, and the Hacker News discussion that followed treated the architecture, not the hype, as the story.
Sources
- How I built an app with 500,000 users in 5 days on a $100 server
- How I built an app with 500,000 users in 5 days on a $100 server (Hacker News discussion)
- This man's Pokémon Go chat app is so successful that it's driving him bankrupt
spotted an error? The archive wants to know.
Your turn
You just read one. Describe the brief you are staring at, and see who has been given the same problem.
Free account · 3 free questions · no card