2.5 KiB
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 8000make build— production buildsource ~/.zshrcbefore any node/npm/npx command (lazy nvm)
Design Rules
- Dark only. Deep abyss navy (
#050810). No light mode, no toggle. - Frosted glass cards. Use
.frostclass (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-baseminimum. Headers bump up. Bullet spacingmb-2.5. - Centre-aligned content. Main container
max-w-7xl mx-auto. 2-col grid onlg:. - 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"withimportance: 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.