{"id":27610576,"url":"https://github.com/iandennismiller/gthnk","last_synced_at":"2025-06-26T01:04:13.068Z","repository":{"id":66856082,"uuid":"48928719","full_name":"iandennismiller/gthnk","owner":"iandennismiller","description":"Personal Knowledge Management System. Capture your ideas using plain old text files. Make a journal that lasts 100 years.","archived":false,"fork":false,"pushed_at":"2023-11-08T16:36:49.000Z","size":8231,"stargazers_count":29,"open_issues_count":3,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-28T05:44:59.712Z","etag":null,"topics":["journal","knowledge","knowledgebase","markdown","python"],"latest_commit_sha":null,"homepage":"http://www.gthnk.com","language":"CSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iandennismiller.png","metadata":{"files":{"readme":"Readme.rst","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-01-03T00:29:59.000Z","updated_at":"2025-04-24T19:15:05.000Z","dependencies_parsed_at":null,"dependency_job_id":"66f11982-5a0c-436c-b24d-ec2b49455a8c","html_url":"https://github.com/iandennismiller/gthnk","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/iandennismiller/gthnk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iandennismiller%2Fgthnk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iandennismiller%2Fgthnk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iandennismiller%2Fgthnk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iandennismiller%2Fgthnk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iandennismiller","download_url":"https://codeload.github.com/iandennismiller/gthnk/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iandennismiller%2Fgthnk/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261978910,"owners_count":23239417,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["journal","knowledge","knowledgebase","markdown","python"],"created_at":"2025-04-22T23:29:32.489Z","updated_at":"2025-06-26T01:04:13.040Z","avatar_url":"https://github.com/iandennismiller.png","language":"CSS","funding_links":[],"categories":[],"sub_categories":[],"readme":"Gthnk\n=====\n\n`Gthnk \u003chttp://www.gthnk.com\u003e`_ is a personal knowledge management system.\nCapture your ideas using plain old text files.\nMake a journal that lasts 100 years.\n\n.. image:: https://img.shields.io/pypi/v/gthnk.svg\n    :target: https://pypi.org/project/gthnk/\n    :alt: Python Package\n\n.. image:: https://readthedocs.org/projects/gthnk/badge/?version=latest\n    :target: https://gthnk.readthedocs.io/en/latest/\n    :alt: Documentation Status\n\n.. image:: https://img.shields.io/github/stars/iandennismiller/gthnk.svg?style=social\u0026label=GitHub\n    :target: https://github.com/iandennismiller/gthnk\n    :alt: Github Project\n\nOverview\n--------\n\n- **Gthnk** presents a **journal** consisting of many **entries**.\n- **Entries** are created using plain old text files, which **Gthnk** imports once per day.\n- Any text editor can be used to add information to **Gthnk**.\n- **Entries** are searchable using the embedded **Gthnk** server, which can be accessed with a browser.\n- Plain-text enables backup/restore via hardcopy (e.g. paper) for long-term archival.\n\nThe easiest way to run **Gthnk** is with Docker.\n**Gthnk** also installs on Windows, Linux, and MacOS systems with Python 3.5+.\nSee the `Installation document \u003chttps://gthnk.readthedocs.io/en/latest/intro/installation.html\u003e`_ for more details.\n\nQuick Start\n^^^^^^^^^^^\n\nUse Docker to run Gthnk with all files stored locally in ``~/.gthnk``.\n\n::\n\n    docker run -d --rm \\\n        --name gthnk \\\n        -p 1620:1620 \\\n        -e TZ=America/Toronto \\\n        -v ~/.gthnk:/opt/gthnk/var \\\n        iandennismiller/gthnk:0.8.1\n\nThe default text file where you will record journal entries is ``~/.gthnk/journal.txt``.\n\nOpen ``journal.txt`` with a text editor to add new journal entries.\n\nOpen http://localhost:1620 to access the user interface.\n\nJournal Entries\n^^^^^^^^^^^^^^^\n\nUse the journal by editing ``journal.txt`` with a text editor.\nFirst, insert a date marker **YYYY-MM-DD** and a blank line to start a new journal day.\nThen, insert a time marker **HHMM** and a blank line to start a journal entry.\n\n::\n\n    2020-07-04\n\n    0804\n\n    This is a simple journal entry.\n\n    0805\n\n    And this is a separate entry, a minute later.\n\nThose two delimiters - date and time followed by a blank line - are all there is to the Gthnk journal file format.\nThe rest is Markdown.\n\nYou can add multiple entries per day - and multiple days in a single journal - by inserting date and time markers as you work.\n\nCommand Line Interface\n^^^^^^^^^^^^^^^^^^^^^^\n\nWhile the Docker container is running, the Gthnk command line interface is available using ``docker exec``.\nCreate a shell alias to simplify access.\n\n::\n\n    alias gthnk=\"docker exec -it gthnk /opt/gthnk/.venv/bin/gthnk\"\n    gthnk --help\n\nTo view the current journal buffer, use ``gthnk buffer``.\n\nTo search for a keyword, use ``gthnk search``.\n\nWeb Interface\n^^^^^^^^^^^^^\n\nTo interact with the Gthnk journal, connect to http://localhost:1620.\n\nClick the **fast-forward** icon to view the live journal buffer.\nAs you edit ``journal.txt``, this live buffer will be updated.\n\nOnce the journals have been rotated, the history of previous days becomes available within the Gthnk Interface.\n\nJournal Rotation\n^^^^^^^^^^^^^^^^\n\nWhen the journal rotates, all the entries are imported from ``journal.txt`` into the database.\nAfter import, the ``journal.txt`` file is wiped.\n\nThe preferred rotation method method is to use an automatic process like ``cron``, ``systemd``, or ``launchd``.\nThe journal can be manually rotated with the command line interface: ``gthnk rotate``.\n\nBefore ``journal.txt`` is wiped, its contents are backed up.\nInformation is never lost even if there is a problem with rotation.\n\nIntegration with Text Editors\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nText editor integrations make it easier to insert journal entries.\n\n- VS Code: https://marketplace.visualstudio.com/items?itemName=IanDennisMiller.gthnk\n- Sublime Text: https://github.com/iandennismiller/sublime-text-gthnk\n\nAfter installing the plugin for your editor, the following key combinations are available:\n\n- Ctrl-Alt-Cmd-N: Insert date marker YYYYMMDD\n- Ctrl-Alt-Cmd-M: Insert time marker HHMM\n\nCloud Sync\n^^^^^^^^^^\n\nYou can sync Gthnk to multiple devices using a cloud file system like Dropbox or Syncthing.\nUse the ``docker run -v`` flag to point to your cloud storage: ``-v ${PATH_TO_CLOUD}/gthnk:/opt/gthnk/var``\n\nA complete example using Dropbox could look like:\n\n::\n\n    docker run -d --rm \\\n        --name gthnk-server \\\n        -p 1620:1620 \\\n        -e TZ=America/Toronto \\\n        -v ~/Dropbox/gthnk:/opt/gthnk/var \\\n        iandennismiller/gthnk:0.8.1\n\nThis 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.\n\nTo support a laptop and phone, use a custom configuration file.\n\n::\n\n    docker run -d --rm \\\n        --name gthnk-server \\\n        -p 1620:1620 \\\n        -e TZ=America/Toronto \\\n        -v ~/.gthnk/gthnk.conf:/opt/gthnk/.config/gthnk/gthnk.conf \\\n        -v ~/Dropbox/gthnk:/opt/gthnk/var\n        iandennismiller/gthnk:0.8.1\n\nThen edit ``~/.gthnk/gthnk.conf`` to specify multiple INPUT_FILES.\n\n::\n\n    INPUT_FILES = \"/opt/gthnk/var/journal-laptop.txt,/opt/gthnk/var/journal-phone.txt\"\n\nOther Gthnk Resources\n^^^^^^^^^^^^^^^^^^^^^\n\n- `Project repository \u003chttps://github.com/iandennismiller/gthnk\u003e`_\n- `Public website \u003chttp://www.gthnk.com\u003e`_ - `website repo \u003chttps://github.com/iandennismiller/www-gthnk\u003e`_\n- `Read The Docs \u003chttps://gthnk.readthedocs.io/en/latest/\u003e`_ - `project \u003chttps://readthedocs.org/projects/gthnk\u003e`_ - `docs repo \u003chttps://github.com/iandennismiller/gthnk/tree/master/docs\u003e`_\n- `Python Package Index \u003chttps://pypi.org/project/gthnk/\u003e`_\n- `Presentation: Overview of Gthnk \u003chttps://iandennismiller.github.io/pres-gthnk-overview\u003e`_ - `presentation repo \u003chttps://github.com/iandennismiller/pres-gthnk-overview\u003e`_\n- `Continuous Integration \u003chttps://travis-ci.org/iandennismiller/gthnk\u003e`_\n- `VS Code Extension \u003chttps://marketplace.visualstudio.com/items?itemName=IanDennisMiller.gthnk\u003e`_ - `vsc extension repo \u003chttps://github.com/iandennismiller/vscode-gthnk\u003e`_\n- `Chrome App \u003chttps://github.com/iandennismiller/gthnk/tree/master/share/chrome-app\u003e`_\n- `Python-Markdown gthnk journal Extension \u003chttps://pypi.org/project/mdx_journal/\u003e`_ - `mdx_journal repo \u003chttps://github.com/iandennismiller/mdx_journal\u003e`_\n\nDocumentation\n^^^^^^^^^^^^^\n\nhttp://docs.gthnk.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiandennismiller%2Fgthnk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiandennismiller%2Fgthnk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiandennismiller%2Fgthnk/lists"}