Focus Blocks
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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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.