Skip to content

L3-iGrant/eudi-wallet-tracker

EUDI Wallet Status Tracker

CI Deploy to GitHub Pages Security Last commit Open issues Open PRs Code: EUPL-1.2 Data: CC BY 4.0 Contributor Covenant 2.1 Anchor: Regulation (EU) 2024/1183 Site: eudi-wallet-tracker.igrant.io

Open editorial record of EUDI Wallet readiness across the EU 27, EEA (Norway, Iceland, Liechtenstein), the UK and Switzerland. Anchored on the 24 December 2026 Member State obligation under Regulation (EU) 2024/1183.

Built with Docusaurus 3. Comments via Giscus (GitHub Discussions). Edits via GitHub Pull Requests.

Quick start

npm ci
npm run start            # http://localhost:2025

That runs scripts/generate-country-pages.mjs first, which writes one MDX page per country into docs/tracker/ and one SVG status badge into static/badge/ from data/eudi-status.json.

Build

npm run build

Repo layout

data/
  eudi-status.json         # source of truth, edit this
docs/
  intro.md                 # overview
  methodology.md           # editorial policy
  contribute.md            # how to suggest changes
  changelog.md             # placeholder, regenerated from history
  about.md                 # iGrant.io, maintainer, licences
  lsp/                     # one page per Large Scale Pilot
  tracker/                 # auto-generated per-country MDX (do not edit by hand)
src/
  components/              # EuropeMap (with Maximise toggle), StatusTable, StatsGrid (chip row),
                           # Countdown (weeks), RecentChanges, StatusBadge, ShareBar, Giscus, Legend
  pages/                   # / (home with map hero), /tracker (map), /tracker/table
  theme/DocItem/Footer/    # swizzled to inject ShareBar + comments
  css/custom.css           # Apple-style theme (SF / Inter, hairlines, soft shadows, status pastels)
scripts/
  generate-country-pages.mjs   # emits per-country MDX (incl. private-sector activity section)
  validate-data.mjs            # JSON schema check
  lint-prose.mjs               # blocks em dashes, enforces British English
static/
  badge/                   # auto-generated per-country status SVGs
.github/
  ISSUE_TEMPLATE/          # status-change, source-addition, correction
  PULL_REQUEST_TEMPLATE.md
  workflows/ci.yml
  workflows/monthly-review.yml
docusaurus.config.ts
sidebars.ts

Updating the data

  1. Edit data/eudi-status.json.
  2. Run npm run start to preview locally.
  3. Open a pull request following .github/PULL_REQUEST_TEMPLATE.md.

CODEOWNERS routes data changes to the editorial team automatically.

Sharing

Every page has a ShareBar with LinkedIn, X, Bluesky, Mastodon, Email, Web Share and Copy-link. Every country has an embeddable SVG badge under /badge/{ISO}.svg:

<a href="https://eudi-wallet-tracker.igrant.io/tracker/france">
  <img alt="France EUDI Wallet status"
       src="https://eudi-wallet-tracker.igrant.io/badge/FR.svg" />
</a>

Embed the live map

The interactive map can be embedded on any page (Google-Maps style) via an iframe pointing at /embed:

<iframe
  src="https://eudi-wallet-tracker.igrant.io/embed?country=SE"
  width="100%" height="520" frameborder="0"
  loading="lazy" allowfullscreen
  referrerpolicy="no-referrer-when-downgrade"
  title="EUDI Wallet readiness across Europe"
></iframe>

Optional query parameters:

Param Effect
?country=SE Open with that country pinned in the side panel.
?pin=SE Same as above (canonical name).
?status=Public pilot live Pre-apply the status chip filter.
?legend=hide Hide the colored status chip row above the map.
?attribution=hide Hide only the bottom "EUDI Wallet Status Tracker / View larger map" strip.
?chrome=minimal Hide both the map toolbar AND the bottom attribution strip.
?host=default Apply a named host design preset (alias: ?preset=default).

Unknown values for legend, chrome, host and preset fall back to the defaults.

Host presets

Host presets let third-party pages match the embed to their own design system without forking the tracker. Today the following preset ships:

Preset Matches
default Neutral base look: Title Case heading, rounded pill outline buttons, standard surface. Acts as a no-op on the visual layer so the embed reads as a clean, brand-agnostic widget on any host page.

Add a new preset by extending HOST_PRESETS in src/pages/embed.tsx and adding the matching body.is-embed.theme--<name> CSS block in src/css/custom.css.

The embed surface omits all site chrome (navbar, footer) and includes a small "View larger map" link back to the canonical tracker.

Roadmap

See EXECUTION_PLAN.md for the phased plan (Phase 1 to 6), or Issues for current work.

Phases 1, 2 and 6 are live. The home page features the Apple-style refresh, with the interactive map as the hero (Maximise / Minimise / Esc), a weeks-to-deadline countdown, sleek status chip row, and editorially valuable sections in place of source feeds. Per-country pages render private-sector activity when present in data/eudi-status.json.

Licence

  • Code: EUPL-1.2
  • Data: CC BY 4.0

About

Open EUDI Wallet readiness status across the EU 27, EEA, UK and Switzerland. Maintained by iGrant.io. Sweden

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors