Interactive reference graph of ETSI ESI standards for the European Digital Identity Wallet ecosystem.
🔗 Live Demo: cre8.github.io/eudi-nexus
- EUDI-focused: Filters to ~100 specs relevant to the EUDI Wallet (default mode)
- Interactive graph: Visualize normative and informative references between specs
- Multi-source: Includes ETSI, IETF RFCs, ISO/IEC, ITU-T, W3C, and OIDF (OpenID4VP, OpenID4VCI, etc.)
- Iterative crawling: Automatically downloads and analyzes referenced external specs (OIDF, IETF RFCs)
- Draft support: Includes work-in-progress documents from ETSI docbox
- Search & navigate: Select box to find and focus on specific documents
- Clickable links: Navigate directly to spec sources
# Install dependencies
npm install
# Run everything (scrape → download → build)
npm run scrape # Scrape ETSI work program
npm run download # Download PDFs (requires credentials)
npm run build # Generate reference graph
# View locally
npm run serve # Opens http://localhost:9999Create a .env file with your ETSI portal credentials (needed for downloading specs):
ETSI_USERNAME=your_username
ETSI_PASSWORD=your_password| Command | Description |
|---|---|
npm run scrape |
Scrape work items from ETSI portal → esi_overview.json |
npm run download |
Download all published PDFs (~150 specs) |
npm run download:oidf |
Download OIDF specs (OpenID4VP, OpenID4VCI, etc.) |
npm run build |
Extract references and build graph (EUDI focus + drafts) |
npm run build:full |
Iteratively crawl & download all referenced external specs |
npm run crawl |
Same as build:full - iterative reference crawler |
npm run serve |
Serve the visualization locally on port 9999 |
| Command | Description |
|---|---|
npm run references |
EUDI-focused specs only |
npm run references:all |
All ETSI ESI specs |
npm run references:drafts |
EUDI specs + draft documents |
npm run references:all:drafts |
Everything |
The npm run crawl command iteratively:
- Extracts references from all downloaded specs (ETSI PDFs, OIDF HTML, IETF RFCs)
- Identifies referenced but not-yet-downloaded external specs
- Downloads missing OIDF specs and IETF RFCs
- Repeats until no new specs are found (max 5 iterations)
This builds a comprehensive graph including transitive dependencies.
# Run with verbose output
npm run crawl:verbose
# Limit iterations
cd scripts && node crawl-references.js --max-iterations 3All output goes to the downloads/ directory:
| File | Description |
|---|---|
index.html |
Interactive visualization (deployed to GitHub Pages) |
references.json |
Full reference data as JSON |
references.dot |
Graphviz DOT format |
references.mmd |
Mermaid diagram format |
esi_overview.json |
Scraped work items summary |
specs/ |
Downloaded PDF/DOCX specifications |
specs/OIDF/ |
Downloaded OIDF specifications (HTML) |
specs/IETF/ |
Downloaded IETF RFCs (plain text) |
| Source | Format | Auto-Download | Notes |
|---|---|---|---|
| ETSI | PDF/DOCX | Yes (with credentials) | ESI standards (EN, TS, TR) |
| OIDF | HTML | Yes | OpenID4VP, OpenID4VCI, SD-JWT, etc. |
| IETF | Text | Yes | RFCs from rfc-editor.org |
| ISO/IEC | - | No | Referenced only |
| ITU-T | - | No | Referenced only |
| W3C | - | No | Referenced only |
The default mode focuses on specs relevant to the EUDI Wallet ecosystem:
- Trust Services: EN 319 xxx series
- Electronic Signatures: CAdES, XAdES, PAdES, JAdES
- Wallet & Credentials: TS 119 46x, 47x, 49x series
- External Standards: OpenID4VP, OpenID4VCI, HAIP, SD-JWT, key RFCs
Use --all flag to include all ETSI ESI specifications.
The GitHub Actions workflow automatically:
- Scrapes the ETSI work program
- Downloads specifications
- Extracts references and builds the graph
- Deploys to GitHub Pages
Runs on:
- Push to
mainbranch - Weekly schedule (Mondays)
- Manual trigger
Required secrets: ETSI_USERNAME, ETSI_PASSWORD
Apache-2.0 License