Backend Server
Philipp Dormann
5ef3b6eb97
Co-authored-by: Nicolai Ort <info@nicolai-ort.com> Reviewed-on: #208 Co-authored-by: Philipp Dormann <philipp@philippdormann.de> Co-committed-by: Philipp Dormann <philipp@philippdormann.de> |
||
---|---|---|
.vscode | ||
scripts | ||
src | ||
.dockerignore | ||
.drone.yml | ||
.env.ci | ||
.env.example | ||
.gitignore | ||
CHANGELOG.md | ||
docker-compose.yml | ||
Dockerfile | ||
jest.config.js | ||
LICENSE | ||
licenses.md | ||
ormconfig.js | ||
package.json | ||
pnpm-lock.yaml | ||
README.md | ||
tsconfig.json |
@lfk/backend
Backend Server
Quickstart 🐳
Use this to run the backend with a postgresql db in docker
- Clone the repo or copy the docker-compose
- Run in toe folder that contains the docker-compose file:
docker-compose up -d
- Visit http://127.0.0.1:4010/api/docs to check if the server is running
- You can now use the default admin user (
demo:demo
)
Dev Setup 🛠
Local dev setup utilizing sqlite3 as the database.
- Rename the .env.example file to .env (you can adjust app port and other settings, if needed)
- Install Dependencies
pnpm i
- Start the server
pnpm dev
Run Tests
# 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
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
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