Feather Flow

Tests Lint Coverage

Feather Flow is a digital planner PDF generator built on top of Jinja2 templates and Playwright. Design your planner pages in HTML/CSS, feed them to pyplanner, and get a print-ready PDF.

cover year month day

Downloads

Prebuilt PDFs are generated automatically from the latest main branch. Click a link to download the file directly:

Prerequisites

  • Python 3.12 or newer

  • pip (Python package installer)

  • Git (to clone the repository)

Python installations from python.org and the Windows Store include pip out of the box. On Linux it is often shipped in a separate package. Install it with your distribution’s package manager if the pip command is not available:

Debian / Ubuntu:

sudo apt install python3-pip python3-venv

Fedora:

sudo dnf install python3-pip

Arch Linux:

sudo pacman -S python-pip

macOS (Homebrew):

brew install python

Getting Started

Clone the repository:

git clone https://github.com/stamerlan/feather-flow.git
cd feather-flow

It is recommended to install Feather Flow inside a virtual environment - a self-contained directory that keeps the project’s dependencies isolated from the system Python and from other projects. This avoids version conflicts and lets you remove everything cleanly by simply deleting the .venv folder.

Create and activate a virtual environment, then install the package in editable mode. An editable install (-e) creates a link to the source tree instead of copying files, so code changes take effect immediately without reinstalling.

On Linux / macOS:

python -m venv .venv
source .venv/bin/activate
pip install -e .

On Windows:

python -m venv .venv
.venv\Scripts\activate
pip install -e .

Playwright requires a browser binary. Install it once after the package is installed:

playwright install chromium

Usage

Generate a PDF from a template. You can pass the planner directory - pyplanner looks for <dirname>/<dirname>.html inside it:

pyplanner planners/ff-2026

Generate HTML instead of PDF:

pyplanner planners/ff-2026 --html

Generate a PDF with public holidays for a given country (ISO 3166-1 alpha-2 code). The built-in providers are used by default. When --country is given, the first day of the week is set automatically based on the country’s convention:

pyplanner planners/ff-2026 --country pl

Set the first day of the week explicitly (name or number 0-6, where 0 = Monday and 6 = Sunday). This overrides any country default:

pyplanner planners/ff-2026 --first-weekday sunday

Combine a country with an explicit first weekday:

pyplanner planners/ff-2026 --country us --first-weekday monday

Suppress progress output:

pyplanner -q planners/ff-2026

Run pyplanner --help for the full list of options.

Building the Documentation

The project uses Sphinx with the Read the Docs theme.

Install the development dependencies (includes documentation and test tools):

pip install -e .[dev]

Build the HTML docs.

On Linux / macOS:

make -C docs html

On Windows:

cd docs
make.bat html

The generated site is written to docs/_build/html/. Open docs/_build/html/index.html in a browser to view it locally.

On every push to main, the Sphinx Documentation workflow builds and deploys the docs to GitHub Pages automatically.