Contributing

Running the apps from source

Install the dependencies, build the shared library first, then serve the portal you work on:

npm install --legacy-peer-deps

npm run dev                # watch-build ft-common
npm start                  # ng serve (default project: support-center)
npm run start:mc           # ng run management-console:serve

npm run restart            # rebuild ft-common, then serve support-center
npm run restart:mc         # rebuild ft-common, then serve management-console

Production-style builds with the deployed base paths:

npm run prod               # ft-common + support-center     --base-href /support-portal/
npm run prod:mc            # ft-common + management-console  --base-href /management-portal/

From source the applications read the absolute backend URL checked into projects/<app>/src/assets/app-config.json; there is no Nginx proxy in front of ng serve. See Configuration.

Branching model (Gitflow)

The workspace follows Gitflow:

  • main — official release history (the branch CI builds and tags dev; older documentation calls it master).

  • develop — integration branch for features.

  • feature/* — one branch per feature, forked from develop, merged back into develop.

  • bugfix/* — one branch per fix, same lifecycle as a feature branch.

  • release/* — forked when the integration branch has enough features; only bug fixes and release tasks after the fork; merged into the release branch (tagged) and back into develop.

  • hotfix/* — forked from the release branch to patch a release; merged back into both.

Features never interact directly with the release branch.

Commit messages

Commits follow Conventional Commits, because the release changelog is generated from them (see Changelog):

feat(scope): add new feature
fix(scope): fix bug
docs(scope): update documentation
chore(scope): maintenance task
refs: DEV-1234 Jira ticket description

A Jira key in the subject or in a refs: footer becomes a clickable link in the generated changelog, so reference the ticket you are working on.

Before you push

npm run lint         # ESLint via @angular-eslint
npm run test         # Karma + Jasmine unit tests

Build the affected portal to confirm it compiles:

npm run prod         # or prod:mc for the Management Portal

Working with the shared library

ft-common is consumed by both portals as @ft/common (file:dist/ft-common). When you change it, rebuild it — npm run dev watch-builds it — so the portals pick up the change. A stale dist/ft-common is the usual cause of "my change does not show up".

Documentation

This documentation lives under docs/src (Antora). Documentation-only changes do not trigger an image build: build-on-auto.yml excludes docs/**.