Fluxtream/BodyTrack Integration

BodyTrack server APIs

Overview

These are ideas about how to go about integrating Fluxtream and BodyTrack.  

For documentation on the APIs which are currently supported between BodyTrack and Fluxtream see BodyTrack server APIs.

The BodyTrack server sources are currently hosted on a private repository https://create.repositoryhosting.com/account (requires account, talk to Anne if you need access).

Debugging Notes

A good place to put a breakpoint is in the index action in AppController.java.  This will fire when a guest logs in.

CLI:

cd ~/projects
git clone git@github.com:fluxtream/fluxtream-cli.git fluxtream-cli
cd ~/projects/fluxtream-cli
mvn clean install

java -jar target/flx-jar-with-dependencies.jar http://localhost:8080 <your fluxtream username>

Look in ~/projects/fluxtream-cli/src/main/antlr3/com/fluxtream/cli/TParser.g for what the commands are

Example: btupload fitbit arwright

Ideas/Strategies

Anne Wright, 4/22/12

Current path:

  • Converted bodytrack display in fluxtream-app from "Continuous view" to separate application
  • Working on persistence, navigation history, and hash URLs in fluxtream-app
  • Adding connectors for openpaths and bodymedia
Current items:
  • [AW] Setting bodytrack server in connector to other than localhost:3000 isn't propagating properly.  Fix hard coded paths in BodyTrackController.java
  • [CK + EP] Work together on persistence, navigation history, and hash URLs in fluxtream-app
  • [EP] Persist state of timeline widget.

Completed items:

Issues to consider:

  • What does Candide need to learn from Eric?
  • Name/branding
  • From Candide's Evernote:
    • Sync bodytrack's concept of a 'source' and fluxtream's 'connectors'
    • Strategy for handlng the disconnect between fluxtream's timeline and bodytrack's timeline in terms of source code
    • Understand what exactly people external to bodytrack/fluxtream expect from the "timeline component" and how can we externalize the existing code -> EP says: use require.js / how is it going to interact with the backend?
    • do we keep rails stuff in the 'official' merged version of the software for OSCON / the next milestone? EP: reimplement proxied ajax calls natively in the 'fluxtream' part
    • do we keep the base station, user importers, etc… in the 'official' merged version of the software? AW: Yes, should maintain support for upload API
    • what about mymee? problem: not everyone can use it… AW: cultivate additional observation capture options, such as Paco, Tapforms, ohmage, etc.
    • migrating fluxtream users…
    • screencast video, design for the home page
    • write a retro-calendar for next milestone and OSCON
  • IntelliJ
  • Get beefier replacement for EC2 test instance : Ask Thomas about Belgian hosting company
  • HTTPS->Security audit->bodytrack rails app in same github repo with fluxtream-app
  • Define milestones between now and OSCon
  • Evaluate server tools: New relic?
  • Evaluate continuous deployment strategy: Evaluate Live rebel? Cost? Open source discount?
  • Issues to discuss with Ray
    • Change "Load View"/"Save View" buttons to be dropdown?  How do we support time only/channel only loads?
    • Margins: fluxtream-app has big margins, bodytrack takes up full width, what do we standardize on?
    • How do we navigate between log application (day view/week view) and bodytrack application?
    • How to add share link on timeline 
  • Where should fluxtream.com be hosted: Candide is not happy with standing cloud

Future work:

  • With EP: 
    • Synchronize window resizing behavior
  • Figure out why adding Zeo connector is failing

  • Figure out why delete is not working for BodyTrack connector.
  • Fix remaining 'home/from' redirects to be 'app/from'.  The following look like they need updated: ZeoRestUpdater.java, BaseGoogleOAuthController.java, BaseOAuthController.java, GoogleOAuth2Controller.java
  • Make it possible on per-widget basis to specify whether or not to make scrollbars
  • Figure out what to do about fitbit daily data.  This is currently disabled.
  • Adding Withings connector currently doesn't work, and has always had an issue with secondary user.
  • Candide mentioned that JRebel doesn't notice when you add a new directory: how do we properly reflect this in the documentation/culture for developers?
  • Figure out and fix issue with main template sometimes adding widget twice
  • Figure out why 'this.name' is getting set to WEEK

Anne Wright, 3/25/12 - 4/21/12

Current path:

  • We commented out weekly/monthly view types and kept continuous and daily.
  • Eric learned enough from Candide about architecture of fluxtream-app to decide how best to slice and dice _timeline into fluxtream continuous mode
  • Anne documented BodyTrack server APIs for supporting login, tile fetch, views, etc.

  • Candide added a BodyTrack connector
  • Candide added bodytrack.properties file which maps between Fluxtream facets and BodyTrack device and channel names
  • Candide plans to add a register page and make the layout pretty again
  • Candide fixed initial account creation

Current items:
  • [AW] Setting bodytrack server in connector to other than localhost:3000 isn't propagating properly.  Fix hard coded paths in BodyTrackController.java
  • [CK] Figure out why certain fitbit fields are always 0: steps, MET, fairlyActiveMinutes, lightlyActiveMinutes, sedentaryActiveDistance, etc.
  • [EP] Persist state of timeline widget.

Completed items:

Future work:

  • Figure out why adding Zeo connector is failing

  • Delete not working for BodyTrack connector.
  • Fix remaining 'home/from' redirects to be 'app/from'.  The following look like they need updated: ZeoRestUpdater.java, BaseGoogleOAuthController.java, BaseOAuthController.java, GoogleOAuth2Controller.java
  • Make it possible on per-widget basis to specify whether or not to make scrollbars
  • Figure out what to do about fitbit daily data.  Fluxtream currently only asks when a user goes to a particular day, but this doesn't work well with export to BodyTrack.
  • Adding Withings connector currently doesn't work, and has always had an issue with secondary user.
  • Candide mentioned that JRebel doesn't notice when you add a new directory: how do we properly reflect this in the documentation/culture for developers?
  • Figure out and fix issue with main template sometimes adding widget twice