skyview/README.md
Ole-Morten Duesund 7340a9d6eb Complete multi-source Beast format implementation
Major features implemented:
- Beast binary format parser with full Mode S/ADS-B decoding
- Multi-source data merger with intelligent signal-based fusion
- Advanced web frontend with 5 view modes (Map, Table, Stats, Coverage, 3D)
- Real-time WebSocket updates with sub-second latency
- Signal strength analysis and coverage heatmaps
- Debian packaging with systemd integration
- Production-ready deployment with security hardening

Technical highlights:
- Concurrent TCP clients with auto-reconnection
- CPR position decoding and aircraft identification
- Historical flight tracking with position trails
- Range circles and receiver location visualization
- Mobile-responsive design with professional UI
- REST API and WebSocket real-time updates
- Comprehensive build system and documentation

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-23 23:51:37 +02:00

6.3 KiB

SkyView - Multi-Source ADS-B Aircraft Tracker

A high-performance, multi-source ADS-B aircraft tracking application that connects to multiple dump1090 Beast format TCP streams and provides a modern web interface with advanced visualization capabilities.

Features

Multi-Source Data Fusion

  • Beast Binary Format: Native support for dump1090 Beast format (port 30005)
  • Multiple Receivers: Connect to unlimited dump1090 sources simultaneously
  • Intelligent Merging: Smart data fusion with signal strength-based source selection
  • Real-time Processing: High-performance concurrent message processing

Advanced Web Interface

  • Interactive Maps: Leaflet.js-based mapping with aircraft tracking
  • Real-time Updates: WebSocket-powered live data streaming
  • Mobile Responsive: Optimized for desktop, tablet, and mobile devices
  • Multi-view Dashboard: Map, Table, Statistics, Coverage, and 3D Radar views

Professional Visualization

  • Signal Analysis: Signal strength heatmaps and coverage analysis
  • Range Circles: Configurable range rings for each receiver
  • Flight Trails: Historical aircraft movement tracking
  • 3D Radar View: Three.js-powered 3D visualization (optional)
  • Statistics Dashboard: Real-time charts and metrics

Aircraft Data

  • Complete Mode S Decoding: Position, velocity, altitude, heading
  • Aircraft Identification: Callsign, category, country, registration
  • Multi-source Tracking: Signal strength from each receiver
  • Historical Data: Position history and trail visualization

🚀 Quick Start

Using Command Line

# Single source
./skyview -sources "primary:Local:localhost:30005:51.47:-0.46"

# Multiple sources  
./skyview -sources "site1:North:192.168.1.100:30005:51.50:-0.46,site2:South:192.168.1.101:30005:51.44:-0.46"

# Using configuration file
./skyview -config config.json

Using Debian Package

# Install
sudo dpkg -i skyview_2.0.0_amd64.deb

# Configure 
sudo nano /etc/skyview/config.json

# Start service
sudo systemctl start skyview
sudo systemctl enable skyview

⚙️ Configuration

Configuration File Structure

{
  "server": {
    "host": "",
    "port": 8080
  },
  "sources": [
    {
      "id": "primary",
      "name": "Primary Receiver",
      "host": "localhost",
      "port": 30005,
      "latitude": 51.4700,
      "longitude": -0.4600,
      "altitude": 50.0,
      "enabled": true
    }
  ],
  "settings": {
    "history_limit": 1000,
    "stale_timeout": 60,
    "update_rate": 1
  }
}

Command Line Options

skyview [options]

Options:
  -config string
        Configuration file path
  -server string
        Server address (default ":8080")  
  -sources string
        Comma-separated Beast sources (id:name:host:port:lat:lon)
  -verbose
        Enable verbose logging

🗺️ Web Interface

Access the web interface at http://localhost:8080

Views Available:

  • Map View: Interactive aircraft tracking with receiver locations
  • Table View: Sortable aircraft data with multi-source information
  • Statistics: Real-time metrics and historical charts
  • Coverage: Signal strength analysis and heatmaps
  • 3D Radar: Three-dimensional aircraft visualization

🔧 Building

Prerequisites

  • Go 1.21 or later
  • Make

Build Commands

make build          # Build binary
make deb            # Create Debian package  
make docker-build   # Build Docker image
make test           # Run tests
make clean          # Clean artifacts

🐳 Docker

# Build
make docker-build

# Run  
docker run -p 8080:8080 -v $(pwd)/config.json:/app/config.json skyview

📊 API Reference

REST Endpoints

  • GET /api/aircraft - All aircraft data
  • GET /api/sources - Data source information
  • GET /api/stats - System statistics
  • GET /api/coverage/{sourceId} - Coverage analysis
  • GET /api/heatmap/{sourceId} - Signal heatmap

WebSocket

  • ws://localhost:8080/ws - Real-time updates

🛠️ Development

Project Structure

skyview/
├── cmd/skyview/           # Main application
├── internal/
│   ├── beast/             # Beast format parser
│   ├── modes/             # Mode S decoder  
│   ├── merger/            # Multi-source merger
│   ├── client/            # TCP clients
│   └── server/            # HTTP/WebSocket server
├── debian/                # Debian packaging
└── scripts/               # Build scripts

Development Commands

make dev            # Run in development mode
make format         # Format code
make lint           # Run linter  
make check          # Run all checks

📦 Deployment

Systemd Service (Debian/Ubuntu)

# Install package
sudo dpkg -i skyview_2.0.0_amd64.deb

# Configure sources in /etc/skyview/config.json
# Start service
sudo systemctl start skyview
sudo systemctl enable skyview

# Check status
sudo systemctl status skyview
sudo journalctl -u skyview -f

Manual Installation

# Build binary
make build

# Create user and directories
sudo useradd -r -s /bin/false skyview
sudo mkdir -p /etc/skyview /var/lib/skyview /var/log/skyview
sudo chown skyview:skyview /var/lib/skyview /var/log/skyview

# Install binary and config
sudo cp build/skyview /usr/bin/
sudo cp config.example.json /etc/skyview/config.json
sudo chown root:skyview /etc/skyview/config.json
sudo chmod 640 /etc/skyview/config.json

# Create systemd service
sudo cp debian/lib/systemd/system/skyview.service /lib/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable skyview
sudo systemctl start skyview

🔒 Security

The application includes security hardening:

  • Runs as unprivileged user
  • Restricted filesystem access
  • Network isolation where possible
  • Systemd security features enabled

📄 License

MIT License - see LICENSE file for details.

🤝 Contributing

  1. Fork the repository
  2. Create feature branch
  3. Make changes with tests
  4. Submit pull request

🆘 Support


SkyView - Professional multi-source ADS-B tracking with Beast format support.