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 tagsdev; older documentation calls itmaster). -
develop— integration branch for features. -
feature/*— one branch per feature, forked fromdevelop, merged back intodevelop. -
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 intodevelop. -
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/**.