npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@c0smic/conflict-globe

v1.0.0

Published

Real-time 3D OSINT visualization platform with AI-powered Discord bot

Readme

Conflict Globe

A real-time 3D OSINT visualization platform for global conflict and geopolitical events

License: MIT Version TypeScript Docker PRs Welcome

Demo · Quick Start · Architecture · Contributing

Conflict Globe


Overview

Conflict 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.

Demo: ▶ Watch on YouTube

Discord: Join the community


Features

Real-Time Data Pipeline

  • Live OSINT feed aggregation from multiple independent sources
  • WebSocket (Socket.io) push updates — no client polling required
  • Configurable auto-refresh intervals per source

Visualization Layers

| Layer | Description | |---|---| | Points | Individual event markers with per-category color coding | | HexBins | Hexagonal spatial clustering for density analysis | | Heatmap | Continuous density surface from event distribution | | Rings | Animated pulse rings at active event locations | | Arcs | Directional connections between correlated events | | Paths | Movement and trajectory tracking | | Polygons | Regional boundary and aggregation overlays |

Globe Controls

  • Dark / Light themes
  • Atmospheric glow, cloud layer, and bump-mapped terrain
  • Lat/long graticule grid overlay
  • Auto-rotation with drag-to-pause
  • Client-side point clustering for smooth performance at scale

Interaction & Filtering

  • Click any marker for a full event detail panel
  • Hover tooltips for at-a-glance previews
  • Timeline slider for temporal filtering
  • Category filter toggles
  • Full-text search across all loaded events
  • Export to JSON, GeoJSON, or CSV

Event Categories

Conflict · Maritime · Air · Cyber · Land · Space · Radio · Weather · Earthquakes · Social Media


Quick Start

Docker (Recommended)

Requires Docker and Docker Compose.

git clone https://github.com/r13xr13/conflict-globe.gl.git
cd conflict-globe.gl

docker compose up -d

open http://localhost:8080

Local Development

Requires Node.js ≥ 18.

git clone https://github.com/r13xr13/conflict-globe.gl.git
cd conflict-globe.gl

# Install dependencies
cd client-3d && npm install
cd ../server && npm install

# Terminal 1 — Backend
cd server && npm run dev

# Terminal 2 — Frontend
cd client-3d && npm run dev

Configuration

Create a .env file in the server/ directory. All API keys are optional — many data feeds work without authentication.

# API Keys (optional)
NEWS_API_KEY=your_key_here
GDELT_KEY=your_key_here

# Server
PORT=8080
NODE_ENV=development

Data Sources

| Source | Domain | |---|---| | GDELT Project | Global events & media | | UCDP Armed Conflict | Conflict datasets | | MarineTraffic | Maritime vessel tracking | | ADS-B Exchange | Live aircraft positions | | Satellite tracking feeds | Space domain awareness | | RSS news aggregation | Open-source media feeds |


Architecture

conflict-globe.gl/
├── client-3d/          # React + Vite frontend (TypeScript)
│   ├── src/
│   │   └── App.tsx     # Root globe component & state
│   └── package.json
├── server/             # Express + TypeScript backend
│   ├── src/
│   │   ├── index.ts    # Entry point & Socket.io setup
│   │   ├── routes/     # REST API endpoints
│   │   └── services/   # Per-source OSINT data fetchers
│   └── package.json
├── globe.gl/           # Vendored custom globe.gl build
├── Dockerfile
└── docker-compose.yml

Data flow: OSINT sources → Express REST & Socket.io → React client → globe.gl WebGL renderer


Tech Stack

| Layer | Technologies | |---|---| | Frontend | React, Vite, react-globe.gl, Three.js, TypeScript | | Backend | Node.js, Express, TypeScript, Socket.io | | Data | Axios, RSS parsers, REST OSINT APIs | | Infrastructure | Docker, Docker Compose |


Performance

  • Client-side point clustering keeps render time stable at large event volumes
  • Configurable max point count (50–500) to match hardware capability
  • Auto-refresh throttling prevents API rate-limit exhaustion
  • Memoized data processing avoids redundant React renders
  • Code-split lazy loading reduces initial bundle size

Keyboard Shortcuts

| Key | Action | |---|---| | R | Force data refresh | | F | Toggle sidebar | | H | Toggle dark / light theme |


Deployment

Railway (Cloud — Recommended)

  1. Connect your GitHub repo to Railway
  2. Railway auto-detects the Dockerfile — no extra config needed
  3. Add environment variables in the Railway dashboard
  4. Every push to main triggers an automatic redeploy
PORT=8080
NODE_ENV=production

Self-Hosted

docker compose up -d

Contributing

Contributions are welcome — please read CONTRIBUTING.md first.

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/your-feature
  3. Commit your changes
  4. Open a pull request against main

License

Distributed under the MIT License.


Acknowledgements