https://github.com/ejfox/noaa-sat-cli
Earth observation CLI with real-time NOAA satellite imagery, archival system, and cyberpunk terminal interface
https://github.com/ejfox/noaa-sat-cli
Last synced: 10 months ago
JSON representation
Earth observation CLI with real-time NOAA satellite imagery, archival system, and cyberpunk terminal interface
- Host: GitHub
- URL: https://github.com/ejfox/noaa-sat-cli
- Owner: ejfox
- Created: 2025-06-09T03:36:39.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-06-09T03:36:54.000Z (about 1 year ago)
- Last Synced: 2025-07-30T12:33:58.795Z (11 months ago)
- Language: TypeScript
- Size: 26.4 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# NOAA Satellite CLI
Earth observation command-line interface with real-time NOAA satellite imagery, archival system, and cyberpunk terminal interface.
```
██████╗ ███████╗ ███████╗
██╔═══██╗██╔════╝ ██╔═══██╗
████████║██████╗ ████████║
██╔═════╝██╔═══╝ ██╔═══██║
╚███████╗███████╗ ╚██████╔╝
╚══════╝╚══════╝ ╚═════╝
EARTH OBSERVATION CLI
```
## Features
- **Real-time NOAA GOES satellite imagery** (GOES18/19)
- **Hash-based deduplication** archival system
- **Multiple data sources**: NOAA, NASA EPIC, NASA MODIS/VIIRS
- **Cyberpunk ASCII terminal interface**
- **Quick one-liner commands** for rapid workflow
- **Automated cron-based archiving**
- **Multiple resolutions** up to 470MP (21696x21696)
## Quick Start
```bash
# Install dependencies
npm install
# Launch interactive terminal interface
npm run tui
# Quick commands
npm run quick grab # Capture latest image
npm run quick grab-max # Capture at max resolution (470MP)
npm run quick status # Show archive status
npm run quick help # Show all commands
```
## Data Sources
### NOAA GOES Satellites
- **GOES18**: Active geostationary satellite over Pacific
- **GOES19**: Active geostationary satellite over Atlantic
- **Channels**: GEOCOLOR, ABI-L2-MCMIPC, Sandwich, Day Cloud Phase Distinction, Air Mass, Fire Temperature
- **Resolutions**: 1808x1808 (3MP), 5424x5424 (29MP), 10848x10848 (118MP), 21696x21696 (470MP)
### NASA EPIC
- Deep space Earth view from DSCOVR satellite at L1 Lagrange point (1.5M km from Earth)
- Natural and enhanced color imagery
- Full disk Earth view updated ~daily
### NASA MODIS/VIIRS
- Terra/Aqua MODIS imagery
- Suomi NPP VIIRS imagery
- Regional downloads for USA, Europe, Asia, Africa, Australia
- True color and specialized band combinations
## Architecture
### Archive System
- **Hash-based deduplication**: MD5 hashing prevents duplicate storage
- **JSON metadata database**: Tracks all captured images with timestamps, satellites, channels
- **Automatic organization**: Images stored with descriptive filenames
- **Size tracking**: Monitor total archive size and image counts
### Timestamp Parsing
Fixed NOAA timestamp parsing to handle Julian day format (YYYYJJJHHMM) instead of standard dates.
### Error Handling
- Robust error handling for network timeouts
- Graceful degradation when satellites are offline
- Clear ASCII status indicators: [OK], [ERR], [*], [>>]
## CLI Usage
### Archive Commands
```bash
npm run archive capture # Capture latest GOES18 GEOCOLOR
npm run archive capture-all # Capture all satellites/channels
npm run archive status # Show archive statistics
npm run archive recent # List recent captures
```
### EPIC Commands
```bash
npm run epic latest # Download latest EPIC image
npm run epic download-all # Download all available images
npm run epic info # Show image metadata
```
### NASA Earth Observation
```bash
npm run nasa download usa # Download US regional image
npm run nasa download europe 2024-01-15 # Download Europe for specific date
npm run nasa regions # List available regions
```
### Interactive TUI
```bash
npm run tui # Launch cyberpunk terminal interface
```
## Automated Archiving
Set up automated hourly captures with cron:
```bash
# Make script executable
chmod +x cron-archive.sh
# Add to crontab for hourly captures
crontab -e
# Add this line:
0 * * * * /path/to/noaa-sat-cli/cron-archive.sh
```
## Project Structure
```
src/
├── api.ts # Core NOAA API with fixed Julian day parsing
├── archive.ts # Hash-based archival system
├── tui.ts # Cyberpunk terminal interface
├── quick.ts # One-liner quick commands
├── epic.ts # NASA EPIC deep space imagery
├── nasa-eo.ts # NASA MODIS/VIIRS regional imagery
└── index.ts # Main CLI entry point
cron-archive.sh # Automated capture script
```
## Configuration
### Environment Variables
- `ARCHIVE_DIR`: Custom archive directory (default: `./archive`)
- `LOG_LEVEL`: Logging verbosity (default: `info`)
### Resolution Options
- `1808x1808`: 3MP - Fast downloads, good for timelapses
- `5424x5424`: 29MP - Standard quality, balanced size/detail
- `10848x10848`: 118MP - High quality, larger files
- `21696x21696`: 470MP - Maximum quality, very large files
## Technical Notes
### GOES Satellite Status
- **GOES16**: Offline (2024)
- **GOES18**: Active over Pacific Ocean
- **GOES19**: Active over Atlantic Ocean
### NASA GIBS Processing Delay
NASA GIBS requires a 2-day offset from current date due to processing time.
### Deduplication Algorithm
Uses MD5 hashing to identify duplicate images and avoid storing identical captures, essential for automated archiving.
## Cyberpunk Aesthetic
All interfaces use ASCII art and ANSI colors with a "unicode cyberpunk ASCII 90s" aesthetic:
- No emoji, only ASCII indicators
- Cyberpunk color scheme (cyan, magenta, green, red)
- ASCII art banners and status displays
- Terminal-native interface design
## License
MIT License - See LICENSE file for details
## Contributing
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Test with `npm run tui` and `npm run quick`
5. Submit a pull request
---
*Earth observation for the cyberpunk generation.*