diff --git a/.gitignore b/.gitignore index a1bd4d4..902c831 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,10 @@ skyview build/ dist/ +# Debian package build artifacts +debian/usr/bin/skyview +debian/usr/bin/beast-dump + # Configuration config.json diff --git a/docs/CLAUDE.md b/CLAUDE.md similarity index 100% rename from docs/CLAUDE.md rename to CLAUDE.md diff --git a/Makefile b/Makefile index 29cb180..2f71042 100644 --- a/Makefile +++ b/Makefile @@ -1,13 +1,26 @@ -BINARY_NAME=skyview +PACKAGE_NAME=skyview BUILD_DIR=build VERSION=$(shell git describe --tags --always --dirty 2>/dev/null || echo "dev") +LDFLAGS=-w -s -X main.version=$(VERSION) -.PHONY: build clean run dev test lint deb deb-clean install-deps +.PHONY: build build-all clean run dev test lint deb deb-clean install-deps +# Build main skyview binary build: - @echo "Building $(BINARY_NAME)..." + @echo "Building skyview..." @mkdir -p $(BUILD_DIR) - go build -ldflags="-w -s -X main.version=$(VERSION)" -o $(BUILD_DIR)/$(BINARY_NAME) ./cmd/skyview + go build -ldflags="$(LDFLAGS)" -o $(BUILD_DIR)/skyview ./cmd/skyview + +# Build beast-dump utility binary +build-beast-dump: + @echo "Building beast-dump..." + @mkdir -p $(BUILD_DIR) + go build -ldflags="$(LDFLAGS)" -o $(BUILD_DIR)/beast-dump ./cmd/beast-dump + +# Build all binaries +build-all: build build-beast-dump + @echo "Built all binaries successfully:" + @ls -la $(BUILD_DIR)/ clean: @echo "Cleaning..." diff --git a/README.md b/README.md index 645e56c..2a3602b 100644 --- a/README.md +++ b/README.md @@ -17,13 +17,14 @@ A high-performance, multi-source ADS-B aircraft tracking application that connec - **Multi-view Dashboard**: Map, Table, Statistics, Coverage, and 3D Radar views ### Professional Visualization -- **Signal Analysis**: Signal strength heatmaps and coverage analysis +- **Signal Analysis**: Signal strength visualization 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**: Live charts and metrics +- **3D Radar View**: Three.js-powered 3D visualization +- **Statistics Dashboard**: Aircraft count timeline *(additional charts under construction)* š§ - **Smart Origin**: Auto-calculated map center based on receiver locations - **Map Controls**: Center on aircraft, reset to origin, toggle overlays +- **Signal Heatmaps**: Coverage heatmap visualization *(under construction)* š§ ### Aircraft Data - **Complete Mode S Decoding**: Position, velocity, altitude, heading @@ -51,7 +52,7 @@ A high-performance, multi-source ADS-B aircraft tracking application that connec ```bash # Install -sudo dpkg -i skyview_2.0.0_amd64.deb +sudo dpkg -i skyview_0.0.2_amd64.deb # Configure sudo nano /etc/skyview/config.json @@ -119,9 +120,18 @@ 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**: Live metrics and historical charts -- **Coverage**: Signal strength analysis and heatmaps -- **3D Radar**: Three-dimensional aircraft visualization +- **Statistics**: Aircraft count timeline *(additional charts planned)* š§ +- **Coverage**: Signal strength analysis *(heatmaps under construction)* š§ +- **3D Radar**: Three-dimensional aircraft visualization *(controls under construction)* š§ + +### š§ Features Under Construction +Some advanced features are currently in development: +- **Message Rate Charts**: Per-source message rate visualization +- **Signal Strength Distribution**: Signal strength histogram analysis +- **Altitude Distribution**: Aircraft altitude distribution charts +- **Interactive Heatmaps**: Leaflet.heat-based coverage heatmaps +- **3D Radar Controls**: Interactive 3D view manipulation (reset, auto-rotate, range) +- **Enhanced Error Notifications**: User-friendly toast notifications for issues ## š§ Building @@ -193,7 +203,7 @@ make check # Run all checks ### Systemd Service (Debian/Ubuntu) ```bash # Install package -sudo dpkg -i skyview_2.0.0_amd64.deb +sudo dpkg -i skyview_0.0.2_amd64.deb # Configure sources in /etc/skyview/config.json # Start service @@ -249,9 +259,9 @@ MIT License - see [LICENSE](LICENSE) file for details. ## š Support -- [GitHub Issues](https://github.com/skyview/skyview/issues) -- [Documentation](https://github.com/skyview/skyview/wiki) -- [Configuration Examples](https://github.com/skyview/skyview/tree/main/examples) +- [Issues](https://kode.naiv.no/olemd/skyview/issues) +- [Documentation](https://kode.naiv.no/olemd/skyview/wiki) +- [Configuration Examples](https://kode.naiv.no/olemd/skyview/src/branch/main/examples) --- diff --git a/assets/assets.go b/assets/assets.go index 3cef7d0..54e1c4a 100644 --- a/assets/assets.go +++ b/assets/assets.go @@ -6,7 +6,7 @@ // - index.html: Main web interface with aircraft tracking map // - css/style.css: Styling for the web interface // - js/app.js: JavaScript client for WebSocket communication and map rendering -// - aircraft-icon.svg: SVG icon for aircraft markers +// - icons/*.svg: Type-specific SVG icons for aircraft markers // - favicon.ico: Browser icon // // The embedded filesystem is used by the HTTP server to serve static content @@ -16,11 +16,11 @@ package assets import "embed" // Static contains all embedded static web assets from the static/ directory. -// +// // Files are embedded at build time and can be accessed using the standard // fs.FS interface. Path names within the embedded filesystem preserve the // directory structure, so files are accessed as: -// - "static/index.html" +// - "static/index.html" // - "static/css/style.css" // - "static/js/app.js" // - etc. diff --git a/assets/static/aircraft-icon.svg b/assets/static/aircraft-icon.svg deleted file mode 100644 index f2489d3..0000000 --- a/assets/static/aircraft-icon.svg +++ /dev/null @@ -1,5 +0,0 @@ - \ No newline at end of file diff --git a/assets/static/css/style.css b/assets/static/css/style.css index 26ce441..b34a241 100644 --- a/assets/static/css/style.css +++ b/assets/static/css/style.css @@ -195,8 +195,8 @@ body { .display-options { position: absolute; - top: 10px; - left: 10px; + top: 320px; + right: 10px; z-index: 1000; background: rgba(45, 45, 45, 0.95); border: 1px solid #404040; @@ -417,6 +417,115 @@ body { color: #ffffff !important; } +/* Under Construction Styles */ +.under-construction { + color: #ff8c00; + font-size: 0.8em; + font-weight: normal; + margin-left: 8px; +} + +.construction-notice { + background: rgba(255, 140, 0, 0.1); + border: 1px solid #ff8c00; + border-radius: 4px; + padding: 8px; + margin: 8px 0; + font-size: 0.9em; + color: #ff8c00; + text-align: center; +} + +/* Toast Notifications */ +.toast-notification { + position: fixed; + top: 20px; + right: 20px; + background: rgba(40, 40, 40, 0.95); + border: 1px solid #555; + border-radius: 6px; + padding: 12px 20px; + color: #ffffff; + font-size: 0.9em; + max-width: 300px; + z-index: 10000; + transform: translateX(320px); + transition: transform 0.3s ease-in-out; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); +} + +.toast-notification.error { + border-color: #ff8c00; + background: rgba(255, 140, 0, 0.1); + color: #ff8c00; +} + +.toast-notification.show { + transform: translateX(0); +} + +/* Version Info */ +.version-info { + font-size: 0.6em; + color: #888; + font-weight: normal; + margin-left: 8px; +} + +/* Repository Link */ +.repo-link { + color: #888; + text-decoration: none; + font-size: 0.7em; + margin-left: 6px; + opacity: 0.6; + transition: opacity 0.2s ease, color 0.2s ease; +} + +.repo-link:hover { + color: #4a9eff; + opacity: 1; + text-decoration: none; +} + +/* Collapsible Sections */ +.collapsible-header { + cursor: pointer; + user-select: none; + display: flex; + justify-content: space-between; + align-items: center; + margin: 0 0 8px 0; + padding: 4px 0; + border-bottom: 1px solid #444; +} + +.collapsible-header:hover { + color: #4a9eff; +} + +.collapse-indicator { + font-size: 0.8em; + transition: transform 0.2s ease; + color: #888; +} + +.collapsible-header.collapsed .collapse-indicator { + transform: rotate(-90deg); +} + +.collapsible-content { + overflow: hidden; + transition: max-height 0.3s ease; + max-height: 200px; +} + +.collapsible-content.collapsed { + max-height: 0; + margin: 0; + padding: 0; +} + .leaflet-popup-tip { background: #2d2d2d !important; } diff --git a/assets/static/index.html b/assets/static/index.html index 9849126..0a00509 100644 --- a/assets/static/index.html +++ b/assets/static/index.html @@ -28,7 +28,7 @@