Mission-critical angling intelligence for the modern outdoorsman. This ain't your grandpa's fishing app - it's a full-stack React/TypeScript tactical platform delivering real-time situational awareness for water operations across North America.
Built by suburban tacti-cool operators, for suburban tacti-cool operators who understand that fish are just another target requiring proper intel, timing, and environmental assessment.
- π Lunar Phase Targeting: Solunar theory calculations with astronomical precision - because fish operate on nature's timeline, not yours
- οΏ½ Marine Conditions: Real-time NOAA CO-OPS integration with Great Lakes support - inland warriors get proper station selection now
- π€οΈ Weather Intel: Multi-source meteorological data (Open-Meteo, NWS) with zero API key dependencies - operational security maintained
- οΏ½ Location Services: GPS integration with fallback to manual coordinates - works when cell towers don't
- β‘ Zero-Dependency Deployment: Static assets only - deploys anywhere, runs offline when SHTF
- π± Mobile-First: Responsive design optimized for field use on any device
- π Automated Updates: Nightly intel refresh ensures current conditions
- π― Multi-Day Planning: 7-day forecast window for tactical mission planning
- π Continental Coverage: US, Canada, Mexico coverage with proper timezone handling
- π‘οΈ Hardened Architecture: Production-ready codebase with comprehensive testing
# Clone the tactical package
git clone https://github.com/jsldvr/fishing-report.git
cd fishing-report
# Install dependencies (Node.js 20+ required)
npm install
# Hot development server
npm run dev
# Live reload at http://localhost:5173 - modify and see changes instantly
# Run full test suite
npm test
# Unit tests, integration tests, and marine station validation
# Production build
npm run build
# Optimized static assets ready for deployment- Enable Pages: Repository Settings β Pages β Source: "GitHub Actions"
- Auto-Deploy: Push to
maintriggers automatic build/deploy pipeline - Live URL:
https://[username].github.io/fishing-report/ - Nightly Updates: Automated rebuilds at 0600 UTC for fresh data
- Netlify: Drag
dist/folder for instant deployment - Vercel: Connect GitHub repo for automatic deployments
- Apache/Nginx: Serve static files from any web server
- S3 + CloudFront: AWS static hosting with CDN
- Local Network: Run on field laptop for offline operations
- Location Input: GPS coordinates, city search, or manual entry - multiple vectors for target acquisition
- Time Window Selection: 1-7 day operational window planning
- Intelligence Generation: Real-time analysis with detailed breakdown of all contributing factors
- Mission Planning: Use intel to optimize timing and resource allocation
- οΏ½ 75-100 (CRITICAL): Prime engagement window - all systems green, maximum probability of success
β οΈ 50-74 (ELEVATED): Good conditions - favorable probability, proceed with confidence- β 0-49 (LOW): Suboptimal conditions - consider alternative operations or target adjustment
Each assessment provides weighted analysis from multiple intelligence sources:
- π Lunar Phase: Astronomical calculations based on solunar theory - nature's operational tempo
- οΏ½ Marine Conditions: NOAA station data with improved inland coverage (Great Lakes operators now properly supported)
- π€οΈ Weather Systems: Multi-source meteorological analysis with field-relevant factors
- π― Composite Score: Algorithmic fusion of all intelligence sources for actionable assessment
Field-tested algorithmic fusion combining multiple environmental factors. This isn't some weekend warrior guesswork - it's precision-engineered assessment based on documented solunar research and operational meteorology.
moonScore = 0.6 Γ |cos(2 Γ phaseAngle)| + 0.4 Γ illumination- Peak Windows: New moon (0Β°) and full moon (180Β°) - maximum gravitational influence
- Illumination Factor: Brightness correlation with feeding behavior
- Scientific Basis: John Alden Knight's solunar theory with modern astronomical precision
weatherScore = 0.35Γwind + 0.25Γclouds + 0.2Γprecipitation + 0.2Γtemperature- Wind Assessment: 3-18 km/h optimal (light to moderate breeze) - surface disturbance without equipment compromise
- Cloud Coverage: 10-40% ideal (partial overcast) - reduces UV penetration, increases activity
- Precipitation: Minimal preferred - light rain acceptable, heavy precip degrades conditions
- Temperature: 10-24Β°C operational zone (50-75Β°F) - comfort range for extended operations
MAJOR UPGRADE: Fixed station selection algorithm that was returning distant coastal stations for inland operations.
- Station Priority: Waterlevels β Meteorology β Wind β Temperature β Tide Predictions
- Coverage Improvement: Great Lakes and inland water bodies now properly supported
- Distance Optimization: ~90km regional stations vs. 1000+ km coastal fallbacks
- Validation: Comprehensive test suite ensures proper station selection
- Standard Configuration: 44% lunar + 56% environmental
- Enhanced Mode: 35% lunar + 45% environmental + 20% almanac (when available)
Trust but verify - comprehensive testing ensures reliable intel in the field:
# Full test suite execution
npm test
# Includes: algorithm validation, API integration, marine station selection
# Type safety verification
npm run type-check
# Ensures no runtime surprises in production
# Production build test
npm run build && npm run preview
# Validates optimized bundle performanceField Testing Protocol: Each algorithm change is validated against known conditions and historical data. The v1.2.3 marine station fix was extensively tested with inland locations (Milton, WI) to ensure proper Great Lakes station selection.
Modular, mission-critical codebase designed for maintainability and field reliability:
fishing-report/
βββ src/
β βββ lib/ # Core intelligence systems
β β βββ forecast.ts # Primary scoring algorithm
β β βββ enhancedWeather.ts # Weather data fusion
β β βββ noaaMarine.ts # Marine conditions (v1.2.3 enhanced)
β β βββ noaaStationTypes.ts # Station selection strategy
β β βββ nwsWeather.ts # National Weather Service integration
β β βββ openMeteo.ts # Open-Meteo API client
β β βββ weatherOutlook.ts # Extended forecast processing
β β βββ time.ts # Timezone/temporal utilities
β βββ components/ # React UI components
β β βββ LocationInput.tsx # GPS/coordinate input
β β βββ DateRangePicker.tsx # Mission window selector
β β βββ ScoreCard.tsx # Intelligence display
β β βββ MarineConditions.tsx # NOAA marine data
β β βββ WeatherAlerts.tsx # NWS warning system
β β βββ WeatherOutlookPanel.tsx # Extended forecast
β βββ pages/ # Application routes
β β βββ Home.tsx # Mission planning interface
β β βββ Results.tsx # Intelligence display
β β βββ Wx.tsx # Weather-focused view
β β βββ Guide.tsx # Operational documentation
β βββ types/ # TypeScript definitions
βββ tests/ # Comprehensive test suite
β βββ forecast.test.ts # Algorithm validation
β βββ noaaMarine.test.ts # Marine station testing
β βββ noaaFix.test.ts # Station selection validation
βββ scripts/ # Build and deployment tools
βββ .github/workflows/ # CI/CD pipeline
β βββ release.yml # Automated release system
β βββ validate-release.yml # Pre-merge validation
β βββ pages.yml # Deployment automation
βββ public/ # Static assets and PWA config
Zero API keys required - all data sources use public endpoints for operational security. No credentials to compromise, no rate limits to breach, no dependencies on third-party authentication systems.
# No environment variables required for basic operations
# All intelligence sources are public APIs or client-side calculationsPreload strategic locations in scripts/build-data.ts:
const TACTICAL_LOCATIONS = [
{ name: 'Lake Tahoe, CA', lat: 39.0968, lon: -120.0324 },
{ name: 'Kenai River, AK', lat: 60.5544, lon: -151.2583 },
{ name: 'Boundary Waters, MN', lat: 47.9493, lon: -91.5008 },
{ name: 'Chesapeake Bay, MD', lat: 38.7849, lon: -76.8721 },
// Add your AO's prime fishing intel locations
];Fine-tune assessment weights in src/lib/forecast.ts based on local conditions:
// Environmental factor weights (adjust for regional preferences)
const weatherScore = 0.35*windS + 0.25*cloudS + 0.2*precipS + 0.2*tempS;
// Final intelligence fusion weights
const standardMode = { moon: 0.44, weather: 0.56 }; // Base configuration
const enhancedMode = { moon: 0.35, weather: 0.45, almanac: 0.20 }; // With third-party intelStation Selection Priority (automatically optimized):
waterlevels- Great Lakes, rivers, coastal monitoringmeteorology- Comprehensive weather stationswind- Wind monitoring (Great Lakes optimized)watertemperature- Temperature monitoringtidepredictions- Coastal tide predictions (fallback only)
This ensures inland operators get relevant regional stations instead of distant coastal fallbacks.
Field-tested performance standards for reliable operation on any device:
- Bundle Size: <250 KB gzipped JavaScript (first load)
- Load Time: <2.5s LCP on 3G networks
- Memory Usage: <50MB peak for mobile operations
- Offline Capability: Core functions work without network
# Performance monitoring
npm run build
npx lighthouse http://localhost:4173 --view
# Bundle analysis
npx vite-bundle-analyzer dist- Code Splitting: Route-based loading - only load what you need for the mission
- Asset Compression: All images and vectors optimized for bandwidth conservation
- Aggressive Caching: Service worker implementation for offline field operations
- API Batching: Efficient data fetching with proper fallback strategies
- Progressive Enhancement: Core functionality works even when advanced features fail
Multi-platform support for any device you've got in the field:
- Desktop: Chrome 90+, Firefox 88+, Safari 14+, Edge 90+ (full tactical display)
- Mobile: iOS Safari 14+, Chrome Mobile 90+ (optimized for single-handed operation)
- Tablet: Full responsive design scales from phone to desktop
- Legacy Fallback: Core intelligence functions work even on older hardware
- Fetch API: For intelligence gathering (universally supported)
- Geolocation: GPS coordinate acquisition (graceful fallback to manual entry)
- Intl.DateTimeFormat: Timezone handling (critical for accurate timing)
- Network Independence: Works offline once loaded
- Device Agnostic: Responsive design adapts to any screen size
- Touch Optimized: Large target areas for field use with gloves
- High Contrast: Readable in bright sunlight conditions
Multi-source data fusion from reliable, public intelligence feeds:
- Meteorological: Open-Meteo API (CC BY 4.0) - European weather service with global coverage
- Marine Conditions: NOAA CO-OPS - Official US marine observation network
- Weather Alerts: National Weather Service API - Official US weather warnings
- Geocoding: OpenStreetMap Nominatim - Open-source location services
- Astronomical: Custom solunar calculations based on published research (public domain)
- Timezone: IANA Time Zone Database via
tz-lookup- Official global timezone data
- Government Sources: NOAA and NWS provide official, authoritative data
- Redundant Systems: Multiple weather sources with automatic failover
- Real-time Updates: Fresh data every request, nightly cache refresh
- Historical Validation: Algorithms tested against known conditions and outcomes
Proper operational procedures for code contributions:
- Recon Phase: Fork and clone the repository
- Branch Creation:
git checkout -b feature/enhanced-targeting - Development: Make changes with comprehensive testing and documentation
- Quality Assurance:
npm run build && npm test && npm run type-check - Mission Brief: Submit PR with detailed operational description
- TypeScript Strict Mode: Full type coverage - no runtime surprises in the field
- Comprehensive Testing: Unit tests for all algorithm functions - trust but verify
- Pre-commit Validation: Automated version validation prevents deployment failures
- ESLint + Prettier: Consistent code formatting for team operations
- Conventional Commits: Proper commit messaging for change tracking
Critical procedures when modifying intelligence algorithms:
- Test Suite Updates: Add tests with expected outputs before making changes
- Field Validation: Test against known conditions and historical data
- Documentation: Document reasoning for any weight or calculation adjustments
- Backward Compatibility: Consider impact on existing operators and deployments
- Performance Impact: Ensure changes don't degrade field performance
Automated deployment pipeline with built-in safeguards:
- Pre-merge Validation: Version consistency checks prevent broken releases
- Automated Testing: Full test suite runs on every PR
- Release Triggers: Successful merge to
mainfromrelease/*orfix/*branches - Rollback Capability: Tagged releases enable quick reversion if needed
Build System Failures
# Nuclear option - clear all caches and rebuild
rm -rf node_modules dist .vite package-lock.json
npm install
npm run buildIntelligence Gathering Failures
- Open-Meteo: 10,000 requests/day per IP - well within operational limits
- NOAA API: No rate limits on public endpoints - rock solid reliability
- Network Issues: App caches data locally - core functions work offline
Station Selection Problems (Fixed in v1.2.3)
- Inland Locations: Now properly selects Great Lakes/regional stations
- Distance Issues: Algorithm prioritizes waterlevels β meteorology β wind β temperature β tide predictions
- Validation: Comprehensive test suite ensures proper station selection
Deployment Issues
# GitHub Pages configuration
# Ensure base: '/fishing-report/' in vite.config.ts
# Verify 404.html handles SPA routing properly
# Alternative deployment validation
npm run build && npm run preview
# Test production build locally before deploymentTimezone and Coordinate Issues
- DST Handling: Test around transition dates (March/November)
- Location Coverage: tz-lookup includes global timezone data
- GPS Fallback: Manual coordinate entry when geolocation fails
# Bundle size analysis
npm run build
npx vite-bundle-analyzer dist
# Field performance testing
npx lighthouse http://localhost:4173 --view --throttling-method=devtools
# Memory usage monitoring (Chrome DevTools)
# Network tab for API call efficiency
# Performance tab for rendering bottlenecksMIT License - see LICENSE for full operational terms.
- John Alden Knight: Original solunar theory research - the tactical foundation
- NOAA/NWS: Reliable government weather and marine intelligence
- Open-Meteo: European weather service with global coverage and no API restrictions
- React/TypeScript Teams: Solid development frameworks for mission-critical applications
- Field Operators: Real-world feedback and validation from actual fishing operations
- Open Source Community: Contributions that make this platform more effective
- Fixed: Inland location station selection (Milton, WI no longer returns Quantico, VA stations)
- Enhanced: Great Lakes and inland water body support with proper regional station selection
- Added: Pre-merge validation system prevents version mismatches in deployment
- Improved: Station selection algorithm with comprehensive test coverage
This intelligence platform is for tactical planning and situational awareness. Always combine with:
- Local Intelligence: Current conditions, hazards, and access restrictions
- Weather Warnings: Official NWS alerts and marine conditions
- Regulatory Compliance: Fishing licenses, seasons, limits, and protected areas
- Safety Protocol: Proper equipment, communication plan, and emergency procedures
Remember: Technology enhances human judgment - it doesn't replace it. Stay alert, stay alive, stay fishing.