
Real-time OSINT intelligence dashboard: 7 live data sources (aircraft, AIS vessels, seismic, fires, weather, GDELT events, news) on an interactive globe. Correlation engine, scored alerts, watch mode. Bun + React 19 + Canvas 2D Web Worker rendering. PWA with offline support. https://sigint-5154d935429b.herokuapp.com/
लाइव विमान, जहाज, भूकंपीय, आग, मौसम और घटना ट्रैकिंग के साथ रीयल-टाइम OSINT डैशबोर्ड, एक इंटरैक्टिव ग्लोब पर। Bun, React 19, और कस्टम Canvas 2D + Web Worker रेंडरिंग इंजन के साथ निर्मित। PWA के रूप में स्थापित करने योग्य।

git clone https://github.com/iitoneloc/sigint.git
cd sigint
bun install
प्रोजेक्ट रूट में कम से कम निम्नलिखित के साथ एक .env फ़ाइल बनाएं:
SIGINT_SERVER_SECRET=<openssl rand -hex 32 का आउटपुट>
वैकल्पिक रूप से जहाज और आग डेटा के लिए कुंजियाँ जोड़ें:
AISSTREAM_API_KEY=<आपकी aisstream.io कुंजी>
FIRMS_MAP_KEY=<आपकी NASA FIRMS कुंजी>
विकास, उत्पादन और Heroku विकल्पों के लिए परिनियोजन देखें।
bun test # सभी परीक्षण चलाएं
bun test --watch # वॉच मोड
bun run docker:test # Docker में चलाएं
bun run docker:dev:up # https://localhost (स्व-हस्ताक्षरित प्रमाणपत्र)
bun run docker:dev:down # रोकें
दो env vars विकास में लाइव डेटा फ़ेच को शॉर्ट-सर्किट करते हैं ताकि आप
ज्ञात निश्चित स्थिति पर काम कर सकें। दोनों NODE_ENV !== "production" पर
गेटेड हैं और उत्पादन बिल्ड में अनदेखा किए जाते हैं।
लेबल /^[a-z0-9-]+$/ से मेल खाते हैं (OWASP A01 — किसी भी फ़ाइल लुकअप से पहले
सख्त अनुमति सूची) और tests/fixtures/<source>/<label>.json पर रिज़ॉल्व होते हैं।
अमान्य लेबल स्टार्टअप पर फेंकते हैं; गुम फ़ाइलें रिज़ॉल्व किए गए पथ के साथ फेंकती हैं।
उपयोग करने के लिए:
CYCLONES_FIXTURE=multi-storm bun run dev
AIRCRAFT_FIXTURE=conus-snapshot bun run dev
या Docker Compose के माध्यम से (docker-compose.dev.yml दोनों पास करता है):
CYCLONES_FIXTURE=single-cat5 bun run docker:dev:up
bun run docker:prod:up # http://localhost:5500
bun run docker:prod:down # रोकें
DOMAIN=sigint.example.com bun run docker:prod:tls:up
bun run docker:prod:tls:down # रोकें
git push heroku main
bun run docker:clean:all # कंटेनर, वॉल्यूम, इमेज हटाएं
SIGINT एक प्रोग्रेसिव वेब ऐप के रूप में स्थापित करने योग्य है। तैनात ऐप पर जाने के बाद:
सर्विस वर्कर ऑफ़लाइन बूट के लिए ऐप शेल को कैश करता है। ऑफ़लाइन होने पर लाइव डेटा IndexedDB से लोड होता है। जब कनेक्टिविटी खो जाती है तो एक ऑफ़लाइन संकेतक पट्टी दिखाई देती है, जिसमें रीट्राई बटन और टच डिवाइस पर पुल-टू-रिफ्रेश होता है। जब कोई अपडेट उपलब्ध होता है, तो एक बैनर उपयोगकर्ता को पुनः लोड करने का संकेत देता है — कोई मौन मिड-सत्र कोड स्वैप नहीं।
docs/ में पूर्ण तकनीकी दस्तावेज़ आर्किटेक्चर, डेटा प्रवाह, फीचर सिस्टम, पेन सिस्टम, रेंडरिंग, कैशिंग, खोज और बाधाओं को कवर करता है।
द्वैत-लाइसेंस:
| चर | आवश्यक | विवरण |
|---|
SIGINT_SERVER_SECRET | हाँ | प्रमाणीकरण टोकन हस्ताक्षर कुंजी। openssl rand -hex 32 |
AISSTREAM_API_KEY | नहीं | लाइव जहाज डेटा के लिए aisstream.io कुंजी |
FIRMS_MAP_KEY | नहीं | आग डेटा के लिए NASA FIRMS कुंजी |
DOMAIN | नहीं | Let's Encrypt TLS के लिए डोमेन |
PORT | नहीं | सर्वर पोर्ट (डिफ़ॉल्ट: 5500) |
| परत | स्रोत | पोल |
|---|
| विमान | adsb.fi (सर्वर-साइड टाइल स्वीप, 37 टाइल्स × 250 nm) | 240s |
| जहाज | aisstream.io (सर्वर WebSocket) | 300s |
| भूकंपीय | USGS (क्लाइंट-साइड) | 420s |
| आग | NASA FIRMS (सर्वर-साइड) | 600s |
| मौसम | NOAA (क्लाइंट-साइड) | 300s |
| घटनाएँ | GDELT 2.0 (सर्वर-साइड) | 15m |
| समाचार | 6 RSS फीड (सर्वर-साइड) | 10m |
| Env var | स्रोत जिसे यह ओवरराइड करता है | मान्य लेबल |
|---|
CYCLONES_FIXTURE | /api/cyclones/latest (सर्वर NHC से फ़ेच करता है) | single-cat3, single-cat5, multi-storm, subtropical-example, tropical-depression, empty-out-of-season |
AIRCRAFT_FIXTURE | /api/aircraft/states (सर्वर adsb.fi टाइल स्वीप फ़ेच करता है) | (कोई शिप नहीं — bun run scripts/capture-fixture.ts aircraft <label> द्वारा कैप्चर करें) |