Merge branch 'dev' into feature/13-barcode_generation

# Conflicts:
#	src/PdfCreator.ts
#	src/config.ts
This commit is contained in:
Nicolai Ort 2021-02-09 17:35:20 +01:00
commit b0d42939a6
5 changed files with 94 additions and 76 deletions

View File

@ -2,8 +2,20 @@
All notable changes to this project will be documented in this file. Dates are displayed in UTC. All notable changes to this project will be documented in this file. Dates are displayed in UTC.
#### [v0.1.3](https://git.odit.services/lfk/document-server/compare/v0.1.2...v0.1.3)
- 🚀Bumped version to v0.1.3 [`6a14232`](https://git.odit.services/lfk/document-server/commit/6a142328898d5b89fa11eaf033372971d1093b0c)
- 🧾New changelog file version [CI SKIP] [skip ci] [`b6296b8`](https://git.odit.services/lfk/document-server/commit/b6296b8d97cda943dfb5e11bc9dfbb2f363f5b81)
- Merge pull request 'Load more stuff from env feature/16-env_vars' (#17) from feature/16-env_vars into dev [`bc4d16e`](https://git.odit.services/lfk/document-server/commit/bc4d16e6f8959ed35d7e87647de84584cdfddd7b)
- Added new env vars to config [`3bb322e`](https://git.odit.services/lfk/document-server/commit/3bb322ede5db15a147c0d7a8db2a68ccb7fa2112)
- Added new env vars to readme [`b77bb3a`](https://git.odit.services/lfk/document-server/commit/b77bb3ad9dba9d73c2c81215ba57936192155a9a)
- Now loading interpolation vars from config/env [`b4ebae2`](https://git.odit.services/lfk/document-server/commit/b4ebae283b472b2f0c6e28caed49b30edb119585)
- 🧾New changelog file version [CI SKIP] [skip ci] [`a306009`](https://git.odit.services/lfk/document-server/commit/a30600943d01116b99e946cb705a16d0372b5095)
#### [v0.1.2](https://git.odit.services/lfk/document-server/compare/v0.1.1...v0.1.2) #### [v0.1.2](https://git.odit.services/lfk/document-server/compare/v0.1.1...v0.1.2)
> 7 February 2021
- Merge pull request 'Alpha Release 0.1.2 - Hotfix release' (#15) from dev into main [`123cf8a`](https://git.odit.services/lfk/document-server/commit/123cf8ad48a45fa10dcd5208215a6e525f31115a) - Merge pull request 'Alpha Release 0.1.2 - Hotfix release' (#15) from dev into main [`123cf8a`](https://git.odit.services/lfk/document-server/commit/123cf8ad48a45fa10dcd5208215a6e525f31115a)
- 🧾New changelog file version [CI SKIP] [skip ci] [`22b1e00`](https://git.odit.services/lfk/document-server/commit/22b1e0097efc865de9cc150cb0d0b99bf789b519) - 🧾New changelog file version [CI SKIP] [skip ci] [`22b1e00`](https://git.odit.services/lfk/document-server/commit/22b1e0097efc865de9cc150cb0d0b99bf789b519)
- 🚀Bumped version to v0.1.2 [`7e507d4`](https://git.odit.services/lfk/document-server/commit/7e507d4cc415877ac0b25503dc0ff9ecdceabf42) - 🚀Bumped version to v0.1.2 [`7e507d4`](https://git.odit.services/lfk/document-server/commit/7e507d4cc415877ac0b25503dc0ff9ecdceabf42)

151
README.md
View File

@ -1,75 +1,78 @@
# @lfk/document-server # @lfk/document-server
The document generation server responsible for creating pdfs for sponsoring contracts, certificates and more. The document generation server responsible for creating pdfs for sponsoring contracts, certificates and more.
This server doesn't interact with any database and can therefor be deployed on it's own. This server doesn't interact with any database and can therefor be deployed on it's own.
The basic generation mechanism makes the templates and routes interchangeable (if you want to expand or modify it). The basic generation mechanism makes the templates and routes interchangeable (if you want to expand or modify it).
## Quickstart 🐳 ## Quickstart 🐳
> Use this to run the document server in docker. > Use this to run the document server in docker.
1. Clone the repo or copy the docker-compose 1. Clone the repo or copy the docker-compose
2. Run in the folder that contains the docker-compose file: `docker-compose up -d` 2. Run in the folder that contains the docker-compose file: `docker-compose up -d`
3. Visit http://127.0.0.1:4010/docs to check if the server is running 3. Visit http://127.0.0.1:4010/docs to check if the server is running
## Dev Setup 🛠 ## Dev Setup 🛠
> Local dev setup > Local dev setup
1. Rename the .env.example file to .env (you can adjust app port and other settings, if needed) 1. Rename the .env.example file to .env (you can adjust app port and other settings, if needed)
2. Install Dependencies 2. Install Dependencies
```bash ```bash
yarn yarn
``` ```
3. Start the server 3. Start the server
```bash ```bash
yarn dev yarn dev
``` ```
## ENV Vars ## ENV Vars
> You can provide them via .env file or docker env vars. > You can provide them via .env file or docker env vars.
| Name | Type | Default | Description | Name | Type | Default | Description
| - | - | - | - | - | - | - | -
| APP_PORT | Number | 4010 | The port the backend server listens on. Is optional. | APP_PORT | Number | 4010 | The port the backend server listens on. Is optional.
| NODE_ENV | String | dev | The apps env - influences debug info. | NODE_ENV | String | dev | The apps env - influences debug info.
| EVENT_NAME | String | "Please set the event name" | The event's name - used to generate pdf text.
## Templates | CURRENCY_SYMBOL | String | "€" | The your currency's symbol - used to generate pdf text.
> The document server uses html templates to generate various pdf documents. | SPONSORING_RECEIPT_MINIMUM_AMOUNT | String | "10" | The mimimum total donation amount a sponsor has to donate to be able to receive a donation receipt - used to generate pdf text.
> The templates are stored in src/templates by default.
## Templates
We provide a set of default templates that we use for the ["Lauf für Kaya!" charity run](https://lauf-fuer-kaya.de). > The document server uses html templates to generate various pdf documents.
We use handlebars for templateing utilizing i18next for translation - the i18n string format in the templates is : `{{__ "string"}}` > The templates are stored in src/templates by default.
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.
We provide a set of default templates that we use for the ["Lauf für Kaya!" charity run](https://lauf-fuer-kaya.de).
The server currently needs the following templates to work: We use handlebars for templateing utilizing i18next for translation - the i18n string format in the templates is : `{{__ "string"}}`
* sponsoring_contract.html 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.
### Sponsoring Contracts The server currently needs the following templates to work:
* sponsoring_contract.html
| Template Data | Type | Optional | Description
| - | - | - | - ### Sponsoring Contracts
| runners | array(Runner) | ❌ | The runner objects. We generate a contract for each runner on a new DIN-A5 page.
| Template Data | Type | Optional | Description
| - | - | - | -
## Recommended Editor | runners | array(Runner) | ❌ | The runner objects. We generate a contract for each runner on a new DIN-A5 page.
[Visual Studio Code](https://code.visualstudio.com/)
## Recommended Editor
### Recommended Extensions
[Visual Studio Code](https://code.visualstudio.com/)
* will be automatically recommended via ./vscode/extensions.json
* we also provide a config for i18n-ally in the .vscode folder ### Recommended Extensions
## Staging * will be automatically recommended via ./vscode/extensions.json
### Branches & Tags * we also provide a config for i18n-ally in the .vscode folder
* vX.Y.Z: Release tags created from the main branch
* The version numbers follow the semver standard ## Staging
* A new release tag automaticly triggers the release ci pipeline ### Branches & Tags
* main: Protected "release" branch * vX.Y.Z: Release tags created from the main branch
* The latest tag of the docker image get's build from this * The version numbers follow the semver standard
* New releases get created as tags from this * A new release tag automaticly triggers the release ci pipeline
* dev: Current dev branch for merging the different feature branches and bugfixes * main: Protected "release" branch
* The dev tag of the docker image get's build from this * The latest tag of the docker image get's build from this
* Only push minor changes to this branch! * New releases get created as tags from this
* To merge a feature branch into this please create a pull request * dev: Current dev branch for merging the different feature branches and bugfixes
* feature/xyz: Feature branches - nameing scheme: `feature/issueid-title` * 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` * bugfix/xyz: Branches for bugfixes - nameing scheme:`bugfix/issueid-title`

View File

@ -1,6 +1,6 @@
{ {
"name": "@odit/lfk-document-server", "name": "@odit/lfk-document-server",
"version": "0.1.2", "version": "0.1.3",
"description": "The document generation server for the LfK! runner system. This generates certificates, sponsoring aggreements and more", "description": "The document generation server for the LfK! runner system. This generates certificates, sponsoring aggreements and more",
"main": "src/app.ts", "main": "src/app.ts",
"scripts": { "scripts": {

View File

@ -20,7 +20,7 @@ import { RunnerGroup } from './models/RunnerGroup';
export class PdfCreator { export class PdfCreator {
private templateDir = path.join(__dirname, '/templates'); private templateDir = path.join(__dirname, '/templates');
private browser; private browser;
private static interpolations = { eventname: "Lauf für Kaya! 2021", sponsoring_receipt_minimum_amount: '10', currency_symbol: "€" } private static interpolations = { eventname: config.eventname, sponsoring_receipt_minimum_amount: config.sponsoring_receipt_minimum_amount, currency_symbol: config.currency_symbol }
/** /**
* Main constructor. * Main constructor.

View File

@ -5,6 +5,9 @@ export const config = {
internal_port: parseInt(process.env.APP_PORT) || 4010, internal_port: parseInt(process.env.APP_PORT) || 4010,
development: process.env.NODE_ENV === "production", development: process.env.NODE_ENV === "production",
version: process.env.VERSION || require('../package.json').version, version: process.env.VERSION || require('../package.json').version,
eventname: process.env.EVENT_NAME || "Please set the event name",
currency_symbol: process.env.CURRENCY_SYMBOL || "€",
sponsoring_receipt_minimum_amount: process.env.SPONSORING_RECEIPT_MINIMUM_AMOUNT || "10",
codeformat: process.env.CODEFORMAT || "qrcode" codeformat: process.env.CODEFORMAT || "qrcode"
} }
let errors = 0 let errors = 0