Skip to content

Add Build What Was Removed campaign site - #33

Draft
michalptacnik wants to merge 2 commits into
masterfrom
claude/build-what-was-removed-rrbeth
Draft

Add Build What Was Removed campaign site#33
michalptacnik wants to merge 2 commits into
masterfrom
claude/build-what-was-removed-rrbeth

Conversation

@michalptacnik

Copy link
Copy Markdown
Contributor

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 by liberland-limited/ and new-site/ (vendored React/ReactDOM/Babel-in-browser, no bundler, its own netlify.toml).

  • Ports the Claude Design source (Build What Was Removed.dc.html) faithfully: same copy, same charcoal/off-white/gold visual system, same view structure and metric/business rules.
  • Implements the full IA from the handoff document: home, public ledger (search/filter/CSV export/shareable URLs), 12-section incident detail pages, case, evidence methodology, fund (donation controls disabled, TODO markers for the missing recipient entity/payment provider), updates, right-of-reply & corrections, and legal pages.
  • src/metrics.js encodes 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.
  • Client routing is hash-based (#/incidents/GS-2023-09-21, #/ledger?status=...) rather than history.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 (alongside liberland-limited/ at root and new-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.
  • Docs: 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.md for what's still required before either happens).

Test plan

  • npm test — 7 unit tests in tests/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
  • Manually verified all 10 routes render with no console errors, including a fresh page load on a deep link (#/incidents/GS-2023-09-21)
  • Confirmed liberland-limited/ and new-site/ are untouched by this change (only their shared deploy-pages.yml step gained one more cp, and their own site content/behavior is unaffected)

🤖 Generated with Claude Code

https://claude.ai/code/session_014WjHE5Py3RScvhr17bQ4M7


Generated by Claude Code

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

Copy link
Copy Markdown
Contributor Author

Status check: the only failing check here is the deploy (GitHub Pages) job, and it's not a defect in this PR's code — it fails in ~1s before any workflow step runs, which is the standard signature of the github-pages deployment environment protection rule: by default that environment only allows deployments from an allow-listed set of branches, and claude/build-what-was-removed-rrbeth isn't on it (unlike master and one other pre-existing feature branch).

This PR's own code is green: 7 unit tests (npm test) and 15 Playwright end-to-end tests (npm run test:e2e) pass locally, including the two invariants the handoff doc specifically calls for (temporary seizure excluded from claimed-permanent-loss; unverified items excluded from totals), plus manual verification that liberland-limited/ and new-site/ are unaffected.

To unblock a live preview at https://liberlandlimited.com/build-what-was-removed/ without merging: add this branch under Settings → Environments → github-pages → Deployment branches (or switch it to "All branches"), and I'll re-run the workflow. No code change needed on my end.


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).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants