Skip to content

Commit 13f6fbe

Browse files
committed
update readme
1 parent 5d43fbc commit 13f6fbe

1 file changed

Lines changed: 89 additions & 24 deletions

File tree

README.md

Lines changed: 89 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
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)
6481
docker-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

398443
MIT 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

Comments
 (0)