A comprehensive toolkit for parsing and viewing NOTAMs (Notice to Airmen) from the Israeli Aviation Authority, featuring both a command-line interface and a modern web application.
npm run dev:webVisit http://localhost:5173 for an interactive NOTAM viewer with filtering, read/unread tracking, and statistics.
npm run parse -- -d 2025-01-15 -i LLBG- π Date Selection: View NOTAMs for today or tomorrow
- π’ ICAO Filtering: Multi-select filtering by Israeli airports/FIRs
- β Read/Unread Tracking: Mark NOTAMs as read with persistent storage
- π Statistics Dashboard: Real-time stats and completion tracking
- πΊοΈ Google Maps Integration: Clickable location links
- π± Responsive Design: Mobile-friendly Material-UI interface
- π Live Data Fetching: Direct from Israeli Aviation Authority
- π Advanced Filtering: By date, ICAO code, and NOTAM type
- π€ JSON Export: Structured data export capabilities
- π Summary Statistics: Quick overview of NOTAM data
- β° Automated Scheduling: Daily GitHub Actions for data updates
# Install CLI dependencies
npm install
# Install web application dependencies
npm run install:web
# Or install both
npm install && npm run install:web# Start development server
npm run dev:web
# Build for production
npm run build:web
# Build both CLI and web app
npm run build:allThe web application will be available at http://localhost:5173 with:
- Interactive NOTAM cards with read/unread status
- Real-time filtering by date and ICAO codes
- Statistics dashboard showing completion progress
- Mobile-responsive Material-UI design
Important: When using npm run parse, you must use -- to separate npm arguments from script arguments.
# Show all current NOTAMs
npm run parse
# Show NOTAMs valid on a specific date
npm run parse -- 2025-01-15
npm run parse -- --date 2025-01-15
npm run parse -- -d 2025-01-15# Filter by specific airport (Ben Gurion)
npm run parse -- -d 2025-01-15 -i LLBG
# Filter by NOTAM type (Aerodrome NOTAMs only)
npm run parse -- -d 2025-01-15 -t A
# Combine filters
npm run parse -- -d 2025-01-15 -i LLBG -t A
# Show summary statistics
npm run parse -- -s
# Export results to JSON file (automatically saved to results/ folder)
npm run parse -- -d 2025-01-15 -e notams.json-d, --date <date>: Flight date to filter NOTAMs (YYYY-MM-DD, DD/MM/YYYY, or DD-MM-YYYY)-i, --icao <code>: Filter by ICAO airport code (e.g., LLBG, LLLL)-t, --type <type>: Filter by NOTAM type (A=Aerodrome, C=En-route, R=Radar, N=Navigation)-e, --export <file>: Export filtered results to JSON file-s, --summary: Show summary statistics-h, --help: Show help message
- LLBG - Ben Gurion Airport (Tel Aviv)
- LLHA - Haifa Airport
- LLOV - Ovda Airport (Eilat)
- LLER - Ramon Airport (Eilat)
- LLLL - Tel Aviv FIR (Flight Information Region)
- A - Aerodrome: NOTAMs related to airports and their facilities
- C - En-route: NOTAMs related to airspace and navigation aids
- R - Radar: NOTAMs related to radar systems
- N - Navigation: NOTAMs related to navigation systems
The script filters NOTAMs based on their validity periods:
- NOTAMs with both start and end dates: Included if the flight date falls within the validity period
- NOTAMs with only start date: Included if the flight date is on or after the start date
- NOTAMs with only end date: Included if the flight date is on or before the end date
- NOTAMs without date information: Always included (assumed to be currently active)
Each NOTAM displays:
- NOTAM ID (e.g., A0042/25)
- ICAO airport/FIR code
- NOTAM type description
- Valid From date (if available)
- Valid To date (if available)
- Validity status (if no dates are specified)
- Description text
Exported files are automatically saved to the results/ folder:
- Simple filename:
npm run parse -- -e notams.jsonβ saves toresults/notams.json - Relative path:
npm run parse -- -e ./my-folder/notams.jsonβ saves toresults/my-folder/notams.json - Absolute path: Uses the exact path you specify
# Check NOTAMs for a flight to Ben Gurion on January 15, 2025
npm run parse -- -d 2025-01-15 -i LLBG
# Get all aerodrome NOTAMs for a specific date with summary
npm run parse -- -d 2025-01-15 -t A -s
# Export all NOTAMs valid on a date to a file (saved to results/ folder)
npm run parse -- -d 2025-01-15 -e my-flight-notams.jsonnotam-parser/
βββ web/ # React web application
β βββ src/
β β βββ components/ # UI components
β β βββ hooks/ # Custom React hooks
β β βββ services/ # Data loading
β β βββ types/ # TypeScript types
β βββ public/data/ # NOTAM JSON files
βββ src/ # CLI application
β βββ index.ts # CLI entry point
β βββ parser.ts # NOTAM parsing logic
β βββ scraper.ts # Web scraping
β βββ types.ts # Shared type definitions
βββ daily-notams/ # Generated NOTAM data
βββ .github/workflows/ # Automated data fetching
# Build TypeScript
npm run build
# Run with ts-node (development)
npm start# Start web development server
npm run dev:web
# Build web application
npm run build:web# Run all tests
npm test
# Run tests with coverage
npm run test:coverage
# Run tests in CI mode (for GitHub Actions)
npm run test:ci
# Set up pre-commit hooks (one-time setup)
npm run setup-hooksπ For complete testing and deployment documentation, see TESTING_AND_DEPLOYMENT.md
The script includes robust error handling for:
- Network connectivity issues
- Invalid date formats
- Parsing errors
- Missing or malformed NOTAM data
- axios: HTTP client for fetching web data
- cheerio: Server-side jQuery for HTML parsing
- date-fns: Date manipulation and formatting
- typescript: TypeScript compiler and types