All work

Case 04Full-stack media and publishing platform

Helping editors manage changing sports content

  • Sports media
Role
Frontend, server routes, data work, editorial tooling
Built
I built the full-stack publishing system.
Stack
  • Nuxt
  • TypeScript
  • Supabase
  • Server routes
  • Vitest
  • SEO metadata

Situation

An editorial team needed to publish fixtures and media around a tournament. Team profiles and visual assets needed frequent updates as knockout matchups changed.

The public site had to show accurate upcoming matches while protecting unpublished scores. Repeating team data across pages also made updates harder to manage.

What I built

I built a full-stack publishing system with a central team catalogue, reusable crest assets, administrative controls, and server routes for approved fixture data.

Upcoming knockout matches begin with structural placeholders. Once editors confirm the teams, a database-backed overlay updates the public matchup without exposing hidden results.

Scripts support bulk fixture updates. Server-rendered pages and structured metadata help search engines understand the content.

What changed

  • Editors manage team identity and visual assets in one place.
  • A crest can be reused across many fixtures.
  • Upcoming matchups update without revealing unpublished scores.
  • Bulk scripts reduce repeated fixture edits.
  • Public pages keep a server-rendered baseline for search and sharing.

Engineering notes

The public API exposes team identity for approved matchups and leaves score data out of the response. Editorial control stays separate from what readers see.

Try the model

A knockout bracket where some matchups are confirmed and the rest are still placeholders. Editors confirm the teams, and scores stay out of what readers see.

A simplified working model of the real system. No client data.

ConfirmedConfirmedPlaceholderPlaceholderPlaceholderPlaceholderFinalScores stay hidden