remindrs/README.md

111 lines
2.7 KiB
Markdown
Raw Permalink Normal View History

# 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
2023-02-16 16:20:09 +01:00
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`](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 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:
```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"}'
```