Football · 3D Interface · Front-End

FIFA CALENDAR WORLD CUP 2026

Hero — the World Cup 2026 calendar app on a laptop set on stone, showing the France–Morocco QF hologram card and the 'times shown in Vancouver · UTC-7' label, with the FIFA World Cup 26 Vancouver lockup
ConceptUI & Motion DesignFront-End Build
Personal Project (solo) · grew from the team hackathon 'Vancouver FIFA Map' — with Jess, 3rd place
3D World Cup calendarTap-a-date match cardsLocal-time schedulingLive scores

FIFA Calendar is a 3D World Cup calendar that automatically converts every 2026 match into the viewer's local time. Originally created as Vancouver FIFA Map, a 3rd-place hackathon project with Jess, it later evolved into a solo redesign inspired by the real challenges I experienced while following the tournament from a different time zone.

Why I made this

The Problem

Watching the World Cup from a different time zone introduced a surprisingly simple problem: every match required a mental time conversion. Because kickoff times often crossed midnight, even the match date changed, making it easy to miss games or confuse schedules when talking with friends abroad.

Beyond time zone conversion, I wanted a clearer overview of the tournament itself—a single view where every match, date, and stadium could be understood at a glance, without endless scrolling.

Since the World Cup is a global event, localization became a core part of the experience. Every fixture is automatically converted to the viewer's local time, so the schedule is instantly understandable without changing settings or doing time-zone math.

One 3D calendar

The Solution

The calendar presents the entire tournament in a single, easy-to-scan view with a subtle 3D perspective. Instead of navigating through individual match pages, users can see every fixture at a glance, with kickoff times automatically converted to their local time.

The full 3D World Cup calendar with the fixtures list on the right

The experience is built around a familiar monthly calendar, enhanced with subtle 3D interactions. Selecting a match day elevates the calendar tile to reveal fixture details, while a dedicated sidebar provides live matches, upcoming games, and quick access to followed teams.

Tap a date — the match card lifts up
Tap a date — the match card lifts up
Fixtures list on the side
Fixtures list on the side

Light and dark themes, national flags, and a layout that folds down neatly on a phone.

How it works

Behind the Scenes

At the heart of the experience is automatic time localization. Every fixture is stored as a single universal kickoff time and converted to the viewer's local time when the page loads, meaning the same match can appear on different dates around the world.

Because fixture schedules are known in advance, the application requests live score updates only during active matches. By avoiding unnecessary polling outside kickoff windows, it reduces API usage and server load while maintaining a fast, real-time experience.

The full tournament schedule is stored locally, allowing the calendar to work offline. Live scores are loaded separately when available, ensuring the core experience remains reliable even without a network connection.

Detailed 3D stadium models are loaded when available, while simplified placeholders provide a seamless fallback. This approach balances visual quality with performance, keeping the experience fast across different devices and network conditions.

React 19 · TypeScript · Vite 6 · react-three-fiber / drei / three.js · Framer Motion · Luxon · SCSS · Vercel serverless

Next Project

Convergence Co-op