Skip to main content

No project description provided

Project description

Diario

A personal diary application inspired by the bullet journal method.

Diario is a strongly opinionated application: decisions about structure, format, and time subdivision are intentional and not configurable. What is configurable by the user are the Markdown template files located in the templates directory.

The application was created to address the following needs:

  • I wanted a personal note management system organized by days, weeks, months, quarters, and years.
  • I wanted a system that is maintainable over the long term, ideally for the entire lifetime of the user.
  • I wanted the application data not to depend on the application itself. Even if the app stopped working or was no longer maintained, all documents would remain readable, editable, and usable as simple Markdown files organized in directories.
  • I wanted a system for which creating a backup is trivial. In this specific case, it is enough to copy a single directory.
  • I wanted a system compatible with common cloud storage services (Dropbox, iCloud, Google Drive, …) and efficiently versionable with Git.
  • I wanted a system simple enough to be used directly with a plain text editor.
  • I wanted daily files to automatically reference weekly files, weekly files to reference monthly files, and so on.
  • I wanted everything to be based on nested directories and simple UTF-8 encoded text files, to ensure that the data will still be easily readable and writable even 20 years from now.
  • I wanted to use Markdown as the file format, so that writing could be done in plain text while still allowing some basic structure and formatting. Markdown is ideal because it represents an approach to expressing style in plain text, rather than being a full document format.
  • I wanted all Markdown files to be manually editable at any time using any text editor.
  • I wanted everything inside each subdirectory—except the _index.md file—to be implicitly treated as an attachment to the corresponding day, week, month, quarter, or year document.
  • I wanted to rely only on functions available in the Python standard library (>= 3.11), in order to ensure maximum compatibility and long-term maintainability.

Time subdivision

Time is subdivided into days, weeks, months, quarters, and years according to the ISO 8601 standard, which defines the week as starting on Monday and ending on Sunday.

  • Daily: {destination}/diary/daily/YYYY/MM/DD/
  • Weekly: {destination}/diary/weekly/YYYY/WW/
  • Monthly: {destination}/diary/monthly/YYYY/MM/
  • Quarterly: {destination}/diary/quarterly/YYYY/QQ/
  • Yearly: {destination}/diary/yearly/YYYY/

Note 1: WW is a number from 01 to 53 representing the ISO 8601 week number.
Note 2: QQ is a number from 01 to 04 representing the quarter.

Installation

For now, the application must be installed by downloading the project and running the following command from the project directory:

pipx install --force .

The application expects a configuration file named config.json to exist inside the ~/.config/diario/ directory. If the file, the directory, or both do not exist, they will be created automatically with default settings.

Both the destination directory and the default text editor can be changed by editing the configuration file located at ~/.config/diario/config.json.

These are the default configuration parameters:

{
  "path": "~/.config/diario/data",
  "locale": "en_US",
  "editor": "nano"
}

The editor parameter can be either a string or a list of strings, for example: ["open", "-a", "/Applications/MarkEdit.app/Contents/MacOS/MarkEdit"]

Usage

To start the application and create a document for the current day, run:

diario

After running the command, the application will create all required documents and invoke the text editor defined in the configuration file. By default, the application will attempt to use the nano editor.

To create a document for a specific day, run:

diario 24-12-2027

To create a document for the day after the current one, run:

diario --tomorrow

To automatically create all documents starting from today and covering the next 365 days, run:

diario --populate

For additional options, refer to the built-in help:

diario --help

Example directory structure created by the application

/Users/cesco/Documents/Diario/
├── diary
│   ├── daily
│   │   ├── 2026
│   │   │   ├── 01
│   │   │   │   ├── 25
│   │   │   │   │   └── _index.md
│   │   │   │   ├── 26
│   │   │   │   │   └── _index.md
│   │   │   │   ├── 27
│   │   │   │   │   └── _index.md
│   │   │   │   ├── 28
│   │   │   │   │   └── _index.md
│   │   │   │   ├── 29
│   │   │   │   │   └── _index.md
│   │   │   │   ├── 30
│   │   │   │   │   └── _index.md
│   │   │   │   └── 31
│   │   │   │       └── _index.md
│   │   │   ├── 02
│   │   │   │   ├── 01
│   │   │   │   │   └── _index.md
│   │   │   │   ├── 02
│   │   │   │   │   └── _index.md
.   .   .   .   .   .
│   ├── monthly
│   │   ├── 2026
│   │   │   ├── 01
│   │   │   │   └── _index.md
│   │   │   ├── 02
│   │   │   │   └── _index.md
│   │   │   ├── 03
│   │   │   │   └── _index.md
│   │   │   ├── 04
│   │   │   │   └── _index.md
│   │   │   ├── 05
│   │   │   │   └── _index.md
│   │   │   ├── 06
│   │   │   │   └── _index.md
│   │   │   ├── 07
│   │   │   │   └── _index.md
│   │   │   ├── 08
│   │   │   │   └── _index.md
│   │   │   ├── 09
│   │   │   │   └── _index.md
│   │   │   ├── 10
│   │   │   │   └── _index.md
│   │   │   ├── 11
│   │   │   │   └── _index.md
│   │   │   └── 12
│   │   │       └── _index.md
.   .   .
│   ├── quarterly
│   │   ├── 2026
│   │   │   ├── 01
│   │   │   │   └── _index.md
│   │   │   ├── 02
│   │   │   │   └── _index.md
│   │   │   ├── 03
│   │   │   │   └── _index.md
│   │   │   └── 04
│   │   │       └── _index.md
.   .   .
│   ├── weekly
│   │   ├── 2026
│   │   │   ├── 04
│   │   │   │   └── _index.md
│   │   │   ├── 05
│   │   │   │   └── _index.md
│   │   │   ├── 06
│   │   │   │   └── _index.md
│   │   │   ├── 07
.   .   .   .
│   └── yearly
│       ├── 2026
│       │   └── _index.md
└── templates
    ├── daily.md
    ├── monthly.md
    ├── quarterly.md
    ├── weekly.md
    └── yearly.md

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

diario_cli-1.0.0.tar.gz (9.6 kB view details)

Uploaded Source

Built Distribution

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

diario_cli-1.0.0-py3-none-any.whl (11.3 kB view details)

Uploaded Python 3

File details

Details for the file diario_cli-1.0.0.tar.gz.

File metadata

  • Download URL: diario_cli-1.0.0.tar.gz
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.4 CPython/3.12.12 Darwin/25.2.0

File hashes

Hashes for diario_cli-1.0.0.tar.gz
Algorithm Hash digest
SHA256 b28f9678cd0803d71fbf90d1ed14a2b737e5d0c8447052b6a99c5caf2f3e4851
MD5 fdcd03002d658c90a0c2fed1a3e0b7c9
BLAKE2b-256 0bcd7c15e66ee18ca9508ef1daa82c52c04e1dacea2c62d7ecb47048eea3b8a6

See more details on using hashes here.

File details

Details for the file diario_cli-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: diario_cli-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 11.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.4 CPython/3.12.12 Darwin/25.2.0

File hashes

Hashes for diario_cli-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 42fba74b9b81e600c6b1fff2e8dab7858af8d834cb17acbb3ad4a072201bf418
MD5 be1783f8a3e5a53aaec6161db863e42f
BLAKE2b-256 cfe4919132ca82a915a2e17abfd55a579a23b864c770637d767776f246f4af17

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