https://github.com/iandennismiller/gthnk
Personal Knowledge Management System. Capture your ideas using plain old text files. Make a journal that lasts 100 years.
https://github.com/iandennismiller/gthnk
journal knowledge knowledgebase markdown python
Last synced: 4 months ago
JSON representation
Personal Knowledge Management System. Capture your ideas using plain old text files. Make a journal that lasts 100 years.
- Host: GitHub
- URL: https://github.com/iandennismiller/gthnk
- Owner: iandennismiller
- Created: 2016-01-03T00:29:59.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2023-11-08T16:36:49.000Z (almost 2 years ago)
- Last Synced: 2025-05-28T05:44:59.712Z (5 months ago)
- Topics: journal, knowledge, knowledgebase, markdown, python
- Language: CSS
- Homepage: http://www.gthnk.com
- Size: 7.85 MB
- Stars: 29
- Watchers: 2
- Forks: 5
- Open Issues: 3
-
Metadata Files:
- Readme: Readme.rst
Awesome Lists containing this project
README
Gthnk
=====
`Gthnk `_ is a personal knowledge management system.
Capture your ideas using plain old text files.
Make a journal that lasts 100 years.
.. image:: https://img.shields.io/pypi/v/gthnk.svg
:target: https://pypi.org/project/gthnk/
:alt: Python Package
.. image:: https://readthedocs.org/projects/gthnk/badge/?version=latest
:target: https://gthnk.readthedocs.io/en/latest/
:alt: Documentation Status
.. image:: https://img.shields.io/github/stars/iandennismiller/gthnk.svg?style=social&label=GitHub
:target: https://github.com/iandennismiller/gthnk
:alt: Github Project
Overview
--------
- **Gthnk** presents a **journal** consisting of many **entries**.
- **Entries** are created using plain old text files, which **Gthnk** imports once per day.
- Any text editor can be used to add information to **Gthnk**.
- **Entries** are searchable using the embedded **Gthnk** server, which can be accessed with a browser.
- Plain-text enables backup/restore via hardcopy (e.g. paper) for long-term archival.
The easiest way to run **Gthnk** is with Docker.
**Gthnk** also installs on Windows, Linux, and MacOS systems with Python 3.5+.
See the `Installation document `_ for more details.
Quick Start
^^^^^^^^^^^
Use Docker to run Gthnk with all files stored locally in ``~/.gthnk``.
::
docker run -d --rm \
--name gthnk \
-p 1620:1620 \
-e TZ=America/Toronto \
-v ~/.gthnk:/opt/gthnk/var \
iandennismiller/gthnk:0.8.1
The default text file where you will record journal entries is ``~/.gthnk/journal.txt``.
Open ``journal.txt`` with a text editor to add new journal entries.
Open http://localhost:1620 to access the user interface.
Journal Entries
^^^^^^^^^^^^^^^
Use the journal by editing ``journal.txt`` with a text editor.
First, insert a date marker **YYYY-MM-DD** and a blank line to start a new journal day.
Then, insert a time marker **HHMM** and a blank line to start a journal entry.
::
2020-07-04
0804
This is a simple journal entry.
0805
And this is a separate entry, a minute later.
Those two delimiters - date and time followed by a blank line - are all there is to the Gthnk journal file format.
The rest is Markdown.
You can add multiple entries per day - and multiple days in a single journal - by inserting date and time markers as you work.
Command Line Interface
^^^^^^^^^^^^^^^^^^^^^^
While the Docker container is running, the Gthnk command line interface is available using ``docker exec``.
Create a shell alias to simplify access.
::
alias gthnk="docker exec -it gthnk /opt/gthnk/.venv/bin/gthnk"
gthnk --help
To view the current journal buffer, use ``gthnk buffer``.
To search for a keyword, use ``gthnk search``.
Web Interface
^^^^^^^^^^^^^
To interact with the Gthnk journal, connect to http://localhost:1620.
Click the **fast-forward** icon to view the live journal buffer.
As you edit ``journal.txt``, this live buffer will be updated.
Once the journals have been rotated, the history of previous days becomes available within the Gthnk Interface.
Journal Rotation
^^^^^^^^^^^^^^^^
When the journal rotates, all the entries are imported from ``journal.txt`` into the database.
After import, the ``journal.txt`` file is wiped.
The preferred rotation method method is to use an automatic process like ``cron``, ``systemd``, or ``launchd``.
The journal can be manually rotated with the command line interface: ``gthnk rotate``.
Before ``journal.txt`` is wiped, its contents are backed up.
Information is never lost even if there is a problem with rotation.
Integration with Text Editors
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Text editor integrations make it easier to insert journal entries.
- VS Code: https://marketplace.visualstudio.com/items?itemName=IanDennisMiller.gthnk
- Sublime Text: https://github.com/iandennismiller/sublime-text-gthnk
After installing the plugin for your editor, the following key combinations are available:
- Ctrl-Alt-Cmd-N: Insert date marker YYYYMMDD
- Ctrl-Alt-Cmd-M: Insert time marker HHMM
Cloud Sync
^^^^^^^^^^
You can sync Gthnk to multiple devices using a cloud file system like Dropbox or Syncthing.
Use the ``docker run -v`` flag to point to your cloud storage: ``-v ${PATH_TO_CLOUD}/gthnk:/opt/gthnk/var``
A complete example using Dropbox could look like:
::
docker run -d --rm \
--name gthnk-server \
-p 1620:1620 \
-e TZ=America/Toronto \
-v ~/Dropbox/gthnk:/opt/gthnk/var \
iandennismiller/gthnk:0.8.1
This configuration supports running Gthnk on a dedicated server, like a local Linux machine, while editing the journal files on devices that are synced via the cloud.
To support a laptop and phone, use a custom configuration file.
::
docker run -d --rm \
--name gthnk-server \
-p 1620:1620 \
-e TZ=America/Toronto \
-v ~/.gthnk/gthnk.conf:/opt/gthnk/.config/gthnk/gthnk.conf \
-v ~/Dropbox/gthnk:/opt/gthnk/var
iandennismiller/gthnk:0.8.1
Then edit ``~/.gthnk/gthnk.conf`` to specify multiple INPUT_FILES.
::
INPUT_FILES = "/opt/gthnk/var/journal-laptop.txt,/opt/gthnk/var/journal-phone.txt"
Other Gthnk Resources
^^^^^^^^^^^^^^^^^^^^^
- `Project repository `_
- `Public website `_ - `website repo `_
- `Read The Docs `_ - `project `_ - `docs repo `_
- `Python Package Index `_
- `Presentation: Overview of Gthnk `_ - `presentation repo `_
- `Continuous Integration `_
- `VS Code Extension `_ - `vsc extension repo `_
- `Chrome App `_
- `Python-Markdown gthnk journal Extension `_ - `mdx_journal repo `_
Documentation
^^^^^^^^^^^^^
http://docs.gthnk.com