Skip to main content

Focus Blocks: Simple and elegant daily time management tool.

Project description

Focus Blocks

Build & Test uv Ruff

A CLI program for implementing Focus Blocks in your daily life.

Intro

Focus Blocks is my take on time management inspired by Flow State, Pomodoro Technique, Timeboxing, and Deep Work. Please read the Introduction to Focus Blocks first to understand the motivation for the creation of this program.

fob is a simple CLI program that lets you plan your month, and then visualize & update your progress within the Focus Blocks time management framework.

It is written in Python with minimal dependencies and can be installed on Mac, Linux, and Windows.

Quick Start

First, install uv (directions here)

Install the required version of python:

uv install python 3.12

Install Focus Blocks:

uv tool install focus-blocks

[!WARNING]
Common mistake: The package name is focus-blocks, not fob. Do not do this: uv tool install fob

Now, the fob program is available from anywhere on the system. Try:

fob help

Upgrade

Upgrading focus-blocks doesn't affect the database, so this is safe.

uv tool upgrade focus-blocks

Uninstall

uv tool uninstall focus-blocks

A Day in the Life

It's the beginning of a new month - let's set our goals.

It's a new day! Say good morning!

Check off the first block of the day:

Let's remind ourselves what the day ahead looks like:

Oops, we couldn't do block 3. Let's change that block to 'Buffer', which is exactly for unforeseen things like this.

Checking off the final block for the day. Great job.

Come back tomorrow and say good morning to repeat.

Additional Features

Cloud Sync

Bring your own cloud.

fob runs on a single database file. You can store this database on Dropbox or your own cloud. Just pass the path to the --database option when running fob. For example:

fob --database /home/tensorturtle/Dropbox/my-fob.db help

For more convenience, you can export a FOB_DB_PATH variable in your shell. For example, add the following line to ~/.bashrc (for bash shell):

export FOB_DB_PATH="/home/tensorturtle/Dropbox/my-fob.db"
source ~/.bashrc

Development

Install uv.

Clone this repository:

git clone https://github.com/tensorturtle/fob.git

Run fob without installing it by using uv run:

uv run fob help

Run app in debug mode:

uv run fob --debug

Use database at custom path:

uv run fob --database ~/Downloads/testing_fob.db

The so-called database is actually just a human-readable JSON file. To see its location:

uv run fob info

Testing

uvx pytest

This is an end-to-end test. It installs fob to a temporary directory using install.sh and runs commands against it. Github Actions is set up to run the same test upon pushing to main branch.

Distribution

Update version number in pyproject.toml and utils/utils.py

Build and publish package to PyPI:

rm -r dist/
uv build
uv publish --token $TOKEN

Wait a moment for PyPI database to be updated (maybe a minute) and run:

uvx --from focus-blocks@latest fob

Database Versioning

This package uses SemVer, with an additional convention:

Releases with the same major-minor (0.0.X) version share the same database schema. If a new major-minor version is released, a new database is created and no migrations occur. The old database is not deleted.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

focus_blocks-0.2.12.tar.gz (1.8 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

focus_blocks-0.2.12-py3-none-any.whl (19.7 kB view details)

Uploaded Python 3

File details

Details for the file focus_blocks-0.2.12.tar.gz.

File metadata

  • Download URL: focus_blocks-0.2.12.tar.gz
  • Upload date:
  • Size: 1.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.15

File hashes

Hashes for focus_blocks-0.2.12.tar.gz
Algorithm Hash digest
SHA256 e5a7dd241a8fbf5ac22655fa024b1555e495f8bec4e284c0613e893d24c1b557
MD5 13b0363bb4be9cecadfe4a648a999c08
BLAKE2b-256 737dbdae366691e9ba32993cfc870419f25fa367afff037350bba561a7f3990b

See more details on using hashes here.

File details

Details for the file focus_blocks-0.2.12-py3-none-any.whl.

File metadata

File hashes

Hashes for focus_blocks-0.2.12-py3-none-any.whl
Algorithm Hash digest
SHA256 114cb10271a7468ea5f85280cbba629bcd22e0044db227f6250d054d04f29cbb
MD5 5043d0ea4de5f296f6e3060b0f3b1beb
BLAKE2b-256 71100d4c321729009a8ce84f668aa248e08e45da4b4af6421245e5e0f1e563f6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page