diff --git a/CLAUDE.md b/CLAUDE.md index ee350a6..ef5ff54 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co ## Project Overview -Pixel View is a retro SNES-style side-view flight tracker that displays ADS-B aircraft data with custom pixel art sprites. It's a standalone sub-project within the larger IceNet-ADS-B system. +ADS-Bit is a retro SNES-style side-view flight tracker that displays ADS-B aircraft data with custom pixel art sprites. ## Running the Server @@ -28,12 +28,13 @@ Access at http://localhost:{web_port} (configured in config.json) - Parses SBS/BaseStation format messages from receivers - Broadcasts flight data to connected WebSocket clients every 1 second - Cleans up flights not seen in 60 seconds - - Serves static files and receiver location API + - Serves static files, admin panel, setup wizard, and APIs + - Authentication via bcrypt password hashing and session cookies - **config.json** - Configuration file for receiver and location settings - See CONFIG.md for full documentation -- **pixel-view.js** - JavaScript rendering engine (Canvas-based) +- **ads-bit.js** - JavaScript rendering engine (Canvas-based) - Handles WebSocket connection and flight data updates - Renders 10 FPS retro-style canvas animation - Layer order (bottom to top): sky gradient → clouds → sun → moon → directional background → grid → aircraft → labels @@ -43,6 +44,10 @@ Access at http://localhost:{web_port} (configured in config.json) - **index.html** - Main HTML interface with embedded styles +- **admin/** - Admin panel (login + tabbed settings UI) + +- **setup/** - First-run setup wizard (multi-step configuration) + ### Sprite Assets All PNG sprites face right (eastward) and are flipped in-canvas for westbound aircraft: @@ -79,6 +84,7 @@ The viewer can rotate between cardinal directions (N/E/S/W), showing aircraft in Python packages required: - aiohttp (web server and WebSocket) - netifaces (network interface scanning) +- bcrypt (password hashing) No package.json - frontend is vanilla JavaScript with no build step. diff --git a/CONFIG.md b/CONFIG.md index b5632f2..5f127f1 100644 --- a/CONFIG.md +++ b/CONFIG.md @@ -1,6 +1,6 @@ -# Pixel View Configuration Guide +# ADS-Bit Configuration Guide -This guide explains how to configure Pixel View for your ADS-B receiver setup. +This guide explains how to configure ADS-Bit for your ADS-B receiver setup. ## Configuration File @@ -55,7 +55,7 @@ Edit `config.json` to customize your installation: ## Background Themes -Pixel View uses directional background images to show the horizon view from your receiver location. Backgrounds are organized into themes stored in the `backgrounds/` folder. +ADS-Bit uses directional background images to show the horizon view from your receiver location. Backgrounds are organized into themes stored in the `backgrounds/` folder. ### Available Themes @@ -228,29 +228,29 @@ All aircraft sprites should face **right (east)** - the code flips them automati ## Running as a Service (Auto-Start) -To run Pixel-ADSB automatically on boot, create a systemd service: +To run ADS-Bit automatically on boot, create a systemd service: ### 1. Create the service file ```bash -sudo nano /etc/systemd/system/pixel-adsb.service +sudo nano /etc/systemd/system/ads-bit.service ``` Add this content (adjust paths as needed): ```ini [Unit] -Description=Pixel-ADSB Flight Tracker +Description=ADS-Bit Flight Tracker After=network.target [Service] Type=simple -WorkingDirectory=/path/to/pixel-view -ExecStart=/usr/bin/python3 /path/to/pixel-view/server.py +WorkingDirectory=/path/to/ADS-BIT +ExecStart=/usr/bin/python3 /path/to/ADS-BIT/server.py Restart=always RestartSec=5 -StandardOutput=append:/var/log/pixel-adsb.log -StandardError=append:/var/log/pixel-adsb.log +StandardOutput=append:/var/log/ads-bit.log +StandardError=append:/var/log/ads-bit.log [Install] WantedBy=multi-user.target @@ -260,18 +260,18 @@ WantedBy=multi-user.target ```bash sudo systemctl daemon-reload -sudo systemctl enable pixel-adsb -sudo systemctl start pixel-adsb +sudo systemctl enable ads-bit +sudo systemctl start ads-bit ``` ### 3. Check status ```bash -sudo systemctl status pixel-adsb +sudo systemctl status ads-bit ``` ### 4. View logs ```bash -tail -f /var/log/pixel-adsb.log +tail -f /var/log/ads-bit.log ``` diff --git a/README.md b/README.md index e331e0e..cd003aa 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -# Pixel-ADSB +# ADS-Bit A retro SNES-style side-view flight tracker that displays ADS-B aircraft data with custom pixel art sprites. -![Pixel-ADSB Screenshot](screenshots/screenshot.png) +![ADS-Bit Screenshot](screenshots/screenshot.png) ## Features @@ -14,6 +14,8 @@ A retro SNES-style side-view flight tracker that displays ADS-B aircraft data wi - Directional view (N/E/S/W) with themed backgrounds - Auto-discovery of ADS-B receivers on your network - Canvas-based 10 FPS retro rendering +- Admin panel with password authentication +- First-run setup wizard ## Quick Start @@ -25,14 +27,11 @@ cd ADS-Bit # Install dependencies pip install -r requirements.txt -# Configure your location (required for weather and celestial positioning) -# Edit config.json and set your lat/lon coordinates - # Start the server python3 server.py ``` -Access at http://localhost:2001 +On first run, visit http://localhost:2001 and the setup wizard will guide you through configuration. ## Requirements @@ -42,7 +41,7 @@ Access at http://localhost:2001 ## Configuration -Edit `config.json` to customize your installation: +ADS-Bit uses a first-run setup wizard to configure your installation. You can also edit `config.json` directly: ```json { diff --git a/pixel-view.js b/ads-bit.js similarity index 99% rename from pixel-view.js rename to ads-bit.js index 0e6fb2f..607c6f8 100644 --- a/pixel-view.js +++ b/ads-bit.js @@ -1,5 +1,5 @@ -// Pixel ADS-B - Retro Side View -class PixelADSB { +// ADS-Bit - Retro Side View +class ADSBit { constructor() { this.canvas = document.getElementById('pixel-canvas'); this.ctx = this.canvas.getContext('2d'); @@ -618,7 +618,7 @@ class PixelADSB { async fetchReceiverLocation() { try { - // Fetch from same server that serves pixel-view + // Fetch from same server that serves ADS-Bit const response = await fetch('/api/receiver-location'); const data = await response.json(); this.receiverLat = data.lat; @@ -1970,4 +1970,4 @@ class PixelADSB { } // Initialize the app -const app = new PixelADSB(); +const app = new ADSBit(); diff --git a/index.html b/index.html index 9465e82..b010c5a 100644 --- a/index.html +++ b/index.html @@ -397,6 +397,6 @@ ☀ --:-- / 🌙 --:-- - + diff --git a/server.py b/server.py index f8db615..e8a1fb7 100755 --- a/server.py +++ b/server.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -"""Pixel ADS-B Server - Connects directly to ADS-B receivers""" +"""ADS-Bit Server - Connects directly to ADS-B receivers""" import asyncio import socket import json @@ -833,7 +833,7 @@ async def main(): """Main entry point""" global receivers, receiver_tasks - print("Pixel ADS-B Server Starting...") + print("ADS-Bit Server Starting...") load_config() diff --git a/start.sh b/start.sh index c92f7e3..4817afd 100755 --- a/start.sh +++ b/start.sh @@ -1,4 +1,4 @@ #!/bin/bash cd "$(dirname "$0")" -echo "Starting Pixel View ADS-B server..." +echo "Starting ADS-Bit server..." python3 server.py