/remindme

A simple terminal reminder app

Primary LanguageGoGNU General Public License v3.0GPL-3.0

Terminal reminder app

Description

Hello there!

The idea behind this app is to use it for short-term reminders, e.g. to remind you to do something in 2 hours or in 10 minutes. The reminders are set in terminal, and the app will notify you about the reminder via OS-specific reminders.

Reminders are stored in SQLite database, so they will persist even if the app is stopped and started again. However, if there is an issue with the SQLite setup, the app will still work, but the reminders will be stored in memory and will be lost after the app is stopped. SQLite is bundled with the app, so there is no need to install it separately.

The flow of the app is as follows:

Reminders are cross-platform compatible and are supposed to work on Windows, Linux, and MacOS. So far, the app has been tested on:

  • MacOS Ventura 13.5 with Intel Core i9 x64 CPU and zsh 5.9 (x86_64-apple-darwin22.1.0)
  • MacOS Ventura 13.5 with Apple M2 Max x64 CPU and zsh 5.9 (x86_64-apple-darwin22.0)
  • Ubuntu 22.04.2 LTS (via VirtualBox) with Intel Core i9 x64 CPU and bash 5.1.16(1)-release (x86_64-pc-linux-gnu)
  • Fedora Workstation 38 (via VirtualBox) with Intel Core i9 x64 CPU and bash 5.2.15(1)-release (x86_64-redhat-linux-gnu)
  • Windows 10 Home (version 21H2) with Intel Core i5 x64 CPU and Windows PowerShell 5.1.19041.1682

Have fun! =)

Installation

Prerequisites

  • Go (version 1.22 or higher) if you want to build the app from the source code.

Manual

Download the latest release for your OS from GitHub.

MacOS

  • via Homebrew:
brew tap n0rdy/n0rdy
brew install remindme

Linux

  • via APT:

Prerequisites

To enable, add the following file /etc/apt/sources.list.d/fury.list:

deb [trusted=yes] https://apt.fury.io/n0rdy/ /

You can do this either manually or by running the following command:

echo "deb [trusted=yes] https://apt.fury.io/n0rdy/ /" > /etc/apt/sources.list.d/fury.list

If you experienced this error:

bash: /etc/apt/sources.list.d/fury.list: Permission denied

try to do the following:

sudo -i
# enter your password
echo "deb [trusted=yes] https://apt.fury.io/n0rdy/ /" > /etc/apt/sources.list.d/fury.list
# click Ctrl+D to exit

Installation

sudo apt update && sudo apt install remindme
  • via YUM:

Prerequisites

To enable, add the following file /etc/yum.repos.d/fury.repo:

[fury]
name=Gemfury n0rdy Private Repo
baseurl=https://yum.fury.io/n0rdy/
enabled=1
gpgcheck=0

Installation

sudo yum install remindme

Usage

Starting app

To start the app, run the following command in the terminal:

remindme start

Under the hood, the HTTP server is started on port 15555.

It is possible to specify the port to start the server on by either:

  • using the --port flag, e.g.:
remindme start --port 15556
  • setting the REMINDME_PORT environment variable to the desired port number.

Adding a reminder

There are several ways to add a reminder:

  • to be reminded in a certain amount of time, e.g. in 2 hours 30 minutes 10 seconds:
remindme in --hr 2 --min 30 --sec 10 --about "Do something cool"
  • to be reminded at a certain time, e.g. at 22:30:
remindme at --time 22:30 --about "Do something cool"

It is also possible to specify the time in 12-hour A.M./P.M format:

remindme at --pm 10:30 --about "Do something cool"

or for 10:30 A.M.:

remindme at --am 10:30 --about "Do something cool"

List the existing reminders

  • to see the list of all reminders, run:
remindme list

The list command also supports sorting the list of reminders by ID, message or time in an ascending or descending order. By default, the list is provided in a random order. If the sorting is requested, but the sorting order is not specified, the ascending order is used.

  • to sort by ID, run:
remindme list --sort --id
  • to sort by message, run:
remindme list --sort --message
  • to sort by time in descending order, run:
remindme list --sort --time --desc

Canceling a reminder

  • to cancel a reminder, run:
remindme cancel --id 1

where 1 is the ID of the reminder to be cancelled. The ID can be obtained by running remindme list command.

  • to cancel all reminders, run:
remindme cancel --all

Changing the reminder message or/and time

  • to change the message of a reminder, run:
remindme change --id 1 --about "Do something else, but also cool"

where 1 is the ID of the reminder to be changed. The ID can be obtained by running remindme list command.

  • to change the time of a reminder, run:
remindme change --id 1 --time 22:30

where 1 is the ID of the reminder to be changed. The ID can be obtained by running remindme list command.

  • it is possible to change the time by postponing it by a certain amount of time, e.g. by 2 hours 30 minutes 10 seconds:
remindme change --id 1 --postpone --hr 2 --min 30 --sec 10

where 1 is the ID of the reminder to be changed. The ID can be obtained by running remindme list command.

Stopping the app

  • to stop the app, run the following command in the terminal:
remindme stop

Logs

Printing logs

  • to print the logs, run the following command in the terminal:
remindme admin logs print

It is possible to specify which logs to print: client or server logs by using the --client or --server flags respectively. By default, client logs are printed.

Deleting log files

  • to delete the log files, run the following command in the terminal:
remindme admin logs delete

It is possible to specify which log file to delete: client or server logs by using the --client or --server flags respectively. By default, both client and server log files are deleted.

Help

  • to see the list of all available commands, run:
remindme help

Completion

remindme app provides a possibility to use completion for the commands and flags. To generate the completion, run the following command in the terminal:

remindme completion

This will generate the completion for the current shell. To enable the completion for the current shell run, use this command:

source <(remindme completion)

To enable the completion for the current shell permanently, add this line to your .bashrc, .zshrc or config.fish file:

source <(remindme completion)

If you are on Windows with PowerShell, it is possible to generate the completion by running the following command:

remindme completion

Please, check the PowerShell documentation for more information about loading completions for this shell type.

Documentation generation

To generate the documentation for the app in the MD-format, run the following command in the terminal:

remindme docs --dir "path_to_dir"

If the --dir flag is not specified, the documentation will be generated in the temp directory on your machine - the path to the directory will be printed to the terminal as a result of docs command execution. You can find the same docs (as generated) within the docs folder on GitHub.

Additional information

Please, note that some flags have shortcuts, e.g. --about can be replaced with -a, --time with -t, etc. To see the full list of shortcuts, run the remindme help.