GithubHelp home page GithubHelp logo

onejgordon / flow-dashboard Goto Github PK

View Code? Open in Web Editor NEW
1.7K 50.0 186.0 8.33 MB

[UNMAINTAINED] A goal, task & habit tracker + personal dashboard to focus on what matters

Home Page: http://flowdash.co

License: MIT License

Python 48.95% Shell 0.35% JavaScript 47.35% HTML 0.29% CSS 3.07%
quantified-self personal-data habit-tracking reactjs gcp google-appengine task-management google-assistant facebook-messenger flow

flow-dashboard's Introduction

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

  • Node v11.15.0 (recommend using nvm)
  • 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 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.

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

  • 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 (in scripts/) to start the dev server locally.
  • 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.

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

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

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

  • 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 Assistant / 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

Integrations

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.

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

  • In console run GQL query
  • GQL: SELECT * WHERE __key__ HAS ANCESTOR KEY(User, [user_id])
  • Delete all entities

Contributing

Contributions are welcome! See CONTRIBUTING.md

License

MIT License

flow-dashboard's People

Contributors

abhi18av avatar cyber-syntax avatar dependabot[bot] avatar joshdance avatar onejgordon avatar pinei avatar rdimaio avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

flow-dashboard's Issues

Add a pomodoro timer to the dashboard

Would be great to include a pomodoro timer with the app. You could then set targets for how many aught to be completed in a week. It's an invaluable tool in aiding productivity. A fairly good open source implementation of a pomodoro tracker named tomato.es could serve as inspiration.

Birthday selection should allow for manual entry (text fields)

On the app/timeline page, the datepicker is pretty slick but I don't want to click ~12 * $my_age* times, as the default calendar opens to today, to get to my birthday. This should be made an optional input method and the primary method should be able to be entered via manual text entry.

Add support for capturing snapshots at random times

Snapshots are a few basic questions: who, where, what that will be prompted via a mobile app.

  • API to support snapshot submission

Analysis

  • View metrics against activity type, location, people, time of day, day of week

Goal-level assessments (as opposed to assessment of full goal term)

It's a little difficult to provide goal-term (full month) assessments when some goals were completed, some were partially completed, and others were not done.

Would be valuable to allow end-of-month assessments on a bullet by bullet basis. Perhaps this can keep the same 1-5 rating scale, and then average across all goals to get the goal-term's total assessment.

Allow deletion of tasks

Important to have a delete function, as archived but incomplete tasks count as unfinished.

Event date creation off by one issue

User reported:
Any time I add an event (including birthday) it actually subtracts
one from the date. IE my birthday is 3/15 but after clicking the 15th and
hitting save, it shows as the 14th.

The hex code color also seems to be broken for my second event.

Data models for readable notes & quotes/excerpts

Currently finding it useful to pull quotes (via kindle notes/highlights upload) into a Google Sheet, and then down into Flow as a FlashCard. Since we already have support for 'Readables', it may be useful to create a new (searchable) model for quotes, and a property for summary/notes.

On ingestion & UI, quotes from web could be made easy using a Chrome plugin, but Evernote is another option since it can capture excerpts from articles.

Data is not being loaded on server restart

Any idea why this would be happening? Was working until I restarted my server, and not the flow dashboard loads with no habits or data. Does something else need to be running besides just ./scripts/server.sh

Visualize journal tags on main journal analysis chart

Would be great to add tags to journal entries. This way you can analyse the impact that certain things in your life have on your happiness levels.

For example, you could tag a day with 'exercise', then when you view your chart showing your daily satisfaction over time it could label the days with the exercise tag. Then you could see if your daily satisfaction was impacted positively / negatively by that tag.

This would be great for running experiments with your daily routine.

unable to authenticate google fit

I'm able to create an account using using Google just fine. When I try to authenticate the Google Fit, I'm prompted to select my Google account and then asked to allow Flow to have the relevant permissions, but upon clicking "allow" I'm given the following error:

{"message": "Unauthorized", "success": false}

Ongoing events in timeline

Possible implementation is a boolean flag such as 'current' on the event, and for such events, set end date to today when rendering timeline.

Adding new habits is difficult

The initial habit creation wizard through the dashboard works well. However, adding more habits later requires you to go into the settings. It also does not present you with the same color picker that the initial habit set up did.

Support articles pushed from Evernote

Currently we only support quotes/excerpts, but adding the ability to add articles when saved in Evernote (parallel to the Pocket integration) would be useful.

Google signin on flowdash.co not working

When hitting sign in to initially create an account, the Google dialog opens and after sending it nothing happens. Same when repeating the sign in. Any further info I can/should provide?

Maybe related to #23

The Messenger bot does not provide clear assistance

Here's an example exchange:

Me: daily report
Bot: A few words on your day?
Me: Busy but interesting
Bot: How was the day?
Me: Good
Bot: I couldn't understand your answer, please try again
Me: The day was good
Bot: I couldn't understand your answer, please try again

A better way to address it would be

Me: daily report
Bot: A few words on your day? [I'm looking for a narrative response]
Me: Busy but interesting
Bot: How was the day? [I'm looking for a number]
Me: 6

Optional task-project linking

Request is to optionally link tasks with a project.

Would also require an adjustment to the project detail view to see a chronological list of linked tasks, and a convenient way to link new tasks to a project. UI for timing may be an extension of the current task WIP feature.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.