Skip to content

feat: add /reports page under Research menu#18254

Merged
wackerow merged 21 commits into
ethereum:devfrom
konopkja:feat/reports-page
May 27, 2026
Merged

feat: add /reports page under Research menu#18254
wackerow merged 21 commits into
ethereum:devfrom
konopkja:feat/reports-page

Conversation

@konopkja
Copy link
Copy Markdown
Contributor

@konopkja konopkja commented May 22, 2026

Summary

Closes #18218.

Adds a new /reports page that curates reputable, third-party institutional reports on Ethereum from regulators, central banks, banks, consultancies, and leading research firms. Surfaces under the Research nav menu.

Also moves the existing /trillion-dollar-security page to /reports/trillion-dollar-security with a 301 redirect, so the EF-led security report sits alongside the external ones.

What this PR adds / changes

  • New page: app/[locale]/reports/page.tsx, page-jsonld.tsx, and data.ts
  • Page-specific translations: src/intl/en/page-reports.json
  • Nav entry: Research → Reports added to src/lib/nav/buildNavigation.ts
  • Common translations: nav-reports-label, nav-reports-description, reports (breadcrumb label) in src/intl/en/common.json
  • TDS move: app/[locale]/trillion-dollar-security/app/[locale]/reports/trillion-dollar-security/, with the slug, JSON-LD URL, and metadata slug updated to match the new path
  • Redirects: /trillion-dollar-security/reports/trillion-dollar-security (and the existing /tds shortcut updated)
  • Footer: /reports/ and /reports/trillion-dollar-security/ links
  • Translation path map: src/lib/utils/translations.ts updated for both new routes
  • Cover images: 10 publisher OG images / PDF first-page renders in public/images/reports/ (TDS reuses its existing image)

Content

Inclusion bar follows the criteria in the issue and the maintainer feedback (#18218 (comment)): substantive Ethereum content, named institutional publisher, direct publisher-hosted URL that resolves.

Initial 11 entries:

# Title Publisher Date
1 Trillion Dollar Security (internal subpage) Ethereum Foundation May 2025
2 Technical Risk Assessment on Blockchain Networks OpenZeppelin Apr 2026
3 Quantum Computing & Blockchain Coinbase Independent Advisory Board Apr 2026
4 State of Crypto Report 2025 a16z crypto Oct 2025
5 The Future of Financial Infrastructure: Ethereum's Layer 2 Landscape Etherealize, Nethermind and L2BEAT Dec 2025
6 Coin Report: Ethereum (ETH) Fidelity Digital Assets Aug 2025
7 Ethereum is Trustware Consensys Aug 2025
8 Ethereum Pectra Upgrade: The Impact on Institutional Staking Twinstake 2025
9 Strengthening American Leadership in Digital Financial Technology The White House (PWG on Digital Asset Markets) Jul 2025
10 BIS Papers 156: Cryptocurrencies and decentralised finance Bank for International Settlements Apr 2025
11 From ripples to waves: The transformational power of tokenizing assets McKinsey & Company Jun 2024

Every external URL was verified to resolve at the time of authoring. Items @mnelsonBT flagged for removal in the issue thread (DAMA 2 litepaper press release, ECB Macroprudential Bulletin 33, EY Nightfall press release, the Etherealize "Digital Oil" URL that returned a TLS error) have been dropped. Suggested replacements (Consensys "Trustware", the Etherealize/Nethermind/L2BEAT L2 Landscape report, the Fidelity Ethereum coin report, OpenZeppelin's risk assessment, and the Coinbase IAB Quantum & Blockchain paper) are included. The crypto.com Pectra URL @mnelsonBT suggested returned a 404 at verification time, so the Twinstake alternative he proposed was used.

Design

Follows the canonical Card primitive pattern from app/[locale]/learn/page.tsx:

<Card className="row-span-3 grid grid-rows-subgrid gap-y-8 bg-background-highlight p-8 max-md:p-4">
  <CardBanner background="none" fit="contain">
    <Image ... />
  </CardBanner>
  <CardContent className="space-y-4 p-0">
    <Tag ...>{date}</Tag>
    <CardTitle variant="bold">{title}</CardTitle>
    <CardParagraph variant="light">{publisher}</CardParagraph>
  </CardContent>
  <ButtonLink href={href} variant="outline">{cta}</ButtonLink>
</Card>
  • fit="contain" triggers the auto blur-backdrop on CardBanner, which handles the mix of portrait (PDF first-page renders) and landscape (OG images) cover artwork without inconsistent cropping.
  • row-span-3 grid grid-rows-subgrid aligns banners / titles / buttons across rows.
  • ButtonLink auto-renders the external link arrow on outbound URLs; the internal TDS card gets no arrow.

The date chip reuses the small-tag pattern from app/[locale]/developers/_components/BuilderCard.tsx: status="warning", size="small", with rounded-[4px] px-1 py-px font-bold normal-case.

Test plan

  • /reports/ renders 200 with all 11 cards and cover images locally
  • /reports/trillion-dollar-security/ renders the full TDS page at the new path
  • /trillion-dollar-security returns a 308 redirect to the new path
  • /tds shortcut redirects to the new path
  • /reports/trillion-dollar-security.pdf (static asset) still serves cleanly (untouched)
  • Nav menu shows Research → Reports
  • Footer shows the new links
  • No TypeScript errors introduced by these files (existing pre-PR errors in useWalletFilters.tsx and playwright.visual.config.ts are out of scope)
  • Reviewer to confirm Storybook stories aren't required for this page (no new UI primitives introduced; all components reused)

Open questions for maintainers

These were carried forward from the issue:

  1. Filtering / categorization: 11 entries is fine reverse-chronological; if the page grows past ~30 a tag/filter (Regulator · Central bank · Bank research · Big 4 · Crypto-native · Academic) would help. Data already carries a category field for this.
  2. Inclusion governance: should additions go through an issue template like wallets/exchanges, or stay editor-curated?
  3. JSON-LD per-report schemas: @mnelsonBT mentioned in the issue thread that a separate issue should track adding author/publisher schemas to each report entry (like the video hub). Out of scope for this PR.
  4. Translation: report titles + publisher names are intentionally not translated (proper names + report titles). Page chrome is fully translatable.

🤖 Generated with Claude Code

Adds a new /reports page that curates reputable, third-party institutional
reports on Ethereum from regulators, central banks, banks, consultancies, and
leading research firms. Each report shows the publication date as a tag, the
title, the publisher, and a link out to the publisher.

Also moves the existing /trillion-dollar-security page under
/reports/trillion-dollar-security with a 301 redirect, so the EF-led security
report sits alongside the external ones. Adds a Research -> Reports nav entry
and a footer link.

Card content follows the inclusion criteria from issue ethereum#18218 and the
maintainer feedback in ethereum#18218 (comment 4498659895): substantive Ethereum
content, named institutional publisher, direct publisher-hosted URL.

Initial 11 entries:
- Trillion Dollar Security (Ethereum Foundation, internal)
- Technical Risk Assessment on Blockchain Networks (OpenZeppelin, Apr 2026)
- Quantum Computing & Blockchain (Coinbase Independent Advisory Board, Apr 2026)
- State of Crypto Report 2025 (a16z crypto, Oct 2025)
- The Future of Financial Infrastructure: Ethereum's Layer 2 Landscape
  (Etherealize, Nethermind and L2BEAT, Dec 2025)
- Coin Report: Ethereum (ETH) (Fidelity Digital Assets, Aug 2025)
- Ethereum is Trustware (Consensys, Aug 2025)
- Ethereum Pectra Upgrade: The Impact on Institutional Staking
  (Twinstake, 2025)
- Strengthening American Leadership in Digital Financial Technology
  (The White House President's Working Group, Jul 2025)
- BIS Papers 156 (Bank for International Settlements, Apr 2025)
- From ripples to waves (McKinsey & Company, Jun 2024)

Follows the canonical Card primitive pattern from app/[locale]/learn:
row-span-3 subgrid layout with CardBanner (fit=contain) at top, CardContent
with Tag + CardTitle + CardParagraph, and a ButtonLink CTA. ButtonLink auto-
renders the external link arrow on outbound URLs.

Closes ethereum#18218

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@netlify
Copy link
Copy Markdown

netlify Bot commented May 22, 2026

Deploy Preview for ethereumorg ready!

Name Link
🔨 Latest commit b723b45
🔍 Latest deploy log https://app.netlify.com/projects/ethereumorg/deploys/6a16ec4f69dd630008dda7f7
😎 Deploy Preview https://deploy-preview-18254.ethereum.it
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
Lighthouse
Lighthouse
7 paths audited
Performance: 68 (🟢 up 3 from production)
Accessibility: 96 (no change from production)
Best Practices: 100 (no change from production)
SEO: 98 (🔴 down 1 from production)
PWA: 59 (no change from production)
View the detailed breakdown and full score reports

To edit notification comments on pull requests, go to your Netlify project configuration.

@github-actions github-actions Bot added content 🖋️ This involves copy additions or edits tooling 🔧 Changes related to tooling of the project translation 🌍 This is related to our Translation Program labels May 22, 2026
konopkja and others added 17 commits May 22, 2026 12:25
Re-encodes the 10 /reports cover images from PNG/JPG at default quality to
WebP at q=80. Total asset size drops 3.8 MB to 648 KB (-83%). Largest single
file (l2-landscape) drops from 1122 KB to 99 KB.

WebP is well-supported across the runtime targets the site already serves;
Next.js Image continues to handle per-request optimization on top.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replaces the marketing-flavored intro ("curated collection of reputable
reports", "every report listed has been independently verified") with copy
that frames the page around what readers can learn from these reports, not
how trustworthy the list is. Also drops the em dashes per the repo style
guide (no em dashes in content writing).

Changes the BIS Papers 156 title to use a colon between the title and
subtitle (matching the BIS-published title), removing the em dash there as
well. The "BIS Papers 156" series identifier moves out of the title since
the publisher field already carries the bibliographic context.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds an optional fileSizeBytes field to the Report type and renders a small
"PDF, X.X MB" line below the publisher on each card whose href is a direct
PDF download.

Three current entries qualify:
- OpenZeppelin Technical Risk Assessment: 0.8 MB
- Coinbase Quantum Computing & Blockchain: 0.4 MB
- L2 Landscape (Etherealize / Nethermind / L2BEAT): 6.6 MB

Sizes were read from each publisher's Content-Length header at the time of
authoring. Cards that link to HTML landing pages do not show a size.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Switches four cards whose href previously pointed at the publisher's HTML
landing to the underlying PDF, so readers reach the actual report in one
click instead of two:

- a16z State of Crypto 2025: blog post -> standalone PDF (16.5 MB)
- Twinstake Pectra: webflow page -> PDF (1.2 MB)
- White House PWG: press fact-sheet -> the 160-page PWG report PDF (5.6 MB)
- BIS Papers 156: .htm landing -> bispap156.pdf (0.7 MB)

Each of those now also shows "PDF, X.X MB" beneath the publisher line, so
readers know what they are about to download. With this change all seven
externally-linked PDF reports surface their file size.

The remaining three external cards (Consensys "Ethereum is Trustware",
Fidelity Coin Report, McKinsey "From Ripples to Waves") are web-only
reports with no public direct-PDF URL; they now show a "Web article"
indicator in the same slot so every card has a media-type label.

The internal Trillion Dollar Security card stays unbadged so the EF
subpage remains visually distinct from external reports.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replaces all 11 existing report covers with new EF-designed artwork at a
consistent 400x566 aspect ratio. Covers were converted from PNG (1.9 MB
total) to WebP at q=80 (260 KB total, -86%).

Adds a new card at position 1 for "Ethereum Basics for Governments and
Institutions" — an Ethereum Foundation original. The PDF will be uploaded
to /public/reports/ in a follow-up commit; the href is the placeholder
path it will live at.

Also swaps the hero illustration to a robot-with-books graphic
(reports-hero.webp, 45 KB) that fits the page topic better than the
generic hackathon illustration that was placeholder.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replaces the hero WebP with a re-encoded version sourced from a
960x1012 master (was 480x506) at q=85, so the rendered hero stays
sharp at retina densities up to the ContentHero primitive's 479px
max-height. 45 KB to 129 KB on disk; still compact for a hero asset.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Upgrades the /reports page structured data to match the canonical pattern
used by /videos and address mnelsonBT's follow-up on ethereum#18218:

- Promotes the page node from WebPage to CollectionPage (more accurate
  type for a curated list; better understood by Google).
- Adds an ItemList as mainEntity, with all 12 reports as schema.org
  Report entries.
- Each report carries its own publisher Organization, datePublished
  (ISO 8601 via the new dateIso field on Report), absolute image URL,
  inLanguage, and — for PDF entries — encodingFormat and contentSize.

dateIso is kept separate from the existing display `date` field so the
card tag stays short ("Apr 2025") while the schema gets a parseable
value ("2025-04-15").

The standard <title>, <meta description>, canonical URL, hreflang
alternates, Open Graph, Twitter Card, robots, and sitemap inclusion
are already handled by the project's getMetadata helper and Next.js
conventions — no changes there.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ation

Replaces the bespoke robot-with-books hero with the
what-is-ethereum-network.png illustration that already ships with the
repo. Keeps the page visually consistent with the rest of the site and
drops a 129 KB bespoke asset.

Removes public/images/reports/reports-hero.webp since nothing else
imports it.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replaces the single-word H1 "Reports" with a descriptive headline that
names the primary entity (Ethereum), the page type (Reports), and the
target audience (institutions). The single word "Reports" gave Google
no topic signal and gave AI agents no context about the page's scope.

Syncs the visible H1, the <title>, og:title, twitter:title, the
CollectionPage `name`, and the ItemList `name` so every SEO signal
points to the same string.

The H2 section heading ("Research on Ethereum") and breadcrumb label
stay as they are to avoid duplication and keep the visible hierarchy
readable.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replaces the what-is-ethereum-network hero with a dedicated illustration
(reports-hero.webp, 92 KB) showing a person reading at a vintage
computer atop stacks of books — on-theme for a research / reports
landing page and matches the existing eth.org illustration style.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Swap reports-hero.webp to the books2 variant — higher-resolution source
(1426x1103, was 943x711) and a cooler lavender palette that aligns more
tightly with the rest of the page's cover artwork. WebP q=85, 156 KB.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Compared 6 cwebp variants on the books2 source. Lossless modes blow up
to 550-790 KB (too many subtle gradients for palette compression to
win). The previous q=85 setting at 156 KB was leaving size on the
table: the source is 1426x1103 but the ContentHero primitive caps the
rendered image at 479px tall, so retina 2x is only ~960px.

Re-encoded at q=80 with -resize 1200 0 → 104 KB, PSNR 44.6 dB
(visually indistinguishable at hero scale). 34% smaller than the
previous file.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
Prevent single word/trailing icon from wrapping by itself

Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
- Remove redundant hard-coded "date" prop from reports data
- Use `formatDate` with `locale` and formatting options to render short month with year

Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
@github-actions github-actions Bot added dependencies 📦 Changes related to project dependencies documentation 📖 Change or add documentation labels May 27, 2026
@wackerow wackerow changed the base branch from master to dev May 27, 2026 12:34
myelinated-wackerow and others added 3 commits May 27, 2026 05:53
Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
- Update isPdf to catch optional query param case
- Reuse isExternal, removing isAbsoluteUrl one-off

Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
@wackerow wackerow merged commit 1dc89c2 into ethereum:dev May 27, 2026
11 checks passed
@pettinarip pettinarip mentioned this pull request May 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

content 🖋️ This involves copy additions or edits dependencies 📦 Changes related to project dependencies documentation 📖 Change or add documentation tooling 🔧 Changes related to tooling of the project translation 🌍 This is related to our Translation Program

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: New /reports page under Research menu (with /trillion-dollar-security moved under it)

3 participants