Add Build What Was Removed campaign site - #33
Conversation
Ports the Claude Design "Build What Was Removed.dc.html" project (charcoal/ off-white/gold evidence-archive design) into this monorepo's existing static-site convention: vendored React/ReactDOM/Babel-in-browser, no bundler, deployed as its own Netlify site. Implements the full information architecture from the handoff document: home, public ledger (filters, CSV export, shareable URLs), per-incident detail pages (12 required sections each), the case, evidence methodology, fund (disabled donation controls, TODO markers), updates, right-of-reply/ corrections, and legal pages. Routing is hash-based rather than history.pushState, so the site works unmodified at a domain root or a subpath (e.g. the GitHub Pages preview this adds at /build-what-was-removed/) without server-side rewrites. Metrics logic (src/metrics.js) enforces the handoff document's editorial safeguards in code, with unit tests: temporary seizures never inflate the claimed-permanent-loss total, unverified/advocacy-grade items can never enter an aggregate, and incident aggregates vs. item components are never double-counted. 15 Playwright end-to-end tests cover navigation, filtering, the corrections/right-of-reply forms, and the disabled donation flow. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WjHE5Py3RScvhr17bQ4M7
|
Status check: the only failing check here is the This PR's own code is green: 7 unit tests ( To unblock a live preview at Generated by Claude Code |
Rebrand to "Foster What We Built" / "Gornja Siga Settlement Campaign": the site now asserts the settlement already exists and is being defended and fostered, rather than sought or established. CTAs, hero copy and section headings updated accordingly; sovereignty and legal-right-to-build disclaimers are left untouched. Gitignore .netlify/ (local CLI site-link state).
Summary
Adds
build-what-was-removed/— the Gornja Siga Settlement Recovery Campaign site — as a third static site in this monorepo, matching the existing convention used byliberland-limited/andnew-site/(vendored React/ReactDOM/Babel-in-browser, no bundler, its ownnetlify.toml).Build What Was Removed.dc.html) faithfully: same copy, same charcoal/off-white/gold visual system, same view structure and metric/business rules.src/metrics.jsencodes the required editorial safeguards as pure functions with unit tests: a temporary seizure (€120) never inflates the claimed-permanent-loss total (€54,486.22), unverified/advocacy-grade items never enter an aggregate, and incident aggregates vs. item components are never double-counted.#/incidents/GS-2023-09-21,#/ledger?status=...) rather thanhistory.pushState, so the site works unmodified at a domain root (its intended Netlify site) or a subpath (the GitHub Pages preview this PR adds), with no server-side rewrite rules needed..github/workflows/deploy-pages.yml: added this folder to the existing multi-site GitHub Pages preview (alongsideliberland-limited/at root andnew-site/at/candidate/) at/build-what-was-removed/, purely so it's reviewable at a real URL before a dedicated Netlify site exists. The two existing sites' deploy steps are unchanged.README.md,ARCHITECTURE.md(explains why this isn't the Next.js/TS/Zod stack the handoff doc's own prompt asked for),CONTENT-GUIDE.md,EVIDENCE-PUBLICATION-CHECKLIST.md,DATA-DICTIONARY.md,LEGAL-REVIEW-CHECKLIST.md,DEPLOYMENT.md.This is a draft: no live payment method is enabled and no real evidence images are published (see
LEGAL-REVIEW-CHECKLIST.md/EVIDENCE-PUBLICATION-CHECKLIST.mdfor what's still required before either happens).Test plan
npm test— 7 unit tests intests/metrics.test.js, including the two invariants the handoff document specifically requires (temporary seizure excluded from permanent loss; unverified item can't enter totals)npm run test:e2e— 15 Playwright tests covering navigation, ledger filtering, incident deep-links, the donation-disabled state, and the corrections/right-of-reply forms#/incidents/GS-2023-09-21)liberland-limited/andnew-site/are untouched by this change (only their shareddeploy-pages.ymlstep gained one morecp, and their own site content/behavior is unaffected)🤖 Generated with Claude Code
https://claude.ai/code/session_014WjHE5Py3RScvhr17bQ4M7
Generated by Claude Code