drawing

Aviation Data

## Makefile * `make` or `make help` to list all commands * `make docker-up` to start all containers * `make docker-refresh` to start the background services * `make docker-clean` to stop and delete all containers, volumes, and networks related to the application **WARNING**: Running `make docker-clean` or `make docker-refresh` will wipe the database, redis, and minio data ## Setup 1. Override any environment variables in `.env.local` 2. Build the required images. Running just `make build` will build the `nginx` image * `make build f=nginx` * `make build f=api` * `make build f=ui` 3. Generate the SSL certificates with `make cert d=` * Running just `make cert` will generate `localhost` certificates 4. Run the application with `make up` ### Development Environment Start background services with `make docker-refresh` * Note: when `ENVIRONMENT` is not set to `production` (i.e., set to `development`), the nginx container will function only as a reverse proxy - the UI must be run through `make run-ui` Start the UI through `make run-ui` and the API through `make run-api` ### Production Environment Start with `make docker-up` The most likely to change environment variables are the following: * `UI_PORT` * `API_PORT` * `POSTGRES_PORT` * `POSTGRES_PASSWORD` - Please change in production environments * `MINIO_HOST` - Match to the `NGINX_HOST` value (see below) * `MINIO_ROOT_PASSWORD` - Please change in production environments * `MINIO_BROWSER_REDIRECT_URL` - Change to the FQDN of the URL that is reachable through the internet. For example: `https://aviation.bensherriff.com/minio/` * `NGINX_HOST` - The IP address of the system * `NGINX_INTERNAL_HOST` - Typically `host.docker.internal` or `172.17.0.1` to allow communication within the docker network * `ENVIRONMENT` - Change to `production` * `ADMIN_EMAIL` - Please change in production environments * `ADMIN_PASSWORD` - Please change in production environments * `VITE_API_URL` - Change to the FQDN of the URL that is reachable through the internet. For example: `https://aviation.bensherriff.com/api` * `__VITE_ADDITIONAL_SERVER_ALLOWED_HOSTS` - Change to the domain of the `VITE_API_URL`. For example: `aviation.bensherriff.com` If the App is not directly exposed to the internet (i.e., behind another reverse proxy or similar), then `NGINX_SSL_ENABLED` most likely should be `false`. The `NGINX_SSL_ENABLED` should only be enabled when you need to set up SSL directly. However, the SSL configuration is incomplete, and may require additional configuration that is not included in this README. * Additionally, run `make cert` to generate certificates. ## Data Sources ### Airport Data Potential Data sources - https://adip.faa.gov/agis/public/#/airportSearch/advanced - https://www.icao.int/Aviation-API-Data-Service/Pages/default.aspx - https://ourairports.com/data/ - [mborsetti/airportsdata](https://github.com/mborsetti/airportsdata) - https://www.iata.org/en/publications/directories/code-search/ - [openstreet](https://www.openstreetmap.org/#map=13/38.95223/-77.47417) ### Metar Data Metar data is collected from aviationweather.gov. #### Decoding METARS The following resources were used to help decode METARS. - [Metar Decode Key PDF](https://www.weather.gov/media/wrh/mesowest/metar_decode_key.pdf) - [Metar Decode (NPS EDU)](https://met.nps.edu/~bcreasey/mr3222/files/helpful/DecodeMETAR-TAF.html) - [moratech.com](http://moratech.com/aviation/metar-class/metar.html#INDEX) ### OpenMapTiles [Generate Vector Tiles](https://openmaptiles.org/docs/generate/generate-openmaptiles/) ### ADS-B - https://blog.exploit.org/ads-b-guide-demodulation-and-decoding/ - https://mode-s.org/1090mhz/index.html - https://planewave.github.io/posts/rtlsdr/ - http://jasonplayne.com:8080/# ### Other data - https://www.faa.gov/air_traffic/weather/asos ## Tests `cargo test metars::model::tests::test_parse_time -- --exact --nocapture `