Files
aviation/README.md

90 lines
3.6 KiB
Markdown
Executable File

<div align="center">
<img src="docs/logo.png" alt="drawing" width="200"/>
<h1 align="center">Aviation Data</h1>
</div>
## 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=<DOMAIN>`
* 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
* `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`
* `__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/)
### Other data
- https://www.faa.gov/air_traffic/weather/asos
## Tests
`cargo test metars::model::tests::test_parse_time -- --exact --nocapture
`