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.
-
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.
- 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
Image | Explanation |
---|---|
This is the main page wrapping the following next pages shown here below |
Database | Details |
---|---|
- Projects named
Goals
and one namedHabits
are required for the Habits and Goals pages respectively, everything else is dynamic.
- 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
Duplicate everything as a Template
- Day reviews pages (as a calendar)
- Projects table with the next columns
Task
as the titleParent project
as selectProject
as selectSection
as selectTags
as multi selectCreation Date
as DateCompletion Date
as DateId
as text
- Goals Progress Page:
Task
as the titleGoal
as select (A todoist section)Date Completion
as DateId
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 titlePulse
Number columnTotal hours
Number columnProductive hours
Number columnDistracting hours
Number columnNeutral hours
Number columnSWE hours
Number columnLearning hours
Number columnEntertainment hours
Number columnProductivity %
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 objectId
as number
- Coding stats Page
Date
for the titleTotal
Seconds with total hours-Date
for setting a Date object
- 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
- 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
- Integrate Apple Health data (Workouts, Sleep, Steps, etc ...)
- Page details content as tables instead of
\t
separated strings