Skip to main content

A Programmable Training Diary

Project description

choochoo (ch2)

An open, hackable and free training diary.

See documentation for full details.

Technical Features

Training data are stored in a database...

  • There are tools to get data into the database:
    • Read FIT files from smart watches, bike computers, etc
      • 'Activities' (eg bike rides) can be read
      • 'Monitor' data (eg steps and rest HR) can be read
        • These can also be downloaded from Garmin Connect
    • Daily information (eg weight) can be entered via the diary
      • Ability to add custom fields for general data capture
    • Other data (eg FTHR) can be entered at the command line
  • There are tools to process data in the database:
    • Prepared calculations for data totals, ranking, averages
    • Ability to extend processing with Python
  • There are tools to get data out of the database:
    • Browse and edit data in the diary
    • Pandas tables for analysis in numpy and Jupyter notebooks
    • Examples for plotting spatial and time-series data
  • Clear database schema, designed for third party access:
    • SQLAlchemy ORM interface

The configuration is also stored in the database...

  • You can schedule training plans:
    • Prepared / example training plans included
    • Simple, declarative library for defining your own plans
  • You can add data fields to the diary
  • You can extend various pipelines that are called during processing:
    • Statistic pipeline to calculate new derived statistics (eg values over intervals)
    • Diary pipeline to generate items for diplsay in the diary
    • Activity pipeline to generate new data based on activities
    • Monitor pipeline to generate new data based on monitor data

The project can be used stand-alone by someone comfortable with the technologies used, or it could be extended with a GUI.

Latest Changes


Diary now uses dates (rather than datetimes) and is timezone aware (Previously all times were UTC datetimes; now data related to the diary - like statistics calculated on daily intervals - use the date and the local timezone to convert to time. So, for example, stats based on monitor data are from your local "day" (midnight to midnight)).

Monitor data from FIT files can be imported.


Major rewrite to generalize the database schema. Moved a lot of configuration into the database. Now much more flexible, but less interactive.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
choochoo-0.3.2-py3-none-any.whl (125.8 kB) Copy SHA256 hash SHA256 Wheel py3
choochoo-0.3.2.tar.gz (86.3 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page