skyview/CLAUDE.md
Ole-Morten Duesund 2d7fda717c Bump version to 0.0.3
Update all version references in preparation for v0.0.3 release:
- Debian package control file
- Manual pages for skyview and beast-dump
- Web interface header display
- README installation instructions
- Documentation examples

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-24 21:59:46 +02:00

4.4 KiB

SkyView Development Guidelines

This document outlines coding standards, architectural principles, and development practices for the SkyView ADS-B aircraft tracking system.

Core Development Principles

KISS Principle

  • Keep It Simple Stupid - avoid unnecessary complexity
  • Choose straightforward solutions over clever ones
  • Prioritize readability and maintainability
  • Don't over-engineer features

Quality Standards

  • Error Handling: Aviation applications require reliability - implement comprehensive error handling
  • Testing: Always update relevant tests when modifying code
  • Documentation: Code must be well-documented with explanations of WHY, not just what
  • Validation: Shell scripts must pass shellcheck validation

SkyView Architecture Guidelines

Core Features

  • Multi-source Data Fusion: Primary feature - use signal strength for conflict resolution
  • Embedded Resources: Prefer embedded SQLite ICAO database and static assets over external dependencies
  • Real-time Performance: Optimize for low-latency WebSocket updates
  • Scalability: Support 100+ concurrent aircraft tracking smoothly

Code Organization

Backend (Go)

  • beast: Raw ADS-B message parsing from TCP streams
  • modes: Mode S/ADS-B message decoding and aircraft data extraction
  • merger: Multi-source data fusion with conflict resolution
  • server: HTTP/WebSocket server with API endpoints
  • client: Connection management for Beast format sources

Frontend (JavaScript)

  • aircraft-manager: Aircraft state management and display logic
  • map-manager: Leaflet map integration and geographic operations
  • ui-manager: User interface controls and event handling
  • websocket: Real-time data streaming from server

Performance Requirements

Message Processing

  • High Throughput: Handle 1000+ messages/second per source
  • Non-blocking: WebSocket broadcasting must not block on slow clients
  • Memory Bounds: Configurable history limits prevent unbounded growth
  • Low CPU: Maintain efficient operation under normal load

Database Operations

  • Indexing: Use proper indexes to avoid N+1 queries
  • Fast Lookups: ICAO country resolution must be efficient
  • Bounded History: Implement automatic cleanup of stale data

Documentation Standards

Required Documentation

  • Architecture: Keep docs/ARCHITECTURE.md current with system design changes
  • User Guide: Maintain up-to-date README.md with features and usage instructions
  • External References: Link to ICAO docs, ADS-B standards, and other resources
  • Code Comments: Explain complex algorithms, especially CPR decoding and data fusion logic

Documentation Updates

  • Update architecture docs BEFORE merging structural changes
  • Include usage examples for new features
  • Document configuration options and their effects
  • Explain performance implications of architectural decisions

Repository and Tooling

Version Control

  • Repository: This project uses Forgejo, not GitHub
  • Tooling Preference:
    1. forgejo-mcp (Model Context Protocol integration)
    2. fj CLI client (fallback for operations not supported by MCP)
  • Prohibited Tools: Do not use gh or other GitHub-oriented tools

Release Management

  • Use semantic versioning (e.g., v0.0.3)
  • Include Debian package builds in releases
  • Provide comprehensive release notes with feature descriptions
  • Tag releases properly for easy version tracking

Aviation Domain Considerations

Data Accuracy

  • Position validation is critical - implement impossible movement detection
  • Handle CPR decoding errors gracefully with recovery mechanisms
  • Validate aircraft categories and transponder information
  • Implement rate-limited logging for validation errors

Regulatory Compliance

  • Follow ICAO standards for ADS-B message interpretation
  • Respect aircraft privacy considerations in data display
  • Ensure accurate country identification from ICAO allocation tables
  • Document deviation from standards when necessary

User Safety

  • Never display obviously incorrect aircraft positions
  • Implement reasonable defaults for safety-critical features
  • Provide clear visual indicators for data quality and source reliability
  • Handle edge cases that could confuse air traffic interpretation

These guidelines ensure SkyView remains reliable, maintainable, and suitable for aviation use while supporting continued development and enhancement.