11# FlightBoard
22
33![ CI] ( https://github.com/airframes/flightboard/workflows/CI/badge.svg )
4- ![ Docker] ( https://img.shields.io/badge/docker-ready-blue )
4+ ![ Docker Publish] ( https://github.com/airframes/flightboard/workflows/Docker%20Publish/badge.svg )
5+ ![ Docker Image] ( https://ghcr-badge.egpl.dev/airframes/flightboard/latest_tag?label=docker%20image )
56![ Node.js] ( https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen )
67![ TypeScript] ( https://img.shields.io/badge/typescript-%5E5.0.0-blue )
78![ Next.js] ( https://img.shields.io/badge/next.js-15.5.2-black )
@@ -11,29 +12,30 @@ A dual-interface flight information display system featuring both a modern web U
1112
1213## 🚀 Recent Updates
1314
14- - ** Automatic Route Enrichment ** : Flights missing airport details are automatically enriched with route data
15- - ** Docker Support ** : Complete containerization with Dockerfile and docker-compose
16- - ** CI/CD Pipeline ** : GitHub Actions workflow for linting, testing, and Docker builds
17- - ** Multi-Provider Routes ** : Routes command now checks all providers by default, stops on first success
18- - ** adsb.lol Routes Support ** : Routes command now supports both adsb.im and adsb.lol providers
19- - ** adsb.lol Provider ** : Added new free provider for real-time ADS-B data with geographic search
20- - ** Verbose Request Logging ** : Routes command now shows full request details with ` -v ` flag
21- - ** Flight Route Lookup ** : New ` routes ` command in ` flightboard-lookup ` for querying adsb.im
22- - ** Global CLI Tools ** : All commands now installable globally via ` npm link `
23- - ** TypeScript CLI ** : Commands run directly from TypeScript source with tsx
15+ - ** Production Ready ** : Fixed all TypeScript compilation errors for successful Docker builds
16+ - ** Automatic Route Enrichment ** : Flights missing airport details are automatically enriched with route data from adsb.im/adsb.lol
17+ - ** Complete Docker Support ** : Multi-stage Dockerfile with optimized production builds and docker-compose configuration
18+ - ** CI/CD Pipeline ** : Dual GitHub Actions workflows for CI testing and automatic Docker publishing to GHCR
19+ - ** Multi-Provider Route Checking ** : Routes command intelligently checks all providers, stops on first success
20+ - ** Enhanced adsb.lol Integration ** : Full support for route lookup endpoint matching adsb.im API
21+ - ** TypeScript Improvements ** : Resolved all type safety issues for production builds
22+ - ** Standalone Next.js Output ** : Optimized Docker images using Next.js standalone mode
23+ - ** Multi-Platform Docker Images ** : Automated builds for amd64 and arm64 architectures
24+ - ** Automatic GitHub Releases ** : Version tags trigger Docker builds and create releases
2425
2526## Features
2627
27- - ** Web Interface** : Modern Next.js application with photorealistic split-flap display animations
28+ - ** Web Interface** : Modern Next.js 15 application with photorealistic split-flap display animations
2829- ** Terminal UI** : Blessed-based TUI for command-line flight monitoring
29- - ** Real-time Updates** : Auto-refreshing flight data with status changes
30- - ** Multiple Data Providers** : Support for 8+ flight data APIs
30+ - ** Real-time Updates** : Auto-refreshing flight data with dynamic status changes
31+ - ** Multiple Data Providers** : Support for 8+ flight data APIs with intelligent fallback
3132- ** Automatic Route Enrichment** : Missing flight details are automatically fetched from route providers
32- - ** Airport Information** : Detailed airport data including location and timezone
33- - ** Global CLI Tools** : Installable command-line utilities for flight lookups
34- - ** Docker Support** : Complete containerization for easy deployment
35- - ** CI/CD Pipeline** : Automated testing and validation with GitHub Actions
36- - ** Multi-Provider Routes** : Intelligent route lookup across multiple data sources
33+ - ** Airport Information** : Detailed airport data including location, timezone, and local time
34+ - ** Global CLI Tools** : Three installable command-line utilities for different use cases
35+ - ** Production Docker Support** : Multi-stage builds with Next.js standalone output
36+ - ** Complete CI/CD Pipeline** : Automated testing, Docker builds, and GHCR publishing
37+ - ** Smart Provider Selection** : Configurable priority system with automatic fallback
38+ - ** TypeScript Throughout** : Full type safety in both web and CLI applications
3739
3840## Requirements
3941
@@ -59,6 +61,21 @@ npm link
5961
6062### Using Docker
6163
64+ #### Pull from GitHub Container Registry
65+
66+ ``` bash
67+ # Pull the latest stable version
68+ docker pull ghcr.io/airframes/flightboard:latest
69+
70+ # Or pull a specific version
71+ docker pull ghcr.io/airframes/flightboard:v1.0.0
72+
73+ # Run the container
74+ docker run -p 3000:3000 --env-file .env.local ghcr.io/airframes/flightboard:latest
75+ ```
76+
77+ #### Build Locally
78+
6279``` bash
6380# Using Docker Compose (recommended)
6481docker-compose up
@@ -317,12 +334,40 @@ FlightBoard includes a comprehensive GitHub Actions workflow for continuous inte
317334- ** Automated Testing** : Executes test suite on every PR and push
318335- ** Docker Validation** : Builds Docker image to ensure containerization works
319336- ** Pull Request Checks** : Automatically runs on all pull requests
337+ - ** Automatic Docker Publishing** : Tags trigger multi-platform image builds
338+ - ** GitHub Container Registry** : Images published to ghcr.io/airframes/flightboard
339+ - ** Release Automation** : Version tags create GitHub releases with changelogs
340+
341+ ### GitHub Actions Workflows
342+
343+ The project includes two main workflows:
320344
321- ### GitHub Actions Workflow
345+ 1 . ** CI Pipeline** (` ci.yml ` )
346+ - Runs on all pull requests
347+ - Pushes to ` main ` and ` develop ` branches
348+ - Tests on Node.js 18.x and 20.x
349+ - Validates Docker builds
322350
323- The CI pipeline runs automatically on:
324- - All pull requests
325- - Pushes to ` main ` and ` develop ` branches
351+ 2 . ** Docker Publish** (` docker-publish.yml ` )
352+ - Triggers on version tags (e.g., ` v1.0.0 ` )
353+ - Builds multi-platform images (amd64, arm64)
354+ - Publishes to GitHub Container Registry
355+ - Creates GitHub releases automatically
356+
357+ ### Creating a Release
358+
359+ To create a new release:
360+
361+ ``` bash
362+ # Tag the version
363+ git tag v1.0.0
364+ git push origin v1.0.0
365+ ```
366+
367+ This will automatically:
368+ - Build and publish Docker images to GHCR
369+ - Create a GitHub release
370+ - Tag images with version numbers and ` latest `
326371
327372## Project Structure
328373
@@ -397,8 +442,28 @@ npm link
397442
398443MIT License - see [ LICENSE] ( LICENSE ) file for details
399444
445+ ## Troubleshooting
446+
447+ ### Docker Build Issues
448+ If you encounter TypeScript compilation errors during Docker builds:
449+ 1 . Ensure all TypeScript types are properly defined
450+ 2 . Check that ` next.config.ts ` only contains valid Next.js configuration options
451+ 3 . Verify that all imported modules exist and are properly typed
452+
453+ ### Provider Connection Issues
454+ - Check API keys are correctly set in ` .env.local `
455+ - Verify network connectivity to provider endpoints
456+ - Review provider-specific rate limits
457+ - Use ` flightboard-lookup ` to test individual providers
458+
459+ ### Port Conflicts
460+ If the default port 3000 is in use:
461+ - Change the port in Docker: ` docker run -p 3001:3000 ... `
462+ - For development: ` PORT=3001 npm run dev `
463+
400464## Acknowledgments
401465
402466- Airport data provided by [ Airframes.io] ( https://airframes.io )
403- - Community ADS-B data from various open sources
467+ - Community ADS-B data from adsb.im and adsb.lol
468+ - Flight data from various commercial and open-source providers
404469- UI inspiration from classic airport split-flap displays
0 commit comments