souplesse

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

README.md (2289B)


      1 # Souplesse
      2 
      3 ![screenshot](screenshot.png)
      4 
      5 _This readme describes what may someday be, not what is today_
      6 
      7 Reads a GPX file which you generated by cycling around, and tells you
      8 interesting(sic) things about it.
      9 
     10 The principle we aspire to is that the measurement is subsidary to the
     11 ride, not the purpose of the ride. The purpose of the ride is to enjoy
     12 cycling, or to see new places, or to get from A to B, and the purpose
     13 of Souplesse is to see if we can get any useful numbers out of the
     14 riding you were doing anyway without making you do more of it.
     15 
     16 So, the general idea is that given some ride data it can tell you how
     17 long/how often you spent at a given level of effort (e.g. heart rate),
     18 or output (power, speed, cadence, rate of ascent).
     19 
     20 ## Canned views
     21 
     22 ### ride view
     23 
     24 graph of (selected variables) / time, with buttons to select variables
     25 slider for threshold level
     26 all points above threshold are highlighted and interval times above
     27  threshold shown
     28 zoom in/out on time range
     29 show the selected points on a map
     30 
     31 ### calendar view
     32 
     33 note this will need some kind of server-side storage so that the
     34 system remembers all your gpx files
     35 
     36 shows dates that you rode
     37 for each ride, show time at effort
     38 some kind of slider for effort level
     39 
     40 
     41 ## Query view
     42 
     43 Not yet decided if this is useful, something that allows graphs of
     44 arbitrary functions of properties (e.g. to look at power/cadence
     45 ratio, or ... some other weirdness)
     46 
     47 
     48 # Tech notes
     49 
     50 Use `nix-shell`. Inside the shell
     51 
     52 * use `make` to build frontend (Elm) and backend (Haskell/Yesod) and
     53   run tests for both. Refer to the Makefile (which is gratuitously
     54   x86-64-specific, sorry) for details
     55 
     56 * `Procfile` describes _all_ the things I like to run in different
     57   tabs, including a Docker container for Postgres.  Best used with
     58   Overmind: run `overmind start -D` and then `overmind connect` to
     59   fire up a tmux session
     60 
     61 
     62 ## Sample data
     63 
     64 The upload form deliberately doesn't have CSRF (for now, at least) so
     65 that you can chuck a bunch of GPX files at it using curl
     66 
     67 ```
     68  for i in tmp/Tracks/*.gpx ; do curl --form  f1=@$i 'http://localhost:3000/upload'; done
     69 ```
     70 
     71 This should be safe to do repeatedly because it will refuse upload of
     72 tracks where the database already contains any points in the time
     73 range of the uploaded track