Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/2KAbhishek/tdo

Fast & Simple Note Taking! 📃🚀
https://github.com/2KAbhishek/tdo

command-line journal knowledge-management note-taking notes pkm second-brain todo tools utilities

Last synced: 3 months ago
JSON representation

Fast & Simple Note Taking! 📃🚀

Lists

README

        

tdo


License


People


Stars


Forks


Watches


Last Updated

Fast & Simple Note Taking! 📃🚀

tdo in action


tdo in action

tdo is a opinionated, command line based note-taking system. [Demo video](https://youtu.be/N4IRT7M-RLg)

## ✨ Features

- Can help you manage a daily log, todos, journal and notes
- Review pending and upcoming todos, past journal entries and more
- Integrates with git to commit and backup your notes automatically, check [tdo.nvim](https://github.com/2kabhishek/tdo.nvim) for neovim integration
- Has interactive fuzzy searching capabilities powered by fzf
- Can integrate with other tools in pipes and subshells for extended functionality
- Supports all editors, set `$EDITOR` to your choice

## ⚡ Setup

### ⚙️ Requirements

- ripgrep, fzf
- bat (optional, for syntax highlighting in search)
- coreutils (required on macOS, for gdate command)

### 💻 Installation

```bash
git clone https://github.com/2kabhishek/tdo
cd tdo
./install.sh
```

#### 📦 Environment Variables

- `NOTES_DIR` should point to your notes directory
- `TODOS_DIR` optional, should point to your todos directory, default: `NOTES_DIR/todos`
- `JOURNAL_DIR` optional, should point to your journal directory, default: `NOTES_DIR/entries`

- `EDITOR` set to your choice of editor

#### 🐚 Manual Installation

If you want to customize the setup or are facing issues with installation, you can set up tdo manually.

Change these commands according to your needs.

```bash
# Link tdo to a directory that's in PATH (~/.local/bin here)
ln -sfnv "$PWD/tdo.sh" ~/.local/bin/tdo
# Create a notes dir if not already present
mkdir -p $HOME/Projects/Notes
# Add the NOTES_DIR env var to your shell config ~/.bashrc, ~/.zshrc etc
echo "NOTES_DIR=$HOME/Projects/Notes" >> ~/.zshrc
# Add sample templates to your NOTES_DIR
cp -irv templates $NOTES_DIR
# Reload shell config
source ~/.zshrc
```

#### 💾 Git Integration

If you want to sync your notes across devices, you can set up a git repo on the $NOTES_DIR and add GitHub/GitLab as remote.

```bash
cd $NOTES_DIR
git init
git add .
git commit -m 'init: notes'
git remote add origin
git push origin main
```

tdo will automatically commit every change with a timestamp like `03 Feb 11:33` as commit message.

## 🚀 Usage

If you use Neovim, I highly recommend using [tdo.nvim](https://github.com/2kabhishek/tdo.nvim), it seamlessly integrates `tdo` and `nvim` and adds some useful features on top.

- `tdo` to open today's todos
- `tdo ` to open todos from `offset_days` in the past or future, e.g: `tdo 1`, `tdo -2`
- `tdo ` to open or create a `note_tile.md` note, use folder names to categorise notes, e.g: `tdo tech/vim-tips`
- `tdo note` or `tdo n` to create a new note with the current timestamp in `drafts`
- `tdo entry` or `tdo e` to open today's journal entry
- `tdo entry ` to open journal entry from `offset_days` in the past or future, e.g: `tdo e -3`
- `tdo find ` or `tdo f` to interactively search for `text` in all your notes
- `tdo find` without any search term to review all your notes
- `tdo todo` or `tdo t` to show all your pending todos
- `tdo commit ` or `tdo c` to commit changes in path, happens automatically, needed for plugins and integrations

> Run `tdo h` to get help info on the command line

### 📁 Dir Structure

`tdo` expects an opinionated directory structure to function.

- Notes live in the `notes` sub-dir, use these for long term knowledge management, second brain
- Notes use the [templates/note.md](./templates/note.md) file as template
- Todos live in the `todos` sub-dir, use these for short term notes, daily todos
- Todos use the [templates/todo.md](./templates/todo.md) file as template
- Journal entries live in `entries` sub-dir, use these for personal notes, life logging
- Journal entries use the [templates/entry.md](./templates/entry.md) file as template

```
├── todos
│   └── 2023
│   └── 11
│      └── 2023-11-29.md
├── entries
│   └── 2024
│   └── 02
│      └── 2024-02-03.md
│── notes
│   └── tech
│      └── quit-vim.md
│      └── arch-btw.md
└── templates
   ├── entry.md
   └── note.md
   └── todo.md
```

## 🏗️ What's Next

You tell me!

## 🧑‍💻 Behind The Code

### 🌈 Inspiration

After trying out every note management system under the sun I had decided on using plain markdown notes [powered by nvim2k](https://youtu.be/FP7sQhc8kek).

tdo is a spiritual successor and complimentary tool to that, taking the same principles and making it more accessible and simple.

### 🔍 More CLI Tools

- [cmtr](https://github.com/2kabhishek/cmtr) — Fast git commits
- [mkrepo](https://github.com/2kabhishek/mkrepo) — Spin up new GitHub repos from the CLI
- [ghpm](https://github.com/2kabhishek/ghpm) — Manage all your GitHub repos
- [gsync](https://github.com/2kabhishek/gsync) — Sync your git repos

### 🧰 Tooling

- [dots2k](https://github.com/2kabhishek/dots2k) — Dev Environment
- [nvim2k](https://github.com/2kabhishek/nvim2k) — Personalized Editor
- [sway2k](https://github.com/2kabhishek/sway2k) — Desktop Environment
- [qute2k](https://github.com/2kabhishek/qute2k) — Personalized Browser


⭐ hit the star button if you found this useful ⭐

Source
| Blog
| Twitter
| LinkedIn
| More Links
| Other Projects