onejgordon / flow-dashboard

[UNMAINTAINED] A goal, task & habit tracker + personal dashboard to focus on what matters
http://flowdash.co
MIT License
1.66k stars 187 forks source link
facebook-messenger flow gcp goodreads google-appengine google-assistant google-fit habit-tracking personal-data quantified-self reactjs task-management

Flow Dashboard (UNMAINTAINED)

Flow is no longer maintained. We are disabling new account creation, and recommend exporting user data to ensure future access.

Purpose

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/#

Setup

To deploy a new instance of Flow, use the following instructions. Note that Flow uses the Python 2.7 runtime in GCP, which is now deprecated!

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]

To activate this configuration: gcloud config configurations activate [my-flow-config-name].

Fork the repo

Branch or fork this repository into a project directory.

Setup dependencies

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 by copying the templates (keep the original template files, which are used when running tests). 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.

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. Make sure dev_appserver.py is in your path.

Support for python 2.7 and libraries on M1 Macs

Tested method on M1 Pro as per this SO answer.

CONDA_SUBDIR=osx-64 conda create -n py27 python=2.7  # include other packages here

# ensure that future package installs in this env stick to 'osx-64'
conda activate py27
conda config --env --set subdir osx-64

Deploy

If you get a permission denied error on a logs directory during deploy, you may need to run the above command wish sudo.

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

Features

Integrations

Data source integrations

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.

Pocket

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

Evernote

  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

BigQuery

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

Admin Operations Cheatsheet

User data deletion

Contributing

Contributions are welcome! See CONTRIBUTING.md

License

MIT License