Summary:
- Personalised task tracking and timing app (MVP).
- Tech Stack (Django + PostgreSQL)
- API functionality for future cross platform integration.
- CI / CD workflow via GitHub actions.
Background
A habit I got into at university was goal setting. Simply put, trying to break down what I wanted to achieve in the next 3 years, year, month, week and that day. This I first picked up as an undergrad at the University of York, when listening to a local entrepreneur who was invited to give a talk! Sadly I can’t remember his name but his talk stuck with me and so far is a habit I continue to do to this day.
Over the years this habit has taken many forms from post it notes to using apps like Trello & Monday. However, over time I simply reverted to using two simple good docs, one for long term goals (monthly/yearly) and another for short term goals (daily / weekly). This simplistic system I found easiest to use and keep track.
However as life got busier and the job lists continued to grow, the simple google doc for daily and weekly task tracking was beginning to get overwhelmed. Also my work was now becoming split across several projects and I wanted to balance my scientific research alongside personal projects and consulting work.
To address it was time to reimagine the simple Google doc. I needed a system where I could automatically track what I was working on and log time spent on each task and project. This I could then use to not only check if I was hitting my goals but track how long I was spending on them. In the long run I hope to tie this into a system where I can assess productivity as a factor of the time spent on a given task. Then be able to identify the trade off when productivity has dropped below a certain threshold that it would be better to rest and recharge to increase what I can get done in the long run.
With this functionality in mind I set about building my own task tracking application. The long term goal is to have it working cross platform, so I could use it on any device, whether conducting an experiment in the lab or editing a document on my phone in the tube. However, first i would settle with a web-based MVP. I know there were some existing SaaS subscriptions to solve this problem but I wanted to build my own for several reasons:
-
Privacy. I wanted full control of my personal data and projects I was working on. No snooping or targeted advertising.
-
Flexibility. Full control over app features so I could improve it over time and figure out what works for me.
-
Fun. Through a scientific research project I came across the website OpenPrescribing. This is a brilliant open data source and I wanted to get experience replicating their tech stack which used (Django + PostgreSQL).
With this in mind I got building and after a few weekend sprints had my own MVP app up and running.
Progress so far
The demo video below, highlights key features of the MVP.
To summarise the following functionality has been built:
-
A hierarchical data structure, with the ability to add, clients, project and tasks.
-
Ability to log and record tasks in real time. Alongside the ability to add in historic tasks if not recorded in real time using the app.
-
Obtain a temporal summary of the time I spend working on each given task, project and client either by week or month.
-
A user specific environment, just in case I want to share tasks, projects or clients across users in the future as part of a wider team.
Alongside this I added in API functionality with cross platform dream in mind. The video demo below shows how using the API you can:
-
Request a JWT access token.
-
Access user specific content.
-
Add new clients, projects and tasks all via the API.
Sharing
If anyone would like a copy of this repo and set of hosting instructions, get in touch and I am more than happy to share the codebase!
P.s. this is not in a public repository for the privacy and security reasons highlighted above!