productivity-apps-wrapper
productivity-apps-wrapper copied to clipboard
Todoist, RescueTime, Wakatime data wrapper, aims to help you understand what you get done every day, keep track of it, get valuable statistics out of your daily performance, and performing even better...
Productivity apps wrapper
This project aims to be a wrapper for some common productivity apps that I use in my everyday basis. This project is the result of me wanting to find a way for looking at all my productivity data, and having to do it on my own due to the poor integrations made by zapier.com and automate.io.
It aims to help you do understand what you get done every day, keep track of it, get valuable statistics out of your daily performance, and performing even better on your next day.
Apps wrapped
-
Todoist for tasks management
- Habits project independently
- Goals project independently
-
RescueTime for passive time tracking
-
Wakatime (IDE's plugin for programming time tracking)
-
Notion as the place where the data of the previous 3 resides.
Tools used
- Todoist API
- RescueTime API (Special thanks to the @rescue_time team, who helped me with API fixes for this)
- WakaTime API
- Notion new Beta official API
- Notion Unofficial python API (without this I also could've not achieved this project)
- Heroku for deploying the app as is the simplest and quickest I found
Screenshots 📸
Image | Explanation |
---|---|
![]() |
This is the main page wrapping the following next pages shown here below |
Database | Details |
---|---|
![]() |
![]() |
Setting up your own instance 🚀
Todoist setup
- Projects named
Goals
and one namedHabits
are required for the Habits and Goals pages respectively, everything else is dynamic.
Notion setup
- Generate the notion token for the integration and share every page needed here with the integration https://developers.notion.com/docs#step-1-create-an-integration
- Get the Token v2 for the unofficial API as explained https://github.com/jamalex/notion-py#quickstart
You need to create a few pages:
Duplicate everything as a Template
Explanation
- Day reviews pages (as a calendar)
-
Projects table with the next columns
-
Task
as the title -
Parent project
as select -
Project
as select -
Section
as select -
Tags
as multi select -
Creation Date
as Date -
Completion Date
as Date -
Id
as text
-
-
Goals Progress Page:
-
Task
as the title -
Goal
as select (A todoist section) -
Date Completion
as Date -
Id
as number
-
-
Habits Page
-
Date
for the title -
-
Next columns for each habit -
-Date
for setting a Date object
-
-
Daily stats Page
-
Day
for the title -
Pulse
Number column -
Total hours
Number column -
Productive hours
Number column -
Distracting hours
Number column -
Neutral hours
Number column -
SWE hours
Number column -
Learning hours
Number column -
Entertainment hours
Number column -
Productivity %
Number column (% formatted) -
Distracting %
Number column (% formatted) -
Neutral %
Number column (% formatted) -
SWE %
Number column (% formatted) -
Learning %
Number column (% formatted) -
Entertainment %
Number column (% formatted) -
-Date
for setting a Date object -
Id
as number
-
-
Coding stats Page
-
Date
for the title -
Total
Seconds with total hours -
-Date
for setting a Date object
-
Code setup
- Install the
requirements.txt
withpip install -r requirements.txt
- Setting your env vars
-
NOTION_API_VERSION
: https://developers.notion.com/reference/versioning -
NOTION_SECRET
: https://developers.notion.com/docs#getting-started -
NOTION_V2_TOKEN
https://github.com/jamalex/notion-py#quickstart -
TODOIST_TOKEN
: https://developer.todoist.com/sync/v8/#authorization -
RESCUETIME_API_KEY
: https://www.rescuetime.com/anapi/manage -
WAKATIME_API_KEY
: https://wakatime.com/settings/account -
NOTION_TODOIST_VIEW
= The projects table page URL -
NOTION_TODOIST_DB
= Projects table ID (take it from the URL) -
NOTION_RESCUETIME_DB
= Daily Stats page id -
NOTION_WAKATIME_DB
= Coding stats page id -
NOTION_HABITS_DB
= Habit Tracker page id -
NOTION_DAY_REVIEWS_DB
= Day Review page ID -
NOTION_GOALS_VIEW
= Goals Progress page URL -
NOTION_GOALS_DB
= Goals Progress ID -
TODOIST_HABITS_PROJECT_ID
= Todoist project for habits -
TODOIST_GOALS_PROJECT_ID
=Todoist project for goals -
TODOIST_TOIGNORE_PROJECTS
=Todoist projects you may want toexclude -
SYNC_SINCE
= The date from you want to sync all your data -
SYNC_TIMEZONE
= Timezone you're in (specially important for day reviews) -
SYNC_EVERY_HOURS
=1 (Synchronize all your data every n hours) -
SYNC_DAY_REVIEWS_AT
=21:50 (Time at what you want the script to create the day review pages, I do mine at 22:00, so 21:50 it's fine for me)
- Update the
example.env
file and fill it with the variablesNOTION_API_VERSION=2021-05-13 NOTION_SECRET= NOTION_V2_TOKEN= TODOIST_TOKEN= RESCUETIME_API_KEY= WAKATIME_API_KEY= NOTION_TODOIST_VIEW= NOTION_TODOIST_DB= NOTION_RESCUETIME_DB= NOTION_WAKATIME_DB= NOTION_HABITS_DB= NOTION_DAY_REVIEWS_DB= NOTION_GOALS_VIEW= NOTION_GOALS_DB= TODOIST_HABITS_PROJECT_ID=2266970739 TODOIST_GOALS_PROJECT_ID=2254137012 TODOIST_TOIGNORE_PROJECTS="[2250617044, 2232633941, 2258542988]" SYNC_SINCE=2021-01-01 SYNC_TIMEZONE=America/Bogota SYNC_EVERY_HOURS=1 SYNC_DAY_REVIEWS_AT=21:50
- Activate env vars with
source example.env
Deployment setup
- Create a heroku account
- Set billing for the account (you'll spend $0 hosting this application)
- Create an app
- Set the Buildpack to heroku/python
- Add the git remote from heroku
- Push to the remote
TODOs
- Integrate Apple Health data (Workouts, Sleep, Steps, etc ...)
- Page details content as tables instead of
\t
separated strings