The Problem: Bloated Sports Sites
I wanted to check the medal standings for the Milano Cortina 2026 Winter Olympics, but I found most official and mainstream news sites to be:
- Heavy: Dozens of trackers and heavy JS bundles.
- Distracting: Intrusive ads covering half the screen on mobile.
- Slow: Taking 5+ seconds to load just a simple table of numbers.
As a developer, I knew I could do better. So I built milano2026.live.
The Tech Stack
I chose a stack that prioritizes speed and developer experience:
- Framework: Next.js 15 (App Router)
- Styling: Tailwind CSS (for that "news-board" aesthetic)
- Deployment: Vercel
- Data Strategy: A mix of ISR (Incremental Static Regeneration) and client-side fetching to ensure the data stays fresh without killing the server.
Challenges Faced
1. The "Wall of Text" UX Issue
Early feedback from Reddit users (shoutout to r/nextjs!) pointed out that my initial schedule layout was just a long string of text. It was unreadable.
I quickly refactored the UI into a structured Timeline Component. Lessons learned: Never underestimate the power of whitespace and proper typography in data-heavy apps.
2. Mobile-First is Non-Negotiable
During live events, 80% of users check scores on their phones while doing something else. I had to ensure the medal table was responsive—using overflow-x-auto for small screens while keeping the "Country" column sticky.
What's Next?
The games are currently in full swing! (Today is Feb 13, 2026). I'm planning to add:
- [ ] Real-time notifications for specific countries.
- [ ] A "Dark Mode" toggle for late-night viewing.
- [ ] More granular event results (down to the athlete level).
Check it out
If you want a clean way to follow the Winter Olympics, take a look:
👉 milano2026.live
I'd love to hear your feedback on the performance or the UI. How are you tracking the games this year? 🥇⛷️
Follow me for more "build-in-public" projects!
Top comments (0)