README.md (2289B)
1 # Souplesse 2 3  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