Giter Club home page Giter Club logo

ppg.report's Introduction

- ⚠️ Warning! Fly at your own risk.

Weather report tailored for paramotor pilots. Consolidates data from multiple sources. Worldwide coverage, with extra information within the United States.

  1. 🌏 Open-Meteo for international winds aloft and hourly weather forecasts
  2. 🌏 Nearby Terminal Aerodrome Forecasts, if available
  3. 🌏 Aviation Weather Center SIGMETs (international support), G‑AIRMETs, and CWAs
  4. πŸ‡ΊπŸ‡Έ The NOAA Rapid Refresh Op40 analysis
  5. πŸ‡ΊπŸ‡Έ NWS hourly weather forecast
  6. πŸ‡ΊπŸ‡Έ National Weather Service active alerts
  7. πŸ‡ΊπŸ‡Έ Federal Aviation Administration TFRs

Screenshot of PPG.report website

Available Scripts

In the project directory, you can run:

pnpm start

Runs the app in the development mode. Open http://localhost:5173 to view it in the browser.

The page will reload if you make edits.
You will also see any lint errors in the console.

pnpm test

Launches the test runner in the interactive watch mode.

pnpm build

Builds the app for production to the build folder.
It correctly bundles React in production mode and optimizes the build for the best performance.

The build is minified and the filenames include the hashes.
Your app is ready to be deployed!

Deploying

Using a reverse proxy such as Nginx, configure the following:

  • Serve index.html for 404 requests, no caching
    • Aggressively cache /assets
  • Create the following reverse proxy endpoints:
    • REQUIRED endpoints (for worldwide support):
      • GET /api/position/search ➑ https://nominatim.openstreetmap.org/search
      • GET /api/position/reverse ➑ https://nominatim.openstreetmap.org/reverse.php
      • GET /api/timezone ➑ http://api.timezonedb.com/v2.1/get-time-zone (You will need to attach an API key. Note: This API is only used as a fallback for when the /api/weather endpoint fails, or when using Open-Meteo.)
      • GET /api/openmeteo/{proxy+} ➑ https://api.open-meteo.com/v1/{proxy} Get worldwide winds aloft and forecast information
    • OPTIONAL endpoints (to further enhance basic global support):
      • GET /api/rap ➑ https://rucsoundings.noaa.gov/get_soundings.cgi
      • GET /api/aviationweather ➑ https://www.aviationweather.gov/adds/dataserver_current/httpparam
      • GET /api/weather/{proxy+} ➑ https://api.weather.gov/{proxy} Greedy path capturing, forwards to api.weather.gov.
      • GET /api/pqs ➑ https://epqs.nationalmap.gov/v1/json Get United States altitude information for a given geolocation.
      • GET /api/googleelevation ➑ https://maps.googleapis.com/maps/api/elevation/json Get global altitude information for a given geolocation (backup API).
      • GET /api/tfr ➑ self-hosted tfr-scraper
      • GET /api/aviationalerts ➑ self-hosted aviation-wx
  • IMPORTANT! For each outgoing API request, make sure to:
    • Attach a User-Agent header, as per NOAA and Nominatim usage policies.
    • Keep these free APIs free - be a good API consumer! Add caching for each route - I recommend at least 10 minutes for rucsoundings.noaa.gov, and one week for nominatim.openstreetmap.org.

ppg.report's People

Contributors

aeharding avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

ppg.report's Issues

Data issue with ground elevation

Quick question though: how is the site figuring ground level for a given location?

Check out https://ppg.report/45.685,-111.051 Actual ground elevation at those coordinates is 4,805’ MSL, but PPG.report shows 6,348’ elevation. This is confusing as the default being β€˜AGL’ is actually showing elevations ~1,500 higher, and therefore exaggerating the down-mixing in the airmass.

Play/pause button

It would be cool to have a button to automatically scroll ("animate") the 24 hour RAP

"Feels like" temp

It might be cool to investigate showing a "feels like" temperature as an option

fontawesome-pro dependency blocks install

Error: https://harding.dev:23435/@fortawesome%2ffontawesome-pro/-/fontawesome-pro-5.15.4.tgz: Request failed "401 Unauthorized"

I'd just like to contribute a few low-hanging UX tweeks, but would like to avoid having to pay for a fontawesome pro subscription to do so.

Offline data caching

axios cache middleware is buggy when offline (cache age doesn't work)

need to implement our own offline caching mechanism.

Copy coordinates from metadata

It would be nice to be able to copy the coordinates from the meta-data of the report. When the app is installed to the home screen, there is currently no way to get the coordinates of any given location.

Washington DC TFR shows up for locations outside of the TFR

First off -- LOVE the TFR integration!!! I also love the weather, the METARs, and the Discussion and Report Metadata sections!!!

So the TFR for Washington DC really is not temporary, it's considered permanent. TFR FDC 1/1155

The problem is that many of the sites I fly are outside of the DC TFR 30nm ring (Called a SFRA, Special Flight Restriction Area), yet PPG.report continues to show the red warning sign.

KEZF, Shannon Airport, in Fredericksburg, VA, is both outside of the 30nm ring, as well as south of its southern-most border, yet ppg.report continues to show that TFR. I realize this is because the site is within 20 miles of my selected location, but truly, 80% of my flights are within 20 miles of the permanent flight restrictions.

I understand Washington DC is an exception here, maybe provide an option to ignore Permanent SFRAs? I still absolutely want to know about truly temporary TFRs, but the DC SFRA is not one of them! I took the FAA course, I have the certificate, I can fly in the 30-60nm SFRA Ring.

Thanks!

small bug

Discussed in #148

Originally posted by snr1999 May 12, 2024
hello,
The project is great. Just what I was looking for. I love it!
I have small issue, that may be easy to repair, but is a little frustrating :)
The website does not save my speed setting. I want it to be "m/s" but every time I enter, it resets to km/h. It saves all other units, but not this one. I guess it because of "/" in saved value, but maybe not. Anyway maybe you would like to update this little bug for me.
best. kuba

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.