# @lfk/mailer
[![Build Status](https://ci.odit.services/api/badges/lfk/mailer/status.svg?ref=refs/heads/main)](https://ci.odit.services/lfk/mailer)

Handles mail generation and sending (pw reset, welcome mail, etc)

## Dev Setup 🛠
> Local dev setup

1. Rename the .env.example file to .env (you can adjust app port and other settings, if needed) or generate a example env with `yarn && yarn test:generate_env`.
2. Install Dependencies
   ```bash
   yarn
   ```
3. Start the server
   ```bash
   yarn dev
   ```

## Templates
> The mailer uses html and plaintext templates to generate various mails.
> The templates are stored in src/templates by default.

We provide a set of default templates that we use for the ["Lauf für Kaya!" charity run](https://lauf-fuer-kaya.de).
We use handlebars for templateing utilizing i18next for translation - the i18n string format in the templates is : `{{__ "string"}}`
You can provide your own templates by replacing the ones we provided before compiling the project or by simply mounting your custom templates into the docker container.

The server currently needs the following templates to work:
* pw-reset.html
* pw-reset.txt
* test.html
* test.txt
* welcome_runner.html
* welcome_runner.txt

| Name | Type | Default | Description
| - | - | - | -
| APP_PORT | Number | 4010 | The port the backend server listens on. Is optional.
| NODE_ENV | String | dev | The apps env - influences debug info.
| API_KEY | String(min length: 64) | Random generated string | The api key you want to use for auth (query-param `key`), has to be at least 64 chars long.
| API_URL | String(url) | "http://localhost:8080" | The URL ponting to the base (root) of the lfk runner system.
| MAIL_SERVER | String(FQDN) | None | The mailserver (smtp) used to send mails via nodemailer.
| MAIL_PORT | Number | 25 | The mailserver's port (smtp).
| MAIL_USER | String | None | The username used to authenticate against the mailserver.
| MAIL_PASSWORD | String | None | The password used to authenticate against the mailserver.
| MAIL_FROM | String | None | The mail address that mails get sent from.
| PRIVACY_URL | String | "/privacy" | The url path that get's attached to the app url to link to the privacy page.
| IMPRINT_URL | String | "/imprint" | The url path that get's attached to the app url to link to the imprint page.
| COPYRIGHT_OWNER  | String | "LfK!" | Text that gets inserted as the "copyright by" owner in the mails.
| EVENT_NAME | String | "Testing 4 Kaya" | The event's name - used to generate the mail text.
| CONTACT_MAIL  | String(email) | MAIL_FROM | Contact mail address listed at the bottom of some mail templates.

## Recommended Editor

[Visual Studio Code](https://code.visualstudio.com/)

### Recommended Extensions

* will be automatically recommended via ./vscode/extensions.json
* we also provide a config for i18n-ally in the .vscode folder

## Staging
### Branches & Tags
* vX.Y.Z: Release tags created from the main branch
   * The version numbers follow the semver standard
   * A new release tag automaticly triggers the release ci pipeline
* main: Protected "release" branch
   * The latest tag of the docker image get's build from this
   * New releases get created as tags from this   
* dev: Current dev branch for merging the different feature branches and bugfixes
   * The dev tag of the docker image get's build from this
   * Only push minor changes to this branch!
   * To merge a feature branch into this please create a pull request
* feature/xyz: Feature branches - nameing scheme: `feature/issueid-title`
* bugfix/xyz: Branches for bugfixes - nameing scheme:`bugfix/issueid-title`