/wh2o-go

Notifications for river gages in the United States, Canada, New Zealand and Chile in a single binary executable

Primary LanguageTypeScriptGNU General Public License v3.0GPL-3.0

logo

wh2o-go

Self-hosted dashboard and custom notifications via Email and SMS for rivers in the United States, Canada, New Zealand and Chile.

If you do not want to self-host this app see wh2o.io

Features

  • Daily Reports. Schedule daily emails summarizing your bookmarked gages sent with Mailgun.
  • Immediate Alerts. Use the Twilio SDK to send an SMS when your favorite local creek is at prime flow.
  • Dashboard. View all your bookmarked gages and their latest readings in one spot.

Data Sources

River data for gages in the United States come from the United States Geological Survey's REST API and are fetched every 15 minutes.

Readings for Canadian gages come from hourly reports published by the Canadian Government. The reports are distributed as CSVs downloaded, then parsed for the dashboard.

Readings from New Zealand and Chile are fetched every hour using web scrapers.

Getting Started

The easiest way to run the app is to clone or download this repository then build it locally on your machine.

This requires:

Once you have a copy of the repository on your machine, open Terminal (or Command Prompt on Windows) and navigate to the wh2o-go directory. Next make the included build script executable then run it. This will compile the React app ( client), the Go server (API) and output a single executable binary in wh2o-go/bin/main. (Definitely one of my favorite features of Go! Fullstack app in a single binary?! 😎)

chmod +x ./_script/build.sh
./_script/build.sh

Next to send yourself Email and SMS, create accounts with Mailgun Account and Twilio Account.

You do not need either a Mailgun or a Twilio account to use the app. You can still view aggregate gage readings from your bookmarked gages without going through the hassle of creating new accounts.

Once your accounts are set up, open the app in your web browser by entering http://localhost:3000 in the URL bar. Navigate to the Settings tab and input your Mailgun and Twilio credentials.

Now you're ready to start bookmarking gages and creating alerts!

Contributing

If you would like to contribute to this project, please feel free to create a new branch and open a Pull Request!

Development

From the wh2o-go directory, navigate to the client/ and start the React app:

cd client/
npm start

The Webpack dev server will open your browser automatically at http://localhost:8080.

In a new Terminal tab and from the wh2o-go directory, start the Go server:

go run main.go

If you are making changes to and of the gage source JSON files, please note that you will have to restart the Go server to see the changes reflected. This is because they are embedded in the binary.

Screenshots

Alert Dashboard

Alert Dashboard

Gage Dashboard

Gage Dashboard

Bookmarking a Gage

Bookmarking a Gage

Alert Dashboard

Alert Dashboard

Adding Immediate Email Notification

Adding Immediate Email Notification

Adding Daily Email Notification

Adding Daily Email Notification

Mailgun Config

Mailgun Config

Twilio Config

Twilio Config

FAQ

I cannot find the gage I am looking for. How can I add one?

If you cannot find a USGS gage in the set, you can manually insert the gage's site number in the input when adding a bookmark. Alternatively, you can add the gage to the source JSON file. See all gage sources.

USGS Page

Nextjs

If you'd prefer not to work with Go and just JavaScript/Nodejs, check out the NextJs Branch. Note that this version of the app is no longer being actively worked on.

Related Projects

This app is not intended to be a guidebook. For river beta in British Columbia, checkout bcwhitewater.org.

If you're looking for a native mobile app, I highly recommend RiverApp. They have a HUGE dataset and active community of paddlers around the world.

For river beta in the United States, see americanwhitewater.org or check out their open-source projects, @AmericanWhitewater.