/page-o-mat

Generates a journal PDF from a specification.

Primary LanguagePythonMIT LicenseMIT

Page-o-Mat Journal Generator

Generates a journal PDF from a specification. Suitable for printing into a book.

This is a work in progress. Currently, it is intended to generate the 2023 daily journal described in https://loufranco.com/blog/recurring-journals.

There is a configuration file that allows some customization, but the page types are limited.

Documentation

This is a C4 System Context diagram for the Page-o-Mat system. Blue boxes are part of the system and gray boxes are shown for context.

C4Context
  %% This is a Mermaid diagram for the system context
  Person(designer, "Journal Designer")
  System(pageomat, "Page-o-Mat", "Makes Journal PDFs")

  Person_Ext(journaler, "Journal User")
  System_Ext(printservice, "Print Service", "A PDF printing service (e.g. LuLu).")


  Rel(designer, pageomat, "Creates specs for")
  Rel(pageomat, printservice, "Generates PDFs for")
  Rel(journaler, printservice, "Buys journals from")

  UpdateLayoutConfig($c4ShapeInRow="2", $c4BoundaryInRow="1")
  UpdateRelStyle(designer, pageomat, $offsetX="-40", $offsetY="40")
  UpdateRelStyle(journaler, printservice, $offsetX="-40", $offsetY="40")

Full docs

Setup

There is a requirements file to install dependencies. Using pip, you can run

$ pip install -r requirements.txt

Usage

$ python pageomat/main.py -h
usage: main.py [-h] --config CONFIG --output OUTPUT

Runs Page-o-Mat

options:
  -h, --help       show this help message and exit
  --config CONFIG  name of the journal YAML config file
  --output OUTPUT  name of the pdf file

$ python pageomat/main.py --config config/2024-recurring-journal.yaml --output 2024.pdf

Sample configuration files can be found in the config folder.