readme: Add documentation to the readme [CI SKIP]

Explain and document the project and (hopefully) all necessary steps
to get it running.
This commit is contained in:
finga 2023-02-16 15:53:18 +01:00
parent 75a99490f2
commit 5627d96f2a

104
README.md
View file

@ -1,3 +1,105 @@
# remindrs
Send an email at a given time containing a certain title and message.
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"}'
```