Skip to content

feat(games): add games page with wow and overwatch cards - #235

Merged
kashalls merged 4 commits into
mainfrom
feat/game-cards
Oct 5, 2026
Merged

kashalls merged 4 commits into
mainfrom
feat/game-cards

Conversation

@kashalls

@kashalls kashalls commented Oct 4, 2026 •

Copy link
Copy Markdown
Owner

Summary

Adds a /games page (linked from the header menu) with Battle.net launcher-style cards for World of Warcraft characters and Overwatch career profiles, fed live by the apis service (https://api.ok8.sh/wow/characters, https://api.ok8.sh/overwatch/players).

Layout

  • Character identity and stats on the left, the official game logo on the art in the top-right: Midnight emblem for retail, WoW Classic logo for classic flavors (with a version badge, e.g. "TBC Anniversary", since that logo doesn't name the version), Overwatch wordmark. On mobile the logo sits on top.
  • Backgrounds: Overwatch namecard; for WoW, the Armory's per-class backdrop (profile-backgrounds/v2/armory_bg_class_<class>.jpg), since Blizzard no longer generates the composited main render.
  • View More drawer animates with UCollapsible; the background art is scoped to the top section so opening it doesn't rescale or re-crop the art.

Data shown

  • WoW: class-coloured name, spec icon badge on the avatar, level / race / spec / class, guild and realm; item level, Mythic+ rating in Blizzard's rating colour, achievements; drawer has faction, realm, guild, last seen.
  • Overwatch: avatar, title, Blizzard's endorsement level badge (pops in, UTooltip on hover), season, rank emblem + tier badge per role; win rate / KDA / time played; drawer lists the three most played heroes.

Implementation notes

  • Nuxt UI components where they fit: UAvatar, UChip, UButton, UBadge, UTooltip, UCollapsible, USkeleton, UEmpty.
  • Fonts: Inter for card text and tabular stats, Cinzel for WoW names, Teko for Overwatch, via @nuxt/fonts.
  • Logos and backgrounds are hotlinked from Blizzard's CDNs, same as the character renders. They aren't a documented API, so URLs may need updating; the retail logo is the current expansion's and needs bumping at the next expansion.
  • Data is fetched client-side inside <ClientOnly>, so the prerendered page shows skeletons instead of baking in build-time stats, and hydration stays clean.
  • Icon fields (spec_icon, endorsement_frame, tier_icon) come from apis 0.0.4 (feat(games): add spec, endorsement and rank tier icons聽apis#24, feat(apis): bump image to 0.0.4聽waifulabs/infrastructure#5783); every icon falls back to text when absent.

Testing

  • bun run build passes; /games and its OG image prerender.
  • Rendered against the live API at desktop and mobile widths, plus interception tests for the 0.0.4 icon fields, a TBC Anniversary character, the loading state and the empty state. No console errors or hydration warnings.
  • Drawer open/close measured in the browser: height animates over ~200ms and the card art stays the same size.

Add a /games page listing World of Warcraft characters and Overwatch
career profiles from the apis service (api.ok8.sh/wow/characters and
api.ok8.sh/overwatch/players), linked from the header menu.

Each card is a wide banner over the character render or namecard with
identity on the left, headline stats on the right and a View More
drawer. WoW cards use class colours and show item level, Mythic+ rating
and achievements; Overwatch cards show competitive ranks, win rate, KDA,
time played and most played heroes.

Cards use Inter for stats and per-game display faces (Cinzel for WoW,
Teko for Overwatch). Data is fetched client-side so the prerendered page
doesn't bake in build-time stats.

Signed-off-by: Jordan Jones <git@svcs.ok8.sh>
When Blizzard has no "main" scene render for a character, show the
transparent full-body main_raw render standing between the identity and
stats instead of leaving the card without art. Drop the inset fallback,
which is too low-resolution to use as a background.

Signed-off-by: Jordan Jones <git@svcs.ok8.sh>
- Scope the background art and character figure to the card's top
  section, so opening View More no longer stretches or re-crops them.
- WoW: show the spec icon as a badge on the avatar.
- Overwatch: replace the endorsement text with Blizzard's level badge,
  and show the rank tier badge next to the rank emblem instead of the
  division text. Both fall back to text when the icon is missing.

Signed-off-by: Jordan Jones <git@svcs.ok8.sh>
- Lay cards out like the Battle.net launcher: character identity and
  stats on the left, the official game logo (Midnight, WoW Classic,
  Overwatch) top-right on the art. Drop the standing character render
  and the Retail badge; keep the badge for non-retail flavors since the
  Classic logo doesn't name the version.
- WoW cards use the Armory's per-class background behind the card.
- Animate View More with UCollapsible, and pop in the endorsement badge
  with a UTooltip.
- Use Nuxt UI where it fits: UAvatar, UChip for the spec icon, UButton,
  UBadge for rank pills, USkeleton while loading and UEmpty when the APIs
  return nothing.

Signed-off-by: Jordan Jones <git@svcs.ok8.sh>
@kashalls
kashalls merged commit 77be1b6 into main Oct 5, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant