- React + MUI DataGrid app with faction filter, search, change filter - Biggest movers cards (drops/rises) scoped to current filter view - Historical points graph modal (5 MFM versions: 1.14 → current) - URL state sync (faction, dir, q params — shareable URLs) - Grimdark favicon + OG embed image (Google Imagen) - Multi-stage Dockerfile (node build → nginx serve) - docker-compose.yml with Traefik + Cloudflare TLS - Data pipeline: build_deduped_data.py merges PDF + live scrape - Ynnari merged into Aeldari (shared codex) - Mobile responsive: flex columns, no fixed pixel widths - Color semantics: green=cheaper, red=costlier (consistent everywhere) - 1,449 units across 31 factions
59 lines
2.7 KiB
HTML
59 lines
2.7 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>WH40K 10th Edition — Faction Points Compendium</title>
|
|
<style>
|
|
body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
max-width: 900px; margin: 40px auto; padding: 0 20px;
|
|
background: #0d1117; color: #e6edf3; }
|
|
h1 { color: #c9d1d9; border-bottom: 1px solid #30363d; padding-bottom: 10px; }
|
|
h2 { color: #8b949e; font-size: 1.1em; margin-top: 30px; }
|
|
.card { background: #161b22; border: 1px solid #30363d; border-radius: 8px;
|
|
padding: 20px; margin: 15px 0; }
|
|
.card h3 { margin-top: 0; color: #c9d1d9; }
|
|
a.btn { display: inline-block; background: #238636; color: white; padding: 10px 18px;
|
|
border-radius: 6px; text-decoration: none; font-weight: 600; margin: 4px 8px 4px 0; }
|
|
a.btn.alt { background: #1f6feb; }
|
|
a.btn:hover { opacity: 0.9; }
|
|
code { background: #0d1117; padding: 2px 6px; border-radius: 3px; color: #79c0ff; }
|
|
.meta { color: #8b949e; font-size: 0.9em; }
|
|
.legend { display: flex; gap: 20px; margin: 10px 0; }
|
|
.legend span { padding: 4px 12px; border-radius: 4px; font-size: 0.9em; }
|
|
.pos { background: #c6efce; color: #006100; }
|
|
.neg { background: #ffc7ce; color: #9c0006; }
|
|
.neutral { background: #d9e1f2; color: #1f4e78; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<h1>WH40K 10th Edition — Faction Points Compendium</h1>
|
|
<p class="meta">30 factions · 1,820 unit rows · mfm.warhammer-community.com + Full_armies_10th.pdf</p>
|
|
|
|
<h2>📊 Excel workbook (recommended)</h2>
|
|
<div class="card">
|
|
<h3>wh40k_factions_all.xlsx</h3>
|
|
<p>One workbook, 30 sheets (one per faction) plus a Summary sheet. The <code>% change</code> column is color-coded:</p>
|
|
<div class="legend">
|
|
<span class="pos">Positive change (green)</span>
|
|
<span class="neg">Negative change (red)</span>
|
|
<span class="neutral">No change (neutral)</span>
|
|
</div>
|
|
<a class="btn" href="/wh40k_factions_all.xlsx" download>⬇ Download xlsx (108 KB)</a>
|
|
</div>
|
|
|
|
<h2>📄 CSV downloads</h2>
|
|
<div class="card">
|
|
<h3>Per-faction + combined</h3>
|
|
<a class="btn alt" href="/csv/_all_factions.csv" download>⬇ All factions (single file, 91 KB)</a>
|
|
<a class="btn alt" href="/csv/" >📁 Browse 30 per-faction files</a>
|
|
</div>
|
|
|
|
<h2>📚 Source data</h2>
|
|
<div class="card meta">
|
|
<p><strong>Live MFM (Munitorum Field Manual) prices:</strong> scraped from <code>mfm.warhammer-community.com</code> on 2026-06-17.</p>
|
|
<p><strong>Original (pre-MFM) points:</strong> parsed from <code>Full_armies_10th.pdf</code> via pymupdf.</p>
|
|
<p><strong>Known gaps:</strong> Titan Legions and Chaos Titan Legions have no live MFM pages. Chapter supplements (BT, BA, DA, SW, DW) inherit from the Space Marines codex.</p>
|
|
</div>
|
|
</body>
|
|
</html>
|