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
Goalsand one namedHabitsare 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
Taskas the titleParent projectas selectProjectas selectSectionas selectTagsas multi selectCreation Dateas DateCompletion Dateas DateIdas text
- Goals Progress Page:
Taskas the titleGoalas select (A todoist section)Date Completionas DateIdas number
- Habits Page
Datefor the title-Next columns for each habit-Datefor setting a Date object
- Daily stats Page
Dayfor the titlePulseNumber columnTotal hoursNumber columnProductive hoursNumber columnDistracting hoursNumber columnNeutral hoursNumber columnSWE hoursNumber columnLearning hoursNumber columnEntertainment hoursNumber columnProductivity %Number column (% formatted)Distracting %Number column (% formatted)Neutral %Number column (% formatted)SWE %Number column (% formatted)Learning %Number column (% formatted)Entertainment %Number column (% formatted)-Datefor setting a Date objectIdas number
- Coding stats Page
Datefor the titleTotalSeconds with total hours-Datefor setting a Date object
Code setup
- Install the
requirements.txtwithpip 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_TOKENhttps://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.envfile 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
\tseparated strings


