GitHunt
SA

Salad109/satellite-conjunction-detector

Satellite collision prediction system built with Orekit. Optimized to allow sub-minute scanning of full catalog on consumer hardware.

Conjunction Detector

Satellite conjunction detection system that monitors orbital objects for potential collisions. Ingests data from
Space-Track.org, propagates orbits using Orekit, and identifies close approaches
between satellites.

Tech Stack

  • Java 25
  • Spring Boot 4 / Spring Modulith
  • Orekit 13
  • PostgreSQL / Flyway
  • HTMX / Thymeleaf

Architecture

Module diagram

The application is organized into five modules:

  • Ui - UI controllers and scheduled jobs
  • Conjunction - Detection algorithms and conjunction storage
  • Ingestion - Orchestrates catalog synchronization from Space-Track
  • Satellite - Satellite entity and repository
  • Spacetrack - HTTP client for Space-Track.org API

Coarse and Fine Scanning

The detection algorithm uses a two-step approach:

  1. Coarse sweep: Pre-computes satellite positions using SGP4 with Hermite interpolation, then uses spatial grid
    indexing to efficiently find nearby satellites within tolerance
  2. Refinement: Solves for precise TCA and miss distance, filtering by 5 km collision
    threshold

See docs for tuning experiments and optimal parameters.

Setup

Prerequisites

1. Configure Environment

Copy the example environment file and fill in your Space-Track credentials:

cp .env.example .env

2A. Run with Docker Compose

docker compose up

This starts PostgreSQL and the application. The app will be available at http://localhost:8080.

2B. Running Locally for Development

docker compose up postgres -d
./mvnw spring-boot:run

Languages

Java73.3%HTML26.3%Dockerfile0.4%

Contributors

MIT License
Created December 16, 2025
Updated March 14, 2026