Це мій особистий CLI застосунок для керування моїм журналом станів психічного здоров'я.
Find a file
2025-10-02 20:46:40 +03:00
.idea Deleted all unusefull stuff from .idea folder 2025-05-07 09:43:43 +03:00
assets Added official mhj logo 2024-03-14 05:04:45 +02:00
mhj Add title page function 2025-10-02 20:46:40 +03:00
.gitignore Deleted all unusefull stuff from .idea folder 2025-05-07 09:43:43 +03:00
example.test.env Added today and init commands 2024-02-13 05:13:20 +02:00
main.py Added usage helix editor option 2025-05-07 09:17:29 +03:00
pyproject.toml Add EDITOR env variable 2025-08-31 23:17:07 +03:00
README.md Add title page function 2025-10-02 20:46:40 +03:00
requirements.txt Reformat code by Black 2025-08-15 14:39:52 +03:00

Mental Health Journal

Wish Me Mental Stability Please don't upload to GitHub Python 3.13

UA

Це мій особистий CLI застосунок для керування моїм журналом станів психічного здоров'я.

Суть застосунку в керуванні файлами у форматі Markdown, у яких я описую свій стан кілька разів на день з часовими мітками.

Специфікація

Специфікація досить проста, бо одною з цілей застосунку є простота.

Структура файлів

Структура файлів виглядає наступним чином:

» tree mental_health_journal
 
mental_health_journal
└── logs
    └── 2024
        └── 2
            ├── 18.md
            ├── 19.md
            ├── 20.md
            ├── 21.md
            └── 22.md

4 directories, 5 files

Також використовується система контролю версій, git. За допомогою нього можна дуже легко робити бекапи всіх записів.

Форматування Markdown файлів

Форматування файлів максимально просте та при цьому легке для оброблення комп'ютером.

# 2024.02.01

**07:02** Відчуваю сильну тривожність. Тремор рук.

> "Давно не відпочивав. Зараз працюю над багатьма проєктами та хвилююся за дипломний проєкт."

  • # Використовується лише в першому рядку файлу та позначає дату запису.
  • **{час}** Позначає час запису, зазвичай короткий опис стану.
  • > "Додатковий текст." Будь-яка додаткова інформація з більшим описом ситуації, думками тощо.

Можливості застосунку

Застосунок дозволяє автоматизувати таки дії як:

  • Автоматичне відкриття актуального файлу для запису у редакторі визначеному у змінній середовища EDITOR або vim, якщо такої нема.
  • Копіювання потрібного дня в буфер обміну.
  • Автоматичні коміти змін в записах. Автоматичний pull та push за бажанням.
  • Експортувати звіт за квартал у форматі .odt (застаріла), або в .pdf.

Системні вимоги

Працює на Linux з Wayland та наступними залежностями:

  • wl-clipboard
  • git
  • vim
  • bash
  • pandoc
  • tectonic

Я використовую застосунок встановивши його через pipx, тому що використовую Arch Linux, проте ви можете знайти інший шлях, особливо, якщо використовуєте інший дистрибутив.

Встановлення на Arch Linux

# Залежності
pacman -Sy wl-clipboard git vim bash pandoc python-pipx
pipx ensurepath
# Застосунок mhj
pipx install https://codeberg.org/foresle/mhj/releases/download/1.11.0/mhj-1.11.0-py3-none-any.whl

Кастомізація шаблону pandoc

# Створіть reference файл
pandoc -o custom-reference.odt --print-default-data-file reference.odt
# Тепер відкрийте custom-reference.odt в Libre Office Writer та замініть стилі як вам подобається
# Після чого скопіюйте цей файл як reference.odt в теку шаблонів pandoc
# Дізнайтеся шлях цієї теки
pandoc --version
# Швидше всього ця тека ще не створена, створіть неї
mkdir -p *шляхоеки*
# Далі скопіюйте туди вище згаданий файл

Зміна титульної сторінки (тільки в PDF)

Для того аби змінити вигляд титульної сторінки є такі змінні в конфігураційному файлі:

  • EXPORT_TITLE
  • EXPORT_SUBTITLE
  • EXPORT_AUTO_SUBTITLE (bool)
  • EXPORT_AUTHOR
  • EXPORT_LANG (в форматі uk_UA)
  • EXPORT_TOC (bool)
  • EXPORT_MAIN_FONT
  • EXPORT_SANS_FONT
  • EXPORT_MONO_FONT
  • EXPORT_SET_DATE

Використання push та pull

Доволі зручно синхронізувати нотатки між різними комп'ютерами використовуючи віддалений репозиторій. Для автоматизації завантаження і відправки використовуйте прапорці --pull та --push, або відредагуйте конфігураційний файл і додайти змінні ALWAYS_PULL та ALWAYS_PUSH. Перед використанням цих функцій налаштуйте віддалений репозиторій:

Приклад налаштування віддаленого репозиторію:

git remote add origin ssh://git@codeberg.org/<username>/journal.git
git <push/pull> -u origin journal

Зверніть увагу, що нотатки зберігаються у незашифрованому вигляді. Завантажуйте їх на хостинг якому ви довіряєте, або не зберігайте там чутливих даних. Безпека передусім, я вас поперпедив!

Авторські права

Ця програма створена для мене, проте ви можете запропонувати доповнити її тощо. Авторські права на код належать мені. Логотип застосунку розробила моя дівчина, авторські права належать їй.