/river-levels

Tiny website & node service to track river levels in Southern Ontario

Primary LanguageHTML

Southern Ontario Stoke & Swell

This repository houses code for an experimental “conditions dashboard” for whitewater river levels and surf spot wave forecasts in southern Ontario. It draws data from various sources & presents it mostly in line chart form for quick checks of current conditions. The project is supposed to provide a centralized spot to check forecasts, but also an opportunity for me to learn various newer web technologies, so you shouldn’t rely on it or expect any kind of data persistence at all, at least for the present.

Access

Working on a proper deployment schedule, but for now everything in my dev repo is just synced to https://riverlevels.hackinghistory.ca, where you can access Actual Live River Data and Simulated Lake Surface Forecast Data, with the hope of bringing the wave tool online soon. Just beginning work on a React implementation which may eventually replace what’s already here.

Feature List (user facing)

If the checkbox is ticked, then the feature has been implemented; if not, it’s planned but doesn’t work yet.

  • Rivers
    • [-] river info tabs with the following info:
      • [X] current water levels w/ level quality estimate
      • [X] basic info about the river (route description)
      • [X] directions links for put-in and take-out
      • [ ] display map with all identified points (put-in, take-out, and other info such as alternate put-in/take-out, notable features, etc.)
      • [ ] weather forecast
      • [ ] links to recent radar/rainfall info (this will be tough to implement without some way to estimate river catchment areas, which is a bit of a big ask)
    • [ ] journalling: allow user to provide a brief journal entry, and optionally retrieve
      • [ ] historical gauge data
      • [ ] historical weather data
    • Waves
      • [ ] surf spot info tabs with the following info:
        • [ ] latest point forecast via GLOS wave/wind forecasts
        • [ ] spot description (wave info & quality in various wind/wave directions)
        • [ ] current buoy reading (if available)
        • [ ] direction links
        • [ ] windy forecast map link
        • [ ] GLOS forecast map link
      • [ ] journalling: allow user to provide a brief journal entry, and optionally retrieve
        • [ ] historical forecast data via GLOS
        • [ ] historical buoy data if available
        • [ ] historical weather data
    • Both
      • [ ] offline caching of data to allow use of charts when wifi fails.
      • [ ] DATA ATTRIBUTION – I haven’t added this yet at all so please, if you’re using the site, don’t share widely – I’m in copyright violation, or at least good-neighbour violation.

Data Sources

ADD ATTRIBUTION

Contributions/Suggestions

Please use the Github Issues Tracker for ideas/bug reports/improvements. Thanks!

Technical Description

Describe Internal Data Structures (rivers, gauges, surf spots, etc)

River Definitions

River definitions are Javascript Simple Objects with the following structure:

thisRiver = {
  name: "string", // unique name
  shortName: "string" // abbreviation to use in tab construction
  // gauge-related props will be folded into a new array property `gauges`
  // at a future date, to allow for multiple gauge readouts
  "gaugeType": "wateroffice", // one of 'wateroffice', 'cvc', or 'grca'
  "gaugeID": "02GA005", // unique gauge ID
  "slug": "irvine", // used in the cunstruction of element classes & ids
  "units": "cms", // generally 'cms' or 'height'
  // will eventually be replaced with more complex objects
  // cf. leaflet & gmaps for some plausible properties
  "points":{  
    "putin": [43.702321, -80.445578] ,
    "takeout": [43.662701, -80.453265] 
  },
  // use this to color-code the levels
  "levels": [[0,4.6,"bad"], [4.6,8,"shoulder"], [8,50,"good"],[50,100,"shoulder"]],
  // not really using this right now -- can be used to set a runnability threshold
  "minHeight": 4.6
}

Document JS code w/ js-doc

yeah…. that needs doing

Describe technical roadmap

v 0.1

  • tabs work with no issues
  • biggest CSS issues are resolved
  • river def’n is set
  • add maps

v 0.2

  • extraneous files ruthlessly purged
  • relevant libraries (e.g. gaugeParser.js) merged bck into this project
  • stop using org files for literate programming, switch to plain old html/css/js

v 1.0

  • offline storage
  • journal implemented

v 2.0 (or whatever) rewrite in react