jaeswift-website/transmissions/radar.html
jae 2bc40ac285 feat: .GOV Domain Tracker tab on RADAR page
- Add govdomains_sync.py: clones CISA dotgov-data, parses CSV, tracks first_seen dates
- Add /api/govdomains and /api/govdomains/stats Flask endpoints with range/type/search filters
- Add NEWS FEED | .GOV TRACKER toggle to RADAR page
- Domain type badges (Federal=red, State=blue, City=green, County=amber)
- New domain detection with pulsing green highlight and NEW badge
- Responsive grid layout with stats bar and result count
2026-04-15 15:52:32 +00:00

143 lines
7.1 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JAESWIFT // RADAR</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Orbitron:wght@400;700;900&family=JetBrains+Mono:wght@300;400;500;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="/css/style.css">
<link rel="stylesheet" href="/css/section.css">
<link rel="stylesheet" href="/css/radar.css?v=20260415">
<style>body{background:#0a0a0a;}</style>
</head>
<body>
<div class="scanline-overlay"></div>
<div class="grid-bg"></div>
<nav class="nav-main" id="navbar">
<div class="nav-container">
<a href="/" class="nav-logo">
<span class="logo-bracket">[</span> JAE <span class="logo-bracket">]</span>
</a>
<button class="nav-toggle" id="navToggle" aria-label="Menu">
<span></span><span></span><span></span>
</button>
<ul class="nav-menu" id="navMenu"></ul>
<div class="nav-status">
<span class="nav-clock" id="navClock"></span>
</div>
</div>
</nav>
<div class="breadcrumb">
<a href="/">HOME</a>
<span class="separator">/</span>
<a href="/transmissions">TRANSMISSIONS</a>
<span class="separator">/</span>
<span class="current">RADAR</span>
</div>
<section class="section-header" style="padding-top: calc(var(--nav-height) + 1.5rem);">
<div class="section-header-label">TRANSMISSIONS // INCOMING SIGNALS</div>
<h1 class="section-header-title">RADAR</h1>
<p class="section-header-sub" id="radarSubtitle">&gt; Live intelligence feed — intercepted from Hacker News, Reddit, and Lobste.rs</p>
</section>
<!-- ─── Top-Level View Toggle ─────────────────── -->
<div class="radar-container">
<div class="radar-view-toggle">
<button class="radar-view-btn active" data-view="newsfeed">
<span class="view-icon"></span> NEWS FEED
</button>
<button class="radar-view-btn" data-view="govtracker">
<span class="view-icon"></span> .GOV TRACKER
</button>
</div>
<!-- ═══ NEWS FEED VIEW ═══════════════════════ -->
<div class="radar-view" id="viewNewsfeed">
<div class="radar-controls">
<div class="radar-filters">
<button class="radar-filter active" data-source="all">ALL FEEDS</button>
<button class="radar-filter" data-source="hackernews">HACKER NEWS</button>
<button class="radar-filter" data-source="reddit_technology">R/TECHNOLOGY</button>
<button class="radar-filter" data-source="reddit_programming">R/PROGRAMMING</button>
<button class="radar-filter" data-source="reddit_netsec">R/NETSEC</button>
<button class="radar-filter" data-source="lobsters">LOBSTERS</button>
</div>
<div class="radar-actions">
<input type="text" class="radar-search" placeholder="SEARCH FEED..." id="radarSearch">
<button class="radar-refresh" id="radarRefresh" title="Force refresh">↻ REFRESH</button>
</div>
</div>
<div class="radar-stats">
<span class="radar-stat"><span class="stat-label">INTERCEPTS:</span> <span id="statTotal"></span></span>
<span class="radar-stat"><span class="stat-label">LAST SYNC:</span> <span id="statUpdated"></span></span>
<span class="radar-stat"><span class="stat-label">AUTO-REFRESH:</span> <span class="stat-auto">15 MIN</span></span>
<span class="radar-stat radar-live"><span class="live-dot"></span> LIVE</span>
</div>
<div class="radar-feed" id="radarFeed">
<div class="radar-loading">SCANNING FREQUENCIES...</div>
</div>
</div>
<!-- ═══ .GOV TRACKER VIEW ════════════════════ -->
<div class="radar-view hidden" id="viewGovtracker">
<div class="radar-controls">
<div class="radar-filters gov-range-filters">
<button class="gov-range active" data-range="all">ALL</button>
<button class="gov-range" data-range="24h">LAST 24H</button>
<button class="gov-range" data-range="3d">3 DAYS</button>
<button class="gov-range" data-range="7d">7 DAYS</button>
<button class="gov-range" data-range="14d">14 DAYS</button>
<button class="gov-range" data-range="30d">30 DAYS</button>
</div>
<div class="radar-actions">
<select class="gov-type-filter" id="govTypeFilter">
<option value="">ALL TYPES</option>
</select>
<input type="text" class="radar-search" placeholder="SEARCH DOMAINS..." id="govSearch">
<button class="radar-refresh" id="govRefresh" title="Refresh data">↻ SYNC</button>
</div>
</div>
<div class="radar-stats gov-stats">
<span class="radar-stat"><span class="stat-label">TOTAL DOMAINS:</span> <span id="govStatTotal"></span></span>
<span class="radar-stat"><span class="stat-label">NEW (24H):</span> <span id="govStatNew24" class="stat-new"></span></span>
<span class="radar-stat"><span class="stat-label">FEDERAL:</span> <span id="govStatFederal"></span></span>
<span class="radar-stat"><span class="stat-label">STATE:</span> <span id="govStatState"></span></span>
<span class="radar-stat"><span class="stat-label">LAST SYNC:</span> <span id="govStatSync"></span></span>
<span class="radar-stat radar-live"><span class="live-dot gov-dot"></span> TRACKING</span>
</div>
<div class="gov-results-bar">
<span id="govResultCount"></span>
</div>
<div class="radar-feed" id="govFeed">
<div class="radar-loading">QUERYING .GOV REGISTRY...</div>
</div>
</div>
</div>
<footer class="footer">
<div class="footer-container">
<div class="footer-left">
<span class="footer-logo">[JAE]</span>
<span class="footer-copy">&copy; 2026 JAESWIFT.XYZ</span>
</div>
<div class="footer-right">
<span class="footer-signal">SIGNAL ████<span class="signal-flicker"></span></span>
</div>
</div>
</footer>
<script src="/js/wallet-connect.js"></script>
<script src="/js/nav.js"></script>
<script src="/js/clock.js"></script>
<script src="/js/radar.js?v=20260415"></script>
</body>
</html>