A goal, task & habit tracker + personal dashboard to focus on what matters
Clone or download
onejgordon Enable iterative updates of today's journal
Add dialog title showing which date is being submitted
Latest commit 6267443 Jun 29, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Update license Jun 15, 2017
actions Switch to JsonRequestHandler Apr 1, 2017
common Revert to base64 for aes cypher Mar 14, 2018
design Snapshot screenshots, and minor evernote integration bug fix May 7, 2017
images Add Google Assistant to about page Mar 13, 2018
pytz Initial commit Mar 11, 2017
scripts Readme updates May 26, 2018
services Bug with single quotes in task/habit agent request May 27, 2018
settings Add localhost to client ID instructions May 23, 2017
src Enable iterative updates of today's journal Jun 29, 2018
static Minor fixes Mar 10, 2018
testing Handle nones in journal tag text May 27, 2018
views Avail 'dev' constant for customizing client IDs when running locally Jun 1, 2018
.codeclimate.yml Fix readable URL goto on click in widget Apr 29, 2017
.eslintrc WIP task status Mar 12, 2017
.gitignore Switch to urlsafe base62 for aes tokens Feb 13, 2018
.travis.yml Exclude adminActions from coverage and add tools tests May 17, 2017
CHANGELOG.md Edit title and author of readables Jun 25, 2017
README.md Readme updates May 26, 2018
api.py Support for non-prod oauth client id on dev Jun 29, 2018
app.yaml Minor fixes Mar 10, 2018
appengine_config.py Reqs updates Mar 31, 2017
authorized.py Unused params May 7, 2017
constants.py Enable iterative updates of today's journal Jun 29, 2018
cron.yaml Add cron for weekly push Mar 28, 2017
django_version.py Unused modules and cleanup Mar 12, 2017
flow.py devappserver2 import raising errors on dev after upgrade to gcloud 168 Sep 20, 2017
gulpfile.js Replace gulp-util log with fancy-log Apr 3, 2018
handlers.py Include email in feedback log May 6, 2017
index.yaml Show linked tasks on project viz dialog May 27, 2017
local.requirements.txt Upgrade to mock 2.0.0 May 27, 2017
models.py Enable iterative updates of today's journal Jun 29, 2018
package.json React 15.4.2 -> 15.6.2 May 28, 2018
queue.yaml Adding GCS report generation class and report list UI Mar 19, 2017
reports.py Tracking data raw export and history UI Jun 11, 2017
requirements.txt Switch to urlsafe base62 for aes tokens Feb 13, 2018
robots.txt Initial commit Mar 11, 2017
swagger.yaml Add tracking day submission to API spec May 10, 2017
tasks.py Correct pocket sync to limit item age to 7 days on first sync May 20, 2017
tools.py Initial implementation of project milestones Jun 5, 2017


Flow Dashboard

Build Status Code Climate Coverage Status License: MIT Gitter chat


Flow is a habit tracker and personal data analytics app that lets you keep focus on what matters. Flow owns none of your data. That's yours.

If you just want look around or get started with Flow, you can create a free account at http://flowdash.co.

To spin up your own instance, or start contributing to this repo, see below.

API Documentation

The docs are still a work in progress. Check out the current docs at http://docs.flowdash.apiary.io/#


To deploy a new instance of Flow, use the following instructions.

Obtain Google App Engine SDK

Download the Cloud SDK from Google. https://cloud.google.com/appengine/downloads

Setup a new Google Cloud project

Visit the Google developer's console: https://console.developers.google.com/ Create a new project and choose a unique project ID. You will not need a billing account if usage remains within Google's free tier, which should support low-mid volume use cases.

Set up a gcloud config

gcloud config configurations create [my-flow-config-name]
gcloud config set project [project-id]
gcloud config set account [my email]

Fork the repo

Branch or fork this repository into a project directory.

Ensure you have npm and gulp installed.

npm install -g gulp
npm install

Update code configuration

Update the APP_OWNER variable in constants.py. Owner should match the Google account you logged into the console with. This will enable the application to send emails.

Create the following files from the templates. For this step you'll need to create an oauth 2.0 web client ID from the GCP console, as per the instructions in secrets_template.py.

  • secrets.py :: ./settings/secrets_template.py => ./settings/secrets.py

  • client_secrets.js :: ./src/js/constants/client_secrets.templates.js => ./src/js/constants/clients_secrets.js

Run the dev server locally

To avoid conflicts sometimes seen with gcloud and google.cloud python libs it is often helpful to run the dev server in a virtualenv.

  • virtualenv env
  • source env/bin/activate
  • pip install -t lib -r requirements.txt
  • pip install -r local.requirements.txt
  • gcloud components update
  • cd scripts
  • ./server.sh

Make sure dev_appserver.py is in your path, and run server.sh (in scripts/) to start the dev server locally. Then run gulp in another terminal to build JS etc.

Visit localhost:8080 to run the app, and localhost:8000 to view the local dev server console.


./scripts/deploy.sh 0-1 to deploy a new version 0-1 and set is as default

Visit https://[project-id].appspot.com to see the app live.


  • Daily journal / survey
    • Configurable questions
    • Optional location pickup & mapping
    • Extract @mentions and #tags from configured open-ended responses (auto-suggest)
    • Segment analysis of journals by tag (highlight journal days with/without + show averages)
  • Habit tracking ala habits app
    • With weekly targets
    • Commitments
    • Optional daily targets for 'countable' habits
  • Tracking top tasks for each day
    • Analyze tasks completed: on time, late, not completed, on each given day
  • Monthly/year/long-term goals
    • Goal assessment report at end of month
    • Rating for each goal monthly defined
  • Ongoing Projects tracking
    • Track time of each progress increment
    • Link tasks with projects
    • Define labeled milestones
    • View 'burn-up' chart of completion progress over time
  • Analysis
    • Show summary charts of all data reported to platform
  • Google Assitant / Home / Facebook Messenger integration for actions like:
    • "How am I doing"
    • "What are my goals for this month"
    • "Mark 'run' as complete"
    • "Daily report"
  • Reading widget
    • Show currently-reading articles / books
    • Sync quotes from evernote / Kindle
    • Sync articles from Pocket
    • Mark articles / books as favorites, and add notes
    • Quotes & articles fully searchable
  • Flash card widget for spreadsheet access (e.g. random quotes, excerpts)
  • Export all data to CSV


Data source integrations

  • Public Github commits
  • Google Fit - track any activity durations by keyword
  • Evernote - pull excerpts from specified notebooks
  • Pocket - Sync stored articles & add notes
  • Goodreads - Sync currently reading shelf
  • Track any abstract data via REST API

Setup (for separate instance)

All integrations work out of the box on flowdash.co, but if you're spinning up your own instance, you'll need to set up each integration you need. See below for specific instructions.


Create an app at https://getpocket.com/developer/ and update settings.secrets.POCKET_CONSUMER_KEY


  1. Request an API Key at https://dev.evernote.com
  2. Request a webhook at https://dev.evernote.com/support/ pointing to [Your Domain]/api/integrations/evernote/webhook

Google Home

We've used API.AI to create an agent that integrates with Google Actions / Assistant / Home. To connect Assistant with a new instance of Flow:

  1. Visit https://api.ai
  2. Update the agent.json configuration file in static/flow-agent
  3. Fill in config params in [Brackets] with your configuration / webhook URLs, etc
  4. Import the agent.json to API.AI
  5. Go to integrations and add and authorize 'Actions on Google'
  6. Preview the integration using the web preview

Facebook Messenger

The messenger bot lives at https://www.facebook.com/FlowDashboard/

To create a new messenger bot for your own instance of Flow, see the Facebook quickstart: https://developers.facebook.com/docs/messenger-platform/guides/quick-start


(Beta / admin only currently) Push daily panel data to BigQuery for additional analysis, e.g. run regressions with TensorFlow, etc.


Contributions are welcome! See CONTRIBUTING.md


MIT License