{"id":18817608,"url":"https://github.com/skatkov/stoic","last_synced_at":"2025-04-13T23:24:10.361Z","repository":{"id":37031018,"uuid":"492039640","full_name":"skatkov/stoic","owner":"skatkov","description":"Command line app for daily journaling with plain-text files","archived":false,"fork":false,"pushed_at":"2024-04-02T16:17:06.000Z","size":5586,"stargazers_count":58,"open_issues_count":2,"forks_count":4,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-27T13:40:47.121Z","etag":null,"topics":["cli","command-line-tool","golang","journaling","stoicism"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/skatkov.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2022-05-13T21:01:01.000Z","updated_at":"2025-01-29T19:20:36.000Z","dependencies_parsed_at":"2023-09-26T23:11:40.921Z","dependency_job_id":"fd08a932-e9d8-4bbc-b233-4d674e90ce0d","html_url":"https://github.com/skatkov/stoic","commit_stats":{"total_commits":92,"total_committers":4,"mean_commits":23.0,"dds":0.3369565217391305,"last_synced_commit":"b057829d5feb6534298fe74d69012066ff4038da"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skatkov%2Fstoic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skatkov%2Fstoic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skatkov%2Fstoic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skatkov%2Fstoic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/skatkov","download_url":"https://codeload.github.com/skatkov/stoic/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248795189,"owners_count":21162726,"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":["cli","command-line-tool","golang","journaling","stoicism"],"created_at":"2024-11-08T00:12:14.904Z","updated_at":"2025-04-13T23:24:10.339Z","avatar_url":"https://github.com/skatkov.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Stoic\n\n![stoic](./demo.png)\n\nStoic is a command-line application for daily journaling with plain-text files. It helps maintain day-to-day journaling habit by allowing you to instantly edit current day's entry with console editor of choice.\n\n## Installation\n\nInstallation is possible through [Homebrew](https://brew.sh/) on Linux or MacOS.\n\n`brew install skatkov/tap/stoic`\n\nYou can also download the executable directly. See the 📥 [Installation](INSTALL.md) instructions.\n\n## Usage\n\nIn a terminal:\n\n- `stoic`: open today's journal entry in the editor\n- `stoic -list` (beta): list existing entries and pick one for editing\n- `stoic -edit \"\u003cnatural date\u003e\"`: open or create the previous day's file using natural dates like \"2 days ago\" and \"yesterday\"\n- `stoic -quote`: shows a random quote encouraging the journaling habit\n- `stoic -about`: shows information about the application\n\n## Configuration\n\n- The editor could be changed by setting the `$EDITOR` global variable. (default: `nano`)\n- The directory for a journal could be changed by setting the `$STOIC_DIR` global variable. (default: `~/Journal/`)\n- Provide file template through `$STOIC_TEMPLATE` global variable.\n- Provide new extension format through `$STOIC_EXT` global variables. (default: `md`)\n\n```shell\nexport EDITOR=\"neovim\"\nexport STOIC_DIR=\"~/MEGAsync/journal/\"\nexport STOIC_TEMPLATE=\"~/MEGAsync/journal/template.md\"\nexport STOIC_EXT=\"md\"\n```\n\n## Motivation\n\nThere is a recurring theme in biographies of great people. They had journaling as a hobby.\n\nI've been battling my inner demons with different methods with varying success. But journaling has helped me keep these demons permanently at bay. My sleep will be peaceful if it follows after careful and honest self-examination in my journal.\n\nExisting software for journaling and note-taking is slow to load and filled with features I don't need. Plain-text files stored locally and edited through Nano are enough for journaling. \n\nHowever, some recurring manual work is still required with such a simple setup; creating a new daily file and modifying it according to a template. This command line utility completely removes that manual work.\n\nEpictetus, the great Stoic philosopher and slave, once told his students that \"philosophy is something one should write down day by day\". Hence, the name of this tool is a reference to this great human and a hat tip to the practical philosophy called Stoicism.\n\n## Obsidian integration\n\nI wrote this tool out of frustration with existing note-taking apps (everything has to be in the cloud these days), but other apps followed similar design choices as Stoic did.\n\nI'm now using [Obsidian](https://obsidian.md/) as a fully featured writing app on my laptop and mobile phone. Obsidian comes with core plugins that you can enable. One is \"[Daily Notes](https://help.obsidian.md/Plugins/Daily+notes)\", which does something similar to Stoic. Nonetheless, I still keep using Stoic as a companion CLI application to Obsidian; with light configuration changes, they play perfectly together.\n\nWith the 0.6 version of Stoic, many settings align with those Obsidian defaults. In my case, only two settings are tweaked:\n\n```shell\nexport STOIC_DIR=\"~/Obsidian/journal\"\nexport STOIC_TEMPLATE=\"~/Obsidian/journal/template.md\"\n```\n\nThis closely corresponds to settings I have in obsidian daily notes:\n![obsidian daily notes config](./obsidian-daily-notes.png)\n\nThe only thing that Stoic doesn't allow you to tweak is the date format. So, if you have that customized in obsidian, lousy luck.\n\nPRs are welcome. Everything is fixable.\n\n## Development\n\nAs a prerequisite, you need to have the [Go compiler](https://golang.org/doc/install).\nPlease check the [`go.mod`](go.mod) file to see what Go version Stoic requires.\n\nFetch the sources:\n\n```shell\ngit clone https://github.com/skatkov/stoic.git\ncd stoic\n```\n\nTo build the project, run:\n\n```\ngoreleaser build\n```\n\nThis automatically resolves the dependencies and compiles the source code into an executable for your platform.\n\n## Releasing\nPublish to homebrew tap at \"skatkov/homebrew-tap\" and publish a release in current github repository.\n\n```\ngoreleaser release\n```\n\n## Contributions\n\nThis project is my little Go playground. It would be awesome to learn about any appropriate improvements for this codebase.\n\nEveryone is welcome to contribute.\n\n## TODO's\n\nI've been brainstorming for possible improvements, and here is a rough list of ideas in no particular order:\n\n- `stoic -cal`: perhaps with the `bubbletea` TUI framework and the `cal` utility. A calendar view for existing records showing dates marked with green dots if there is a record for that day.\n- Improve error handling\n- Use a CLI framework like [cobra](https://github.com/spf13/cobra)\n- Add Windows support\n- Add the ability to store configuration in dotfiles (not just ENV variables), including the ability to add a custom editor, not one defined in `$EDITOR`\n- `stoic -stats`: statistics about journaling, % of days journaled, average journal length, etc.\n\n## Feedback\n\nGot some feedback or suggestions? Please open an issue or drop me a note!\n\n- [Twitter](https://twitter.com/5katkov)\n- [Personal Website](https://skatkov.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskatkov%2Fstoic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fskatkov%2Fstoic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskatkov%2Fstoic/lists"}