Files
2026-03-22 05:17:01 +00:00

2.5 KiB

Midnight S1 Tank Guide

WoW Midnight Season 1 M+ tanking quick-reference webapp. Built to be read at a glance on a second monitor during gameplay.

Stack

React 19 + Vite + TypeScript + Tailwind v4 + shadcn/ui. No router — hash-based dungeon switching.

Commands

  • make dev — start dev server on port 8000
  • make build — production build
  • source ~/.zshrc before any node/npm/npx command (lazy nvm)

Design Rules

  • Dark only. Deep abyss navy (#050810). No light mode, no toggle.
  • Frosted glass cards. Use .frost class (backdrop-blur + semi-transparent bg). Never plain bg.
  • Square edges. All radii are 0. No rounded corners anywhere.
  • Colours that pop. Cyan (#22d3ee), sky blue (#38bdf8), purple (#a78bfa), amber (#fbbf24), red (#f87171), green (#34d399).
  • Readable at a glance. Body text text-base minimum. Headers bump up. Bullet spacing mb-2.5.
  • Centre-aligned content. Main container max-w-7xl mx-auto. 2-col grid on lg:.
  • Font: Geist Variable.

Role Colours

  • Tank: #38bdf8 (sky blue) — text-tank, border-l-tank
  • Healer: #34d399 (green) — text-healer
  • DPS: #f87171 (red) — text-dps
  • Everyone: #fbbf24 (amber) — text-everyone

Project Layout

src/
  data/*.ts          — one file per dungeon, typed DungeonData exports
  data/index.ts      — dungeonList (sidebar order) + dungeonDataMap
  types/dungeon.ts   — all shared types
  components/
    dungeon/         — DungeonPage, BossHeader, AbilityCard, MobCard, TrashSection, etc.
    layout/          — AppSidebar
    ui/              — shadcn primitives (badge, button, card, etc.)
  index.css          — theme vars, .frost utility, wowhead overrides
public/assets/       — all images (dungeon headers, boss screenshots, icons)
dungeons/            — raw method.gg HTML source files

Adding a Dungeon

Use /parse-dungeon skill. It runs parse_dungeon.py against a dungeons/*.html file, creates src/data/<slug>.ts, and registers it in src/data/index.ts.

Content Rules

  • HTML strings in data files (wowhead links, <span class="warn">, <span class="tip">).
  • Ability card order per boss: tank first, then healer, then everyone, then dps.
  • Include healer and DPS-specific mechanics — not just tank-focused content.
  • DPS cards use role: "dps" with importance: null (red badge, no left border).
  • Max 1-2 sentences per ability. No paragraphs.
  • CC-immune mobs get red "(Immune to CC)" span in nameHtml.