Mega-Tracker/index.html
Dave 471cf6fb3c Project tracker seeded from the Mega Infrastructure Candy barchart
App for the Mega Infrastructure AI Integration programme (A000) and Mega
Plant (B110). 100 activities across 2 programmes, 06 Oct 2026 - 31 Aug 2027,
parsed from the client PDF and frozen as an immutable baseline.

Views: Dashboard, Timeline (month grid + week grid matching the PDF's
Friday-anchored week numbering), Todo list, WBS, Data.

Notes on the source data:
- Hierarchy is derived from the PDF's indentation, not the activity code.
  Codes do not sort structurally (A490 sits under Workforce, A510 under
  Financials), so a code-ordered import would produce a wrong tree.
- The schedule is built from the dates, not the PDF's "Durn" column, which
  disagrees with its own dates for 13 of the 100 activities.
- Spec issues found in the PDF are surfaced in-app under Data: 2 unresolved
  "?" placeholders, 6 activities sharing one stretched 6-week window while
  declared 15 days, 13 duration mismatches, 17 spelling corrections
  (original wording preserved and viewable).

Progress (status, % complete, note) is stored behind a pluggable adapter so
the site can be static today and point at a shared JSON store later without
touching the UI.
2026-10-01 08:48:51 +02:00

30 lines
1.2 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<title>Mega Infrastructure — Project Tracker</title>
<meta name="description" content="Project tracker for the Mega Infrastructure AI Integration programme, seeded from the Candy barchart." />
<script>
// Resolve the theme before first paint so there is no flash of the wrong
// colours. Must mirror src/lib/appearance.ts (DEFAULT_MODE / DEFAULT_ACCENT).
;(function () {
try {
var t = localStorage.getItem('mega-tracker/theme/v1')
if (t !== 'light' && t !== 'dark') t = 'dark'
var a = localStorage.getItem('mega-tracker/accent/v1')
if (['blue', 'violet', 'emerald', 'amber'].indexOf(a) < 0) a = 'blue'
var el = document.documentElement
el.dataset.theme = t
el.dataset.accent = a
el.style.colorScheme = t
} catch (e) {}
})()
</script>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>