Compare commits

..

3 commits

Author SHA1 Message Date
xenofem 94e12a41f7 add README 2022-04-16 13:38:52 -04:00
xenofem 7a104bbb07 log real IPs, not IP of reverse proxy 2022-04-16 13:38:26 -04:00
xenofem 1c9b71ae16 improve footer styling 2022-04-16 13:37:52 -04:00
3 changed files with 52 additions and 8 deletions

44
README.md Normal file
View file

@ -0,0 +1,44 @@
# 💩📈
A better web UI for COVID wastewater data
💩📈 is a simple web server that periodically downloads a data
PDF from the Massachusetts Water Resources Authority, parses it to
extract the data, and serves the data as CSV and JSON along with
a simple Chart.js-based web frontend.
## Environment variables
- `CACHED_PDF_PATH`: file path to save the PDF to. Default: `./data.pdf`.
- `STATIC_DIR`: directory containing static files to serve. Default: `./static/`.
## Running
### Nix Flakes
```
nix run git+https://git.xeno.science/xenofem/poop-graph?ref=main
```
(The Nix package is wrapped with `STATIC_DIR` set automatically to the
correct Nix store path, so it'll serve the static files properly
no matter what directory you run it from.)
### Non-Nix
```
git clone https://git.xeno.science/xenofem/poop-graph
cd poop-graph
cargo run
```
## Other setup
- 💩📈 serves HTTP on `127.0.0.1:8080`, and is meant to be used behind
a reverse proxy (e.g. Nginx), ideally with SSL certificates
(e.g. Let's Encrypt). If you prefer, you could also use that web
server to serve the static files, and only pass requests for
`/data.csv` and `/data.json` to 💩📈.
- You'll probably want to set up a service (systemd or whatever your
OS uses) to start 💩📈 automatically with environment
variables set appropriately.

View file

@ -73,7 +73,7 @@ async fn main() -> std::io::Result<()> {
HttpServer::new(move || {
App::new()
.app_data(state.clone())
.wrap(Logger::default())
.wrap(Logger::new(r#"%{r}a "%r" %s %b "%{Referer}i" "%{User-Agent}i" %T"#))
.service(csv)
.service(json)
.service(actix_files::Files::new("/", static_dir.clone()).index_file("index.html"))

View file

@ -49,14 +49,14 @@
<div>
Download data: <a href="/data.csv">CSV</a> <a href="/data.json">JSON</a>
</div>
<div>
<h5>
<a href="https://www.mwra.com/biobot/biobotdata.htm">Data source: Massachusetts Water Resources Authority</a>
</div>
<div>
</h5>
<h5>
<a href="https://git.xeno.science/xenofem/poop-graph">Source code</a>
</div>
<div>
<h5>(c) 2022 xenofem, MIT License</h5>
</div>
</h5>
<h5>
(c) 2022 xenofem, MIT License
</h5>
</body>
</html>