stup - a shell tool for daily notes
Tags: showdev, productivity, linux, bash
Published: 2020-04-30 20:11:21

---
title: stup - a shell tool for daily notes
published: true
description: An opensource tool to save, access and organize daily notes in the terminal
tags: showdev, productivity, linux, bash
cover_image: https://iridakos.com/assets/images/posts/stup-cli-notes/post-image.png
---

Over the past few years I've been participating in Stand-up meetings and it took me some time to find a convenient and effective way for **keeping notes about what I was doing every day**.

I needed to be able to:

* keep **categorized notes** on the issues I worked on, the meetings I participated in and stuff that blocked my work etc
* **easily access** these notes based on their date
* have an **overview** of what I did for example the last week
* all of the above:
  * from inside a **terminal**
  * with the **notes strictly bound** to the date they are taken
  * without having to manually structure and update a single document
  * without having to manually create a document for each day

## [stup](https://github.com/iridakos/stup)

I made this tool which actually is a bash script and I named it `stup` from the term **st**and-**up**.

![stup demo](https://github.com/iridakos/stup/blob/master/assets/stup-0-1-9.gif?raw=true)

You can find the project on [GitHub here](https://github.com/iridakos/stup).

### Usage examples

Below are some examples showing the most important features of `stup`.

#### Adding notes

```bash
# Adding a note to the default category at current date
stup add -n "Worked on issue #ABC123"

# Adding a note to the default category setting the current date explicitly
stup add today -n "Worked on issue #ABC123"

# Adding a note to the meetings category
stup add today -c "meetings" -n "2 hours with @phoebe for the project kick off"

# Adding a note to the blocking category for April 10th, 2020
stup add @ 2020-04-10 -c "blocking" -n "connectivity issues"
```


#### Showing notes

```bash
# Showing yesterday's notes
$ stup

# Showing yesterday's notes explicitly setting the date
$ stup yesterday

# Showing today's notes
$ stup today

# Showing notes on a specific date
$ stup show @ 2020-04-18

# Showing notes on a specific date for the meetings category
$ stup show @ 2020-04-18 -c "meetings"
```


#### Retrieving all notes for a period of time

```bash
# List current week's notes
stup log week

# List current week's notes skipping command's literal
stup week

# List previous week's notes
stup log previous-week

# List notes between January 20th, 2020 and March 2nd, 2020
stup log --from 2020-01-20 --to 2020-03-02

# List meeting notes between January 20th, 2020 and March 2nd, 2020
stup log --from 2020-01-20 --to 2020-03-02 -c "meetings"
```


### Behind the scenes

Notes are organized in categories.

When a new note is added, `stup` creates a markdown file and places it under the category's directory in a sub-directory with a path based on the date.

```bash
CATEGORIES_ROOT_DIRECTORY/CATEGORY/YEAR/MONTH/YYYY-MM-DD.md

# For example, the notes of a category named "programming" April 18th, 2020 are saved under
CATEGORIES_ROOT_DIRECTORY/programming/2020/04/2020-04-18.md
```

This allows users to retrieve any notes added on a specific date or in a specific period for a specific or for all categories.

```bash
# Fetch notes for all categories
$ stup show @ 2020-04-18

# Fetch notes for a specific category for previous week
$ stup log previous-week -c programming

# Fetch notes for all categories for a specific period
$ stup log --from 2020-04-01 --to 2020-04-15
```

You can find the full documentation with usage examples on the project's [repository](https://github.com/iridakos/stup) and more information about features to be added in the project's [GitHub issues page](https://github.com/iridakos/stup/issues).