remindrs/README.md
2023-02-16 16:20:09 +01:00

2.7 KiB

remindrs

Send an email at a given time. The basic purpose of remindrs is to send a reminder email containing a certain title and message.

Setup

There are two basic steps to install remindrs. First it is recomended to prepare the Database. Then build the binary or build and install the Debian package.

Database

Prepare an empty Postgres database preferably together with an separate user. The database schema creation and updates are done automatically for each change.

Building

Remindrs can be built in two ways. By using the classic Rust toolchain to build a binary. Or by using cargo-deb to build a Debian package.

For both ways a Postgres database is mandatory.

With the Rust toolchain

In order to build just the remindrs binary with the standard Rust toolchain build it with cargo:

cargo build

Debian package

In order to build the remindrs Debian package use cargo-deb:

cargo deb

The generated Debian package also installs a systemd service unit, but does not enable it by default in order to prepare the configuration first.

Configuraion

When remindrs is started it tries to load the configuration either from the path passed as the command line argument -c/--config, or by the default paths. Those are ./config.toml, $XDG_CONFIG_HOME/remindrs/config.toml or $HOME/.config/remindrs/config.toml if $XDG_CONFIG_HOME is not set, and finally /etc/remindrs/config.toml.

To configure remindrs the following configuration options are available.

Note that all options that are commented out have the given parameter as a default value and are not mandatory.

[database]
# host = "localhost"
# port = 5432
# name = "remindrs"
# user = "remindrs"
pass = "remindrs"

# [server]
# address = "::1"
# port = 8080

# [email]
# from = "remindrs@localhost"

Usage

The configuration is mostly done via the configuration file. When remindrs is running the only way to interact with it is via the API.

Command line arguments

The binary supports only a small set of command line arguments.

Usage: remindrs [OPTIONS]

Options:
  -c, --config <FILE>      Use a custom config file
  -l, --log-level <LEVEL>  Set a log level [default: INFO]
  -h, --help               Print help
  -V, --version            Print version

API

In order to create a reminder send a POST request to the API endpoint.

This may be done for example with curl like the following:

curl -X POST localhost:8080/v1/reminder \
  -H 'Content-Type: application/json'   \
  -d '{"planned":"2023-02-02T14:16:00.000000000+07:00", "title":"test title", "message":"test message", "receiver":"user@localhost"}'