{"id":13586268,"url":"https://github.com/onejgordon/flow-dashboard","last_synced_at":"2025-05-15T16:05:21.006Z","repository":{"id":45680921,"uuid":"84657014","full_name":"onejgordon/flow-dashboard","owner":"onejgordon","description":"[UNMAINTAINED] A goal, task \u0026 habit tracker + personal dashboard to focus on what matters","archived":false,"fork":false,"pushed_at":"2024-05-02T05:15:12.000Z","size":8533,"stargazers_count":1675,"open_issues_count":49,"forks_count":185,"subscribers_count":46,"default_branch":"develop","last_synced_at":"2025-04-07T21:12:56.052Z","etag":null,"topics":["facebook-messenger","flow","gcp","goodreads","google-appengine","google-assistant","google-fit","habit-tracking","personal-data","quantified-self","reactjs","task-management"],"latest_commit_sha":null,"homepage":"http://flowdash.co","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/onejgordon.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-03-11T14:46:24.000Z","updated_at":"2025-03-21T20:39:14.000Z","dependencies_parsed_at":"2023-01-20T04:18:41.807Z","dependency_job_id":"0e13b6cc-267e-4549-8143-fc15fd12f179","html_url":"https://github.com/onejgordon/flow-dashboard","commit_stats":null,"previous_names":[],"tags_count":39,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onejgordon%2Fflow-dashboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onejgordon%2Fflow-dashboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onejgordon%2Fflow-dashboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onejgordon%2Fflow-dashboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/onejgordon","download_url":"https://codeload.github.com/onejgordon/flow-dashboard/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254374411,"owners_count":22060610,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["facebook-messenger","flow","gcp","goodreads","google-appengine","google-assistant","google-fit","habit-tracking","personal-data","quantified-self","reactjs","task-management"],"created_at":"2024-08-01T15:05:26.292Z","updated_at":"2025-05-15T16:05:20.959Z","avatar_url":"https://github.com/onejgordon.png","language":"Python","readme":"\n# Flow Dashboard (UNMAINTAINED)\n\nFlow is no longer maintained. We are disabling new account creation, and recommend exporting user data to ensure future access.\n\n## Purpose\n\nFlow 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.\n\nIf you just want look around or get started with Flow, you can create a free account at http://flowdash.co.\n\nTo spin up your own instance, or start contributing to this repo, see below.\n\n## API Documentation\n\nThe docs are still a work in progress. Check out the current docs at http://docs.flowdash.apiary.io/#\n\n## Setup\n\nTo deploy a new instance of Flow, use the following instructions.\nNote that Flow uses the Python 2.7 runtime in GCP, which is now deprecated! \n\n### Obtain Google App Engine SDK\n\nDownload the Cloud SDK from Google.\n`https://cloud.google.com/appengine/downloads`\n\n### Setup a new Google Cloud project\n\nVisit the Google developer's console: \u003chttps://console.developers.google.com/\u003e\nCreate 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.\n\n### Set up a gcloud config\n\n```\ngcloud config configurations create [my-flow-config-name]\ngcloud config set project [project-id]\ngcloud config set account [my email]\n```\n\nTo activate this configuration: `gcloud config configurations activate [my-flow-config-name]`.\n\n### Fork the repo\n\nBranch or fork this repository into a project directory.\n\n### Setup dependencies\n\n* Node v11.15.0 (recommend using nvm)\n* Ensure you have npm and gulp installed.\n\n```\nnpm install -g gulp\nnpm install\n```\n\n### Update code configuration\n\nUpdate 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.\n\nCreate 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`.\n\n- **secrets.py** ::\n\t`./settings/secrets_template.py =\u003e ./settings/secrets.py`\n\n- **client_secrets.js** ::\n\t`./src/js/constants/client_secrets.templates.js =\u003e ./src/js/constants/clients_secrets.js`\n\n\n### Run the dev server locally\n\nTo 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.\n\n* `virtualenv env`\n* `source env/bin/activate`\n* `pip install -t lib -r requirements.txt`\n* `pip install -r local.requirements.txt`\n* `gcloud components update`\n* `cd scripts`\n* `./server.sh` (in scripts/) to start the dev server locally.\n* Run `gulp` in another terminal to build JS etc\n* Visit localhost:8080 to run the app, and localhost:8000 to view the local dev server console.\n\n#### Support for python 2.7 and libraries on M1 Macs\n\nTested method on M1 Pro as per [this SO answer](https://stackoverflow.com/a/67569068).\n\n```\nCONDA_SUBDIR=osx-64 conda create -n py27 python=2.7  # include other packages here\n\n# ensure that future package installs in this env stick to 'osx-64'\nconda activate py27\nconda config --env --set subdir osx-64\n```\n\n### Deploy\n\n* `cd scripts`\n* `./deploy.sh 0-1` to deploy a new version 0-1 and set is as default\n\nIf you get a permission denied error on a logs directory during deploy, you may need to run the above command wish sudo.\n\nVisit `https://[project-id].appspot.com` to see the app live.\n\n## Features\n\n* Daily journal / survey\n\t* Configurable questions\n\t* Optional location pickup \u0026 mapping\n\t* Extract @mentions and #tags from configured open-ended responses (auto-suggest)\n\t* Segment analysis of journals by tag (highlight journal days with/without + show averages)\n* Habit tracking ala habits app\n\t* With weekly targets\n\t* Commitments\n\t* Optional daily targets for 'countable' habits\n* Tracking top tasks for each day\n\t* Analyze tasks completed: on time, late, not completed, on each given day\n* Monthly/year/long-term goals\n\t* Goal assessment report at end of month\n\t* Rating for each goal monthly defined\n* Ongoing Projects tracking\n\t* Track time of each progress increment\n\t* Link tasks with projects\n\t* Define labeled milestones\n\t* View 'burn-up' chart of completion progress over time\n* Analysis\n\t* Show summary charts of all data reported to platform\n* Google Assistant / Home / Facebook Messenger integration for actions like:\n\t* \"How am I doing\"\n\t* \"What are my goals for this month\"\n\t* \"Mark 'run' as complete\"\n\t* \"Daily report\"\n* Reading widget\n\t* Show currently-reading articles / books\n\t* Sync quotes from evernote / Kindle\n\t* Sync articles from Pocket\n\t* Mark articles / books as favorites, and add notes\n\t* Quotes \u0026 articles fully searchable\n* Flash card widget for spreadsheet access (e.g. random quotes, excerpts)\n* Export all data to CSV\n\n## Integrations\n\n### Data source integrations\n\n* Public Github commits\n* Google Fit - track any activity durations by keyword\n* Evernote - pull excerpts from specified notebooks\n* Pocket - Sync stored articles \u0026 add notes\n* Goodreads - Sync currently reading shelf\n* Track any abstract data via REST API\n\n### Setup (for separate instance)\n\nAll 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.\n\n#### Pocket\n\nCreate an app at https://getpocket.com/developer/ and update settings.secrets.POCKET_CONSUMER_KEY\n\n#### Evernote\n\n1. Request an API Key at https://dev.evernote.com\n2. Request a webhook at https://dev.evernote.com/support/ pointing to [Your Domain]/api/integrations/evernote/webhook\n\n#### Google Home\n\nWe've used API.AI to create an agent that integrates with Google Actions / Assistant / Home. To connect Assistant with a new instance of Flow:\n\n1. Visit https://api.ai\n2. Update the agent.json configuration file in static/flow-agent\n3. Fill in config params in [Brackets] with your configuration / webhook URLs, etc\n4. Import the agent.json to API.AI\n5. Go to integrations and add and authorize 'Actions on Google'\n6. Preview the integration using the web preview\n\n#### Facebook Messenger\n\nThe messenger bot lives at https://www.facebook.com/FlowDashboard/\n\nTo 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\n\n#### BigQuery\n\n(Beta / admin only currently) Push daily panel data to BigQuery for additional analysis, e.g. run regressions\nwith TensorFlow, etc.\n\n## Admin Operations Cheatsheet\n\n### User data deletion\n\n* In console run GQL query\n* GQL: `SELECT * WHERE __key__ HAS ANCESTOR KEY(User, [user_id])`\n* Delete all entities\n\n## Contributing\n\nContributions are welcome! See [CONTRIBUTING.md](.github/CONTRIBUTING.md)\n\n## License\n\nMIT License\n","funding_links":[],"categories":["Python","Open Source Projects"],"sub_categories":["Wealth"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonejgordon%2Fflow-dashboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fonejgordon%2Fflow-dashboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonejgordon%2Fflow-dashboard/lists"}