Time Management with Timelite

Effective time management is a crucial skill for personal and professional success. One effective way to improve your time management skills is to track the time you spend on tasks.

I have find out a great open source project that can help us with this matter, it’s called timelite and in this post I will show you have to install it with Docker.

The TimeLite Project

  • The source code of the timelite project is available in Github

Why do I need a Time Management tool?

There are several benefits of tracking the time of your tasks:

  • Improved Productivity: Tracking the time of your tasks can help you identify how much time you spend on each task, and where you may be losing time or getting distracted. This information can help you make adjustments to your workflow to become more productive and efficient.

    • For example, you may realize that you spend too much time on low-priority tasks, or that you get distracted by social media or email notifications. By identifying these areas for improvement, you can adjust your habits and become more productive.
  • Better Planning and Prioritization: Tracking the time of your tasks can also help you better plan and prioritize your work. By understanding how long it takes you to complete certain tasks, you can create more realistic timelines and set achievable goals.

    • This can help you avoid overcommitting or underestimating the time needed for a project, which can lead to stress and missed deadlines.
  • Increased Focus and Accountability: Tracking the time of your tasks can also increase your focus and accountability. When you know that you are tracking your time, you are more likely to stay focused on the task at hand and avoid distractions. Additionally, tracking your time can help you hold yourself accountable for meeting your goals and deadlines.

  • Data-Driven Insights: Tracking the time of your tasks can provide you with data-driven insights into your work habits and productivity. By analyzing this data, you can identify patterns and trends in your work, and make adjustments to improve your workflow.

    • For example, you may realize that you are most productive during certain times of day, or that you work best in short bursts with frequent breaks.

SelfHosting Timelite with Docker

Pre-Requisites!! Just Get Docker 馃悑馃憞

Important step and quite recommended for any SelfHosting Project - Get Docker Installed

It will be one command, this one, if you are in Linux:

apt-get update && sudo apt-get upgrade && curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh && docker version

And install also Docker-compose with:

apt install docker-compose -y
git clone https://github.com/overshard/timelite.git timelite &&
cd timelite

Timelite with Docker for local use

The docker compose file to run it locally is already downloaded with the repository and it looks like:

version: "3"

services:
  app:
    container_name: timelite
    build: .
    env_file: .env
    ports:
      - "${PORT}:${PORT}"
    command: yarn next:start
    restart: unless-stopped

You will need a .env file. There is one sample on the sample file folder in the repository, but as you can see we just need to provide the port, so let’s create one:

nano .env

and fill it with:

PORT=9099

In this case, due to the build of the container instead of pulling it from some container registry, we should expect this process to take longer than usual (only the first time we deploy it, as the docker image has to get built first).

docker-compose up -d #this will build (and run) the container

Now TimeLite is ready at localhost:9099

Exposing Timelite Locally with SLL with NGINX

For this setup, I assuma that you already have a working instance of NGINX proxy manager with docker, as I explained in this post.

version: "3"

services:
  app:
    container_name: timelite
    build: .
    env_file: .env
    ports:
      - "${PORT}:${PORT}"
    command: yarn next:start
    restart: unless-stopped
    networks:
      - nginx_nginx_network

networks:
  nginx_nginx_network:
    external: true

Exposing Timelite to the internet with Cloudflare Tunnel

Be aware that with this configuration anyone will be able to access your Timelite instance outside your home network.

  • Step 1: You need to setup the Cloudflare Tunnel Docker container with this guide to expose timelite securely.

  • Step 2: After having the Cloudflare Tunnel running, you can use this docker-compose file to have the Timelite instance running in the same network as Cloudflare:

version: "3"

services:
  app:
    container_name: timelite
    build: .
    env_file: .env
    ports:
      - "${PORT}:${PORT}"
    command: yarn next:start
    restart: unless-stopped
    networks:
      - tunnel

networks:
  tunnel:
    external: true
  • Step 3: go to the Cloudflare UI and add the public host names as explained in the Cloudflare post.

FAQ

Other F/OSS Tools to Track our Time Online

  • ActivityWatch - It is Cross Platform.

Wakatime + VSCode

A self-hosted WakaTime-compatible backend for coding statistics.