From 13c5152bf9bf7f79137c31fa18d92641fa308754 Mon Sep 17 00:00:00 2001 From: Rene Fichtmueller Date: Fri, 27 Mar 2026 10:22:10 +1300 Subject: [PATCH] feat: multi-source data validation with confidence scoring - RPKI cross-check: Cloudflare RPKI feed + RIPE NCC Validator API (5 sample prefixes) - Prefix cross-check: RIPE Stat vs bgp.he.net count comparison - Neighbour cross-check: RIPE Stat vs bgp.he.net peer data - Data Quality badge in dashboard (High/Medium/Low confidence) - Hover tooltip: "Data Quality Report" with per-source agreement breakdown - Added BETA tag to site header and version string (v0.5.0-beta) - All UI text in English --- public/index.html | 141 +++++++++++++++++++++++++++++++++++++++- server.js | 160 +++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 295 insertions(+), 6 deletions(-) diff --git a/public/index.html b/public/index.html index fa07b1b..d5bb780 100644 --- a/public/index.html +++ b/public/index.html @@ -100,7 +100,19 @@ a{color:var(--blue);text-decoration:none;transition:color .2s}a:hover{color:var( @keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}} .skeleton.h2{height:2rem;width:60%}.skeleton.h3{height:1.2rem;width:40%}.skeleton.wide{width:100%}.skeleton.med{width:70%} -.meta-bar{text-align:center;font-size:.75rem;color:var(--dim);margin-top:1rem;padding:0 1.5rem} +.meta-bar{text-align:center;font-size:.75rem;color:var(--dim);margin-top:1rem;padding:0 1.5rem;display:flex;align-items:center;justify-content:center;gap:.75rem;flex-wrap:wrap} +.dq-badge{display:inline-flex;align-items:center;gap:.35rem;padding:.25rem .65rem;border-radius:6px;font-size:.7rem;font-weight:600;cursor:help;position:relative;transition:all .2s} +.dq-badge.high{background:rgba(158,206,106,.15);color:var(--green);border:1px solid rgba(158,206,106,.3)} +.dq-badge.medium{background:rgba(255,158,100,.15);color:var(--orange);border:1px solid rgba(255,158,100,.3)} +.dq-badge.low{background:rgba(247,118,142,.15);color:var(--red);border:1px solid rgba(247,118,142,.3)} +.dq-badge svg{width:12px;height:12px} +.dq-tooltip{display:none;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);background:var(--card);border:1px solid var(--border-light);border-radius:8px;padding:.75rem;font-size:.7rem;font-weight:400;color:var(--text-dim);min-width:280px;max-width:360px;z-index:100;box-shadow:0 4px 12px rgba(0,0,0,.3);text-align:left;line-height:1.5} +.dq-badge:hover .dq-tooltip{display:block} +.dq-tooltip-row{display:flex;justify-content:space-between;padding:.2rem 0;border-bottom:1px solid rgba(42,43,61,.5)} +.dq-tooltip-row:last-child{border-bottom:none} +.dq-tooltip-label{color:var(--muted)} +.dq-tooltip-value{font-weight:600} +.dq-tooltip-value.agree{color:var(--green)}.dq-tooltip-value.warn{color:var(--orange)}.dq-tooltip-value.bad{color:var(--red)}.dq-tooltip-value.na{color:var(--dim)} .footer{text-align:center;padding:2rem 1.5rem;color:var(--dim);font-size:.75rem;border-top:1px solid var(--border);margin-top:2rem} .footer a{color:var(--muted)} @@ -267,7 +279,7 @@ a{color:var(--blue);text-decoration:none;transition:color .2s}a:hover{color:var( -

PeerCortex

Network Intelligence Dashboard v0.3
+

PeerCortex BETA

Network Intelligence Dashboard v0.5.0-beta