Rebuilding a global photography competition platform for 25 million users.
Next.js · React · NestJS · TypeScript · DynamoDB · AWS Lambda · CloudFront · Redis · S3
Executive Summary
Playground is a global photography competition platform where organizations host contests — from submissions and voting to judging and awards — at a scale where every architectural decision has measurable impact on millions of concurrent sessions. The engagement required a complete platform rebuild: migrating from a legacy monolith to a modern, serverless-first architecture capable of absorbing massive traffic spikes during contest launches while maintaining sub-second response times.
The Challenge
The existing platform had reached its architectural ceiling. As the user base grew beyond 20 million, the team encountered cascading performance issues: slow page loads during peak contest periods, image processing bottlenecks, and a monolithic codebase that made feature development increasingly risky and slow.
Contest launches generate extreme, concentrated load — thousands of photographers uploading high-resolution images while millions browse and vote simultaneously. The architecture had to scale horizontally on demand and degrade gracefully under pressure, with zero tolerance for downtime during peak windows.
The platform also required multi-tenant isolation at scale, an optimized image processing pipeline handling millions of photographs, layered voting integrity measures, and a mixed rendering strategy delivering both performance and SEO across billions of pageviews.
Our Approach
We designed a serverless-first architecture on AWS, replacing the monolith with a modular backend deployed via infrastructure-as-code. The frontend was rebuilt with a mixed rendering strategy — SSR, ISR, and SSG — optimized per route type for the ideal balance of freshness and performance.
The most distinctive decision was a multi-layered caching strategy, with each layer optimized for a different access pattern — from edge CDN for static assets, through rendering and database acceleration layers, down to application-level and in-memory caches. This architecture absorbs the vast majority of traffic before it reaches application code.
The image pipeline processes uploads through server-side transformation — resizing, format optimization, and metadata extraction — before delivering optimized variants via CDN. Real-time features use multiple communication channels to ensure participants see voting results and contest updates instantly regardless of their network environment.
The Results
A platform serving 25 million active users, rebuilt from scratch and maintained by a 3-engineer team — enabled by aggressive automation, serverless infrastructure, and a caching architecture that absorbs the majority of traffic before it reaches application code.
Sub-second response times during peak traffic. Zero downtime during contest launches. A modular codebase where features can be developed and deployed independently, dramatically reducing the risk and cycle time of every release.
Under the hood
Serverless-first on AWS with infrastructure-as-code deployment and horizontal auto-scaling.
Multi-layered caching strategy spanning edge CDN, rendering cache, database acceleration, application cache, and in-memory layers.
Mixed rendering strategy (SSR, ISR, SSG) optimized per route type for performance and crawlability.
Optimized image pipeline: server-side transformation with Sharp, S3 storage, CDN delivery with responsive variants.
Real-time communication via WebSockets, Server-Sent Events, and polling-based fallbacks.
Multi-tenant isolation and voting integrity through partition-level access control and layered fairness measures across millions of votes.
Let's build your next system.
Whether you need a platform rebuilt for scale, a complex integration unified, or a precision tool for a specialized domain — we're ready.
Start a conversation