PlayStation Advent Calendar 2025
A localized, date-gated campaign app with five integrated games, reaching an estimated 1M users across four markets.
- Client
- PlayStation — delivered via agency partnership
- Role
- Frontend owner
- Timeline
- 3-month build
- Year
- 2025

- 1M+
- Estimated users reached
- 4
- Markets, 3 languages
- 5
- Games integrated
01
The challenge
An advent calendar sounds simple until every door has to work on the right day, in the right market, for the right user.
This campaign combined date-based content, four markets, three languages, five interactive games, authentication, real-time multiplayer, analytics, consent management and enterprise accessibility requirements — all under a fixed three-month delivery window.
The unusual constraint was that the deadline wasn't launch day. It was every day after launch. If December 5th's experience failed, fixing it on December 6th couldn't recover that day.
02
My role
I owned frontend delivery across the campaign.
I was responsible for the application architecture and shell, date-gating, authentication, localization, the integration layer for five games, engagement features, push notifications, and consent/analytics implementation.
I worked alongside the agency's design and backend teams and against Sony's accessibility review process.
03
The engineering
Date-gated content
The backend controlled campaign dates and availability; the frontend consumed that state and handled the corresponding calendar and door experiences.
To make the 24-day campaign testable before launch, I added route-level date overrides that let us request a specific campaign date from the backend without waiting for the real calendar date.
One app shell, five games
Five Phaser games lived inside the React application as separate game features. I integrated the game developers' exposed functions with the application's APIs, handled asynchronous responses and reward outcomes, and managed the Phaser lifecycle from mount through completion and teardown.
When a player completed a game and received their tickets, the game was cleanly unmounted before returning them to the campaign experience.
Real-time multiplayer and game integrity
I integrated Socket.IO on the frontend using the backend's connection configuration, listened for real-time game events, and mapped socket responses into the active game experience — including player identity, profile information and session state.
I also handled client-side integrity checks, such as detecting when a player left the active game tab and warning them instead of allowing the session to continue silently. These checks were particularly important for the quiz experience, where maintaining the integrity of an active attempt mattered.
Market-aware localization
Localization was modelled around market first, language second. Prize mechanics, eligibility and legal copy varied by territory, while Canada supported two languages under the same market rules.
Authentication, consent & accessibility
Authentication was a core part of the campaign flow: visitors could access the landing page publicly, but signing in was required to enter the main experience. I integrated the PSN and social authentication flows into the frontend and connected the authenticated user state to the campaign experience.
OneTrust handled consent before Adobe Analytics was enabled, while accessibility was treated as a release requirement throughout the build. I implemented the frontend accessibility requirements across the application, including the interactive game experiences.
04
What I shipped
- Localized campaign experience across 4 markets and 3 languages, with market-specific content and daily door availability.
- PSN and social authentication integrated into the campaign entry flow, with login required to access the main experience.
- Five Phaser games integrated into the React application, connecting game functions to backend APIs and handling game outcomes, rewards and lifecycle.
- Real-time multiplayer integration using Socket.IO, including socket connections, event handling, player/session information and client-side session integrity checks.
- Daily engagement and reward flows, including door states, gameplay outcomes, tickets and related campaign interactions.
- Push notifications using Firebase Cloud Messaging.
- Consent and analytics integration with OneTrust and Adobe Analytics.
- Accessibility implementation across the campaign experience to meet Sony's internal accessibility requirements.
05
Results
- Reached an estimated 1 million users across Canada (EN/FR), Germany, France and the Netherlands.
- Delivered on a fixed three-month window against an immovable campaign start date.
- Passed Sony's internal accessibility review as a release gate.
06
Stack
- Core
- React
- TypeScript
- Vite
- Tailwind CSS
- Games & realtime
- Phaser
- Socket.IO
- WebSockets
- Platform
- PSN auth
- Firebase Cloud Messaging
- Compliance & analytics
- OneTrust
- Adobe Analytics
- WCAG 2.1
Next breakdown
Document Editor & Pagination Engine
Diagnosed a pagination bug causing incorrect page splits and freezing on long documents, fixed the underlying rebuild-timing problem, then forked, documented and published my own maintained version of the package.