Skip to content

Commit 2fce274

Browse files
committed
breakout themes to individual files, significant improvement to matrix and classic themes
1 parent 32ff72a commit 2fce274

34 files changed

Lines changed: 3667 additions & 129 deletions

README.md

Lines changed: 56 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,14 @@ A dual-interface flight information display system featuring both a modern web U
2626
## Features
2727

2828
- **Web Interface**: Modern Next.js 15 application with photorealistic split-flap display animations
29+
- **Multiple Themes**: 7 unique themes including Airport Classic, Modern, Minimalist, Retro Terminal, High Contrast, Matrix (with animated digital rain), and Super Thin
30+
- **Theme Persistence**: User preferences saved in browser localStorage with light/dark/system mode support
2931
- **Terminal UI**: Blessed-based TUI for command-line flight monitoring
3032
- **Real-time Updates**: Auto-refreshing flight data with dynamic status changes
3133
- **Multiple Data Providers**: Support for 8+ flight data APIs with intelligent fallback
3234
- **Automatic Route Enrichment**: Missing flight details are automatically fetched from route providers
3335
- **Airport Information**: Detailed airport data including location, timezone, and local time
36+
- **Enhanced Display**: ICAO codes shown with city names, "????" for en-route flights, proper sorting by time and status
3437
- **Global CLI Tools**: Three installable command-line utilities for different use cases
3538
- **Production Docker Support**: Multi-stage builds with Next.js standalone output
3639
- **Complete CI/CD Pipeline**: Automated testing, Docker builds, and GHCR publishing
@@ -99,6 +102,35 @@ docker run -p 3000:3000 --env-file .env.local flightboard:latest
99102
npm install -g flightboard
100103
```
101104

105+
## Themes
106+
107+
FlightBoard includes 7 beautifully crafted themes, each with light and dark mode support:
108+
109+
1. **Airport Classic** - Traditional split-flap board aesthetic with mechanical animations
110+
2. **Modern** - Clean, contemporary design with smooth animations
111+
3. **Minimalist** - Focus on content with subtle design elements
112+
4. **Retro Terminal** - Green phosphor CRT terminal style
113+
5. **High Contrast** - Maximum readability with stark contrasts
114+
6. **Matrix** - Cyberpunk theme with animated digital rain background featuring golden airplane symbols
115+
7. **Super Thin** - Ultra-compact terminal style with minimal spacing
116+
117+
### Theme Configuration
118+
119+
Set available themes via environment variable:
120+
121+
```bash
122+
# In .env.local
123+
AVAILABLE_THEMES=airport,modern,minimalist,retro,highcontrast,matrix,superthin
124+
125+
# Or use a subset
126+
AVAILABLE_THEMES=airport,modern,matrix
127+
```
128+
129+
Themes remember user preferences in browser localStorage including:
130+
- Selected theme
131+
- Light/dark/system color mode
132+
- Automatic theme application on page load
133+
102134
## Usage
103135

104136
### Command Line Tools
@@ -117,6 +149,15 @@ npm run flightboard-web
117149

118150
Open [http://localhost:3000](http://localhost:3000) in your browser.
119151

152+
**Web Interface Features:**
153+
- Theme selector dropdown with live preview
154+
- Light/dark/system mode toggle
155+
- Responsive split-flap displays
156+
- Real-time clock showing local, airport, and UTC time
157+
- Tabbed interface for departures and arrivals
158+
- Flight status badges with appropriate colors
159+
- Automatic sorting by time and status (active flights first)
160+
120161
#### `flightboard-tui` - Terminal UI
121162

122163
Run the TUI application:
@@ -205,9 +246,10 @@ cp env.example .env.local
205246
- Requires paid subscription
206247

207248
3. **AviationStack**
208-
- Sign up: [aviationstack.com](https://aviationstack.com/signup/free)
249+
- Sign up: [Get your API key here](https://apilayer.com?fpr=kevin31&fp_sid=flightbo) *
209250
- Free tier: 100 requests/month
210251
- `AVIATIONSTACK_API_KEY=your_key`
252+
- \* *Affiliate link - helps support FlightBoard development*
211253

212254
4. **FlightRadar24**
213255
- Commercial service: [flightradar24.com](https://www.flightradar24.com/commercial-services/data-feeds)
@@ -416,8 +458,10 @@ flightboard/
416458

417459
- **Next.js 15**: React framework with App Router
418460
- **TypeScript**: Type-safe development
419-
- **Tailwind CSS**: Utility-first styling
461+
- **Tailwind CSS**: Utility-first styling with CSS variables for theming
420462
- **shadcn/ui**: High-quality UI components
463+
- **React Context API**: Theme state management
464+
- **Canvas API**: Matrix rain animation
421465
- **Blessed**: Terminal UI library
422466
- **Commander**: CLI argument parsing
423467
- **Chalk**: Terminal string styling
@@ -486,6 +530,16 @@ If the default port 3000 is in use:
486530
- Change the port in Docker: `docker run -p 3001:3000 ...`
487531
- For development: `PORT=3001 npm run dev`
488532

533+
## Support the Project
534+
535+
FlightBoard is open source and free to use. If you find it useful, consider:
536+
- Using our affiliate links when signing up for API services (marked with \*)
537+
- Contributing code or documentation
538+
- Reporting bugs and suggesting features
539+
- Sharing the project with others
540+
541+
Affiliate commissions help us maintain and improve FlightBoard. Thank you for your support!
542+
489543
## Acknowledgments
490544

491545
- Airport data provided by [Airframes.io](https://airframes.io)

env.example

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,22 @@ AVIATION_EDGE_API_KEY=
5555
# ============================================================================
5656
# - adsb.im: Free flight schedule lookup by callsign and position (no API key required)
5757
# - adsb.lol: Free real-time ADS-B data with geographic search (no API key required)
58-
# - OpenSky Network: Free but with rate limits (no API key required)
58+
# - OpenSky Network: Free but with rate limits (no API key required)
59+
60+
# ============================================================================
61+
# UI THEME CONFIGURATION
62+
# ============================================================================
63+
# Available themes (comma-separated list)
64+
# Options: airport, modern, ocean, forest, sunset, matrix, superthin
65+
# Leave empty to enable all themes
66+
# Default: all themes enabled
67+
NEXT_PUBLIC_AVAILABLE_THEMES=airport,modern,ocean,forest,sunset,matrix,superthin
68+
69+
# Default theme (must be one of the available themes)
70+
# Default: airport
71+
NEXT_PUBLIC_DEFAULT_THEME=airport
72+
73+
# Default color mode
74+
# Options: system, light, dark
75+
# Default: system
76+
NEXT_PUBLIC_DEFAULT_COLOR_MODE=system

0 commit comments

Comments
 (0)