2023-02-05 15:27:39 +01:00
|
|
|
# remindrs
|
2023-01-23 23:36:03 +01:00
|
|
|
|
2023-02-16 15:53:18 +01:00
|
|
|
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 and then build the binary or build and install
|
|
|
|
the Debian package.
|
|
|
|
|
|
|
|
### Database
|
|
|
|
|
|
|
|
Prepare an empty Postgres database preferably with an extra user.
|
|
|
|
|
|
|
|
### Building
|
|
|
|
|
|
|
|
Remindrs can be built in two ways. By using the classic Rust
|
|
|
|
toolchain to build a binary. And by using
|
|
|
|
[`cargo-deb`](https://github.com/kornelski/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:
|
|
|
|
|
|
|
|
```sh
|
|
|
|
cargo build
|
|
|
|
```
|
|
|
|
|
|
|
|
#### Debian package
|
|
|
|
|
|
|
|
In order to build the remindrs Debian package use
|
|
|
|
[`cargo-deb`](https://github.com/kornelski/cargo-deb):
|
|
|
|
|
|
|
|
```sh
|
|
|
|
cargo deb
|
|
|
|
```
|
|
|
|
|
|
|
|
The generated Debian package also installs a systemd service unit, but
|
|
|
|
does not enable it by default.
|
|
|
|
|
|
|
|
#### Configuraion
|
|
|
|
|
|
|
|
To configure remindrs the following configuration options are
|
|
|
|
available. 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`.
|
|
|
|
|
|
|
|
Note that all options 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.
|
|
|
|
|
|
|
|
For example `curl` can be used like the following:
|
|
|
|
|
|
|
|
```sh
|
|
|
|
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"}'
|
|
|
|
```
|