# @lfk/backend Backend Server ## Quickstart 🐳 > Use this to run the backend with a postgresql db in docker 1. Clone the repo or copy the docker-compose 2. Run in toe folder that contains the docker-compose file: `docker-compose up -d` 3. Visit http://127.0.0.1:4010/api/docs to check if the server is running 4. You can now use the default admin user (`demo:demo`) ## Dev Setup 🛠 > Local dev setup utilizing sqlite3 as the database. 1. Rename the .env.example file to .env (you can adjust app port and other settings, if needed) 2. Install Dependencies ```bash pnpm i ``` 3. Start the server ```bash pnpm dev ``` ### Run Tests ```bash # Run tests once (server has to run) pnpm test # Run test in watch mode (reruns on change) pnpm test:watch # Run test in ci mode (automaticly starts the dev server) pnpm test:ci ``` ### Use your own mail templates > You use your own mail templates by replacing the default ones we provided (either in-code or by mounting them into the /app/static/mail_templates folder). The mail templates always come in a .html and a .txt variant to provide compatability with legacy mail clients. Currently the following templates exist: * pw-reset.(html/txt) ### Generate Docs ```bash pnpm docs ``` ## ENV Vars > You can provide them via .env file or docker env vars. > You can use the `test:ci:generate_env` package script to generate a example env (uses bs data as test server and ignores the errors). | Name | Type | Default | Description | | ---------------------- | ------------------ | -------------------- | -------------------------------------------------------------------------------------------------------------- | | APP_PORT | Number | 4010 | The port the backend server listens on. Is optional. | | DB_TYPE | String | N/A | The type of the db u want to use. It has to be supported by typeorm. Possible: `sqlite`, `mysql`, `postgresql` | | DB_HOST | String | N/A | The db's host's ip-address/fqdn or file path for sqlite | | DB_PORT | String | N/A | The db's port | | DB_USER | String | N/A | The user for accessing the db | | DB_PASSWORD | String | N/A | The user's password for accessing the db | | DB_NAME | String | N/A | The db's name | | NODE_ENV | String | dev | The apps env - influences debug info. Also when the env is set to "test", mailing errors get ignored. | | POSTALCODE_COUNTRYCODE | String/CountryCode | N/A | The countrycode used to validate address's postal codes | | PHONE_COUNTRYCODE | String/CountryCode | null (international) | The countrycode used to validate phone numers | | SEED_TEST_DATA | Boolean | False | If you want the app to seed some example data set this to true | | MAILER_URL | String(Url) | N/A | The mailer's base url (no trailing slash) | | MAILER_KEY | String | N/A | The mailer's api key. | | IMPRINT_URL | String(Url) | /imprint | The link to a imprint page for the system (Defaults to the frontend's imprint) | | PRIVACY_URL | String(Url) | /privacy | The link to a privacy page for the system (Defaults to the frontend's privacy page) | ## Recommended Editor [Visual Studio Code](https://code.visualstudio.com/) ### Recommended Extensions * will be automatically recommended via ./vscode/extensions.json ## 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 * dev: Current dev branch for merging the different feature branches and bugfixes * New releases get created as tags from this * 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 - naming scheme: `feature/issueid-title` * bugfix/xyz: Branches for bugfixes - naming scheme:`bugfix/issueid-title`