Skip to main content

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

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.

Metadata

Release files for focus-blocks 0.2.12

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for focus-blocks 0.2.12
File Size Uploaded Provenance Actions
focus_blocks-0.2.12.tar.gz 1.8 MB Without provenance Details for focus_blocks-0.2.12.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for focus-blocks 0.2.12
File Interpreter ABI Platform Actions
focus_blocks-0.2.12-py3-none-any.whl Python 3 none any Details for focus_blocks-0.2.12-py3-none-any.whl

Total release size: 1.8 MB

Release files / focus_blocks-0.2.12.tar.gz

Download URL focus_blocks-0.2.12.tar.gz
Size 1.8 MB
Tags Source
SHA-256 checksum
How to use checksums
e5a7dd241a8fbf5ac22655fa024b1555e495f8bec4e284c0613e893d24c1b557
BLAKE2b-256 checksum
How to use checksums
737dbdae366691e9ba32993cfc870419f25fa367afff037350bba561a7f3990b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.5.15

Release files / focus_blocks-0.2.12-py3-none-any.whl

Download URL focus_blocks-0.2.12-py3-none-any.whl
Size 19.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
114cb10271a7468ea5f85280cbba629bcd22e0044db227f6250d054d04f29cbb
BLAKE2b-256 checksum
How to use checksums
71100d4c321729009a8ce84f668aa248e08e45da4b4af6421245e5e0f1e563f6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.5.15

Security for focus-blocks 0.2.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page