Go to file
2024-12-02 00:10:31 +00:00
app merge Store into Point 2024-11-11 21:13:50 +00:00
frontend render thresholds for each graph 2024-12-02 00:09:33 +00:00
lib merge Store into Point 2024-11-11 21:13:50 +00:00
tests apply hlint suggestions 2024-10-31 17:22:07 +00:00
CHANGELOG.md cabal init and some Haskell nixy stuff 2024-10-27 20:19:38 +00:00
default.nix use overmind to start everything 2024-11-27 17:48:58 +00:00
elm.json remove unused function maybe (prefer Maybe.withDefault) 2024-11-21 21:35:59 +00:00
HACKING.md note some changes needed for multiuser support 2024-12-02 00:10:31 +00:00
LICENSE cabal init and some Haskell nixy stuff 2024-10-27 20:19:38 +00:00
Makefile make make run tests 2024-11-29 18:14:35 +00:00
Procfile use overmind to start everything 2024-11-27 17:48:58 +00:00
README.md separate the grisly internals from the user-facing README 2024-11-29 18:17:12 +00:00
screenshot.png update screenshot 2024-11-27 00:27:04 +00:00
souplesse.cabal merge Store into Point 2024-11-11 21:13:50 +00:00
track.gpx sample data 2024-10-31 18:29:06 +00:00

Souplesse

screenshot

This readme describes what may someday be, not what is today

Reads a GPX file which you generated by cycling around, and tells you interesting(sic) things about it.

The principle we aspire to is that the measurement is subsidary to the ride, not the purpose of the ride. The purpose of the ride is to enjoy cycling, or to see new places, or to get from A to B, and the purpose of Souplesse is to see if we can get any useful numbers out of the riding you were doing anyway without making you do more of it.

So, the general idea is that given some ride data it can tell you how long/how often you spent at a given level of effort (e.g. heart rate), or output (power, speed, cadence, rate of ascent).

Canned views

ride view

graph of (selected variables) / time, with buttons to select variables slider for threshold level all points above threshold are highlighted and interval times above threshold shown zoom in/out on time range show the selected points on a map

calendar view

note this will need some kind of server-side storage so that the system remembers all your gpx files

shows dates that you rode for each ride, show time at effort some kind of slider for effort level

Query view

Not yet decided if this is useful, something that allows graphs of arbitrary functions of properties (e.g. to look at power/cadence ratio, or ... some other weirdness)

Tech notes

Use nix-shell. Inside the shell

  • use make to build frontend (Elm) and backend (Haskell/Yesod) and run tests for both. Refer to the Makefile (which is gratuitously x86-64-specific, sorry) for details

  • Procfile describes all the things I like to run in different tabs, including a Docker container for Postgres. Best used with Overmind: run overmind start -D and then overmind connect to fire up a tmux session

Sample data

The upload form deliberately doesn't have CSRF (for now, at least) so that you can chuck a bunch of GPX files at it using curl

 for i in tmp/Tracks/*.gpx ; do curl --form  f1=@$i 'http://localhost:3000/upload'; done

This should be safe to do repeatedly because it will refuse upload of tracks where the database already contains any points in the time range of the uploaded track