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:
parent
75a99490f2
commit
5627d96f2a
1 changed files with 103 additions and 1 deletions
104
README.md
104
README.md
|
@ -1,3 +1,105 @@
|
||||||
# remindrs
|
# 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"}'
|
||||||
|
```
|
||||||
|
|
Loading…
Reference in a new issue