{"_id":"@c0smic/conflict-globe","name":"@c0smic/conflict-globe","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@c0smic/conflict-globe","version":"1.0.0","description":"Real-time 3D OSINT visualization platform with AI-powered Discord bot","main":"server/dist/index.js","scripts":{"dev":"concurrently \"npm run server\" \"npm run client\"","server":"cd server && npm run dev","client":"cd client-3d && npm run dev","build":"npm run build:server && npm run build:client","build:server":"cd server && npm run build","build:client":"cd client-3d && npm run build","start":"node server/dist/index.js","docker:up":"docker compose up -d","docker:down":"docker compose down"},"keywords":["osint","conflict","globe","visualization","discord","bot","ai","ollama","geopolitics"],"author":{"name":"Conflict Globe Team"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/r13xr13/conflict-globe.gl.git"},"engines":{"node":">=18.0.0"},"dependencies":{"concurrently":"^8.2.0"},"gitHead":"85bfb4acde7aae4f1c6333c11c0d7217e69473ef","_id":"@c0smic/conflict-globe@1.0.0","bugs":{"url":"https://github.com/r13xr13/conflict-globe.gl/issues"},"homepage":"https://github.com/r13xr13/conflict-globe.gl#readme","_nodeVersion":"24.13.1","_npmVersion":"11.10.0","dist":{"integrity":"sha512-FdjGhnjQv8eypxrCrOl6xBTLPwcN/nmi5JtvGz9IrCRJ8PbExV6IXr02caRUPJOVCes/7+cg8yQMod9PhkY3wQ==","shasum":"640e92563f55364f84c255adbeee1756b5571c12","tarball":"https://registry.npmjs.org/@c0smic/conflict-globe/-/conflict-globe-1.0.0.tgz","fileCount":83,"unpackedSize":699831,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCID/egAH6aqdhJlJpEkEWyExaTR+FlLodTrqBs2oEU8MYAiAv+PwYRKrEkYDZIkpmxCohPOwRjAWn3iK/C0/AJThiqA=="}]},"_npmUser":{"name":"c0smic","email":"ZiradielR13@proton.me"},"directories":{},"maintainers":[{"name":"c0smic","email":"ZiradielR13@proton.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/conflict-globe_1.0.0_1773520530316_0.3874216900049361"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-14T20:35:30.236Z","1.0.0":"2026-03-14T20:35:30.473Z","modified":"2026-03-14T20:35:30.756Z"},"maintainers":[{"name":"c0smic","email":"ZiradielR13@proton.me"}],"description":"Real-time 3D OSINT visualization platform with AI-powered Discord bot","homepage":"https://github.com/r13xr13/conflict-globe.gl#readme","keywords":["osint","conflict","globe","visualization","discord","bot","ai","ollama","geopolitics"],"repository":{"type":"git","url":"git+https://github.com/r13xr13/conflict-globe.gl.git"},"author":{"name":"Conflict Globe Team"},"bugs":{"url":"https://github.com/r13xr13/conflict-globe.gl/issues"},"license":"MIT","readme":"<div align=\"center\">\n\n# Conflict Globe \n\n**A real-time 3D OSINT visualization platform for global conflict and geopolitical events**\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![Version](https://img.shields.io/badge/version-1.0.0-green.svg)](https://github.com/r13xr13/conflict-globe.gl/releases)\n[![TypeScript](https://img.shields.io/badge/TypeScript-98%25-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/)\n[![Docker](https://img.shields.io/badge/Docker-ready-2496ED?logo=docker&logoColor=white)](https://hub.docker.com/)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md)\n\n[Demo](#demo) · [Quick Start](#quick-start) · [Architecture](#architecture) · [Contributing](#contributing)\n\n<br/>\n\n![Conflict Globe](https://raw.githubusercontent.com/r13xr13/conflict-globe.gl/main/Screenshot_11-Mar_21-07-37_14287.png)\n\n</div>\n\n---\n\n## Overview\n\nConflict Globe is an open-source intelligence (OSINT) platform that aggregates and visualizes global conflict, maritime, air, cyber, and geopolitical events in real time on an interactive 3D globe. Built for analysts, researchers, and journalists who need a high-signal, low-latency view of world events.\n\n> **Demo**: [▶ Watch on YouTube](https://www.youtube.com/watch?v=EvRL27Z5uh4)\n>\n> **Discord**: [Join the community](https://discord.gg/zRyBE6S7YG)\n\n---\n\n## Features\n\n### Real-Time Data Pipeline\n\n- Live OSINT feed aggregation from multiple independent sources\n- WebSocket (Socket.io) push updates — no client polling required\n- Configurable auto-refresh intervals per source\n\n### Visualization Layers\n\n| Layer | Description |\n|---|---|\n| **Points** | Individual event markers with per-category color coding |\n| **HexBins** | Hexagonal spatial clustering for density analysis |\n| **Heatmap** | Continuous density surface from event distribution |\n| **Rings** | Animated pulse rings at active event locations |\n| **Arcs** | Directional connections between correlated events |\n| **Paths** | Movement and trajectory tracking |\n| **Polygons** | Regional boundary and aggregation overlays |\n\n### Globe Controls\n\n- Dark / Light themes\n- Atmospheric glow, cloud layer, and bump-mapped terrain\n- Lat/long graticule grid overlay\n- Auto-rotation with drag-to-pause\n- Client-side point clustering for smooth performance at scale\n\n### Interaction & Filtering\n\n- Click any marker for a full event detail panel\n- Hover tooltips for at-a-glance previews\n- Timeline slider for temporal filtering\n- Category filter toggles\n- Full-text search across all loaded events\n- Export to **JSON**, **GeoJSON**, or **CSV**\n\n### Event Categories\n\n`Conflict` · `Maritime` · `Air` · `Cyber` · `Land` · `Space` · `Radio` · `Weather` · `Earthquakes` · `Social Media`\n\n---\n\n## Quick Start\n\n### Docker (Recommended)\n\nRequires [Docker](https://docs.docker.com/get-docker/) and Docker Compose.\n\n```bash\ngit clone https://github.com/r13xr13/conflict-globe.gl.git\ncd conflict-globe.gl\n\ndocker compose up -d\n\nopen http://localhost:8080\n```\n\n### Local Development\n\nRequires Node.js ≥ 18.\n\n```bash\ngit clone https://github.com/r13xr13/conflict-globe.gl.git\ncd conflict-globe.gl\n\n# Install dependencies\ncd client-3d && npm install\ncd ../server && npm install\n\n# Terminal 1 — Backend\ncd server && npm run dev\n\n# Terminal 2 — Frontend\ncd client-3d && npm run dev\n```\n\n---\n\n## Configuration\n\nCreate a `.env` file in the `server/` directory. All API keys are optional — many data feeds work without authentication.\n\n```env\n# API Keys (optional)\nNEWS_API_KEY=your_key_here\nGDELT_KEY=your_key_here\n\n# Server\nPORT=8080\nNODE_ENV=development\n```\n\n### Data Sources\n\n| Source | Domain |\n|---|---|\n| [GDELT Project](https://www.gdeltproject.org/) | Global events & media |\n| [UCDP Armed Conflict](https://ucdp.uu.se/) | Conflict datasets |\n| MarineTraffic | Maritime vessel tracking |\n| ADS-B Exchange | Live aircraft positions |\n| Satellite tracking feeds | Space domain awareness |\n| RSS news aggregation | Open-source media feeds |\n\n---\n\n## Architecture\n\n```\nconflict-globe.gl/\n├── client-3d/          # React + Vite frontend (TypeScript)\n│   ├── src/\n│   │   └── App.tsx     # Root globe component & state\n│   └── package.json\n├── server/             # Express + TypeScript backend\n│   ├── src/\n│   │   ├── index.ts    # Entry point & Socket.io setup\n│   │   ├── routes/     # REST API endpoints\n│   │   └── services/   # Per-source OSINT data fetchers\n│   └── package.json\n├── globe.gl/           # Vendored custom globe.gl build\n├── Dockerfile\n└── docker-compose.yml\n```\n\n**Data flow:** OSINT sources → Express REST & Socket.io → React client → globe.gl WebGL renderer\n\n---\n\n## Tech Stack\n\n| Layer | Technologies |\n|---|---|\n| **Frontend** | React, Vite, react-globe.gl, Three.js, TypeScript |\n| **Backend** | Node.js, Express, TypeScript, Socket.io |\n| **Data** | Axios, RSS parsers, REST OSINT APIs |\n| **Infrastructure** | Docker, Docker Compose |\n\n---\n\n## Performance\n\n- Client-side point clustering keeps render time stable at large event volumes\n- Configurable max point count (50–500) to match hardware capability\n- Auto-refresh throttling prevents API rate-limit exhaustion\n- Memoized data processing avoids redundant React renders\n- Code-split lazy loading reduces initial bundle size\n\n---\n\n## Keyboard Shortcuts\n\n| Key | Action |\n|---|---|\n| `R` | Force data refresh |\n| `F` | Toggle sidebar |\n| `H` | Toggle dark / light theme |\n\n---\n\n## Deployment\n\n### Railway (Cloud — Recommended)\n\n1. Connect your GitHub repo to [Railway](https://railway.app)\n2. Railway auto-detects the Dockerfile — no extra config needed\n3. Add environment variables in the Railway dashboard\n4. Every push to `main` triggers an automatic redeploy\n\n```env\nPORT=8080\nNODE_ENV=production\n```\n\n### Self-Hosted\n\n```bash\ndocker compose up -d\n```\n\n---\n\n## Contributing\n\nContributions are welcome — please read [CONTRIBUTING.md](CONTRIBUTING.md) first.\n\n1. Fork the repository\n2. Create a feature branch: `git checkout -b feature/your-feature`\n3. Commit your changes\n4. Open a pull request against `main`\n\n---\n\n## License\n\nDistributed under the [MIT License](LICENSE).\n\n---\n\n## Acknowledgements\n\n- [globe.gl](https://github.com/vasturiano/globe.gl) — WebGL globe rendering by Vasco Asturiano\n- [three-globe](https://github.com/vasturiano/three-globe) — Three.js globe plugin\n- [GDELT Project](https://www.gdeltproject.org/) — Primary open-source event data provider","readmeFilename":"README.md","_rev":"1-5c0bf59dbff1a9f491d1481f13b37685"}