# 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`](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 Use a custom config file -l, --log-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"}' ```