This guide walks you through getting the Alliance Research Indicators client running on your machine from a fresh clone to a live dev server. All commands are run from inside theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/AllianceBioversityCIAT/alliance-research-indicators-client/llms.txt
Use this file to discover all available pages before exploring further.
research-indicators/ subdirectory, which is where the Angular workspace lives.
Move into the Angular workspace
The repository root contains documentation and configuration files. The Angular application itself lives one level deeper.All subsequent commands in this guide assume
research-indicators/ as the working directory.Install dependencies
package.json — Angular 19, PrimeNG 19, RxJS, Chart.js, and all dev tools (Jest, ESLint, Stylelint, Prettier). The first install on a fresh clone typically takes 1–2 minutes.Configure the environment files
The app reads three service URLs from A minimal environment file looks like this:Ask your team lead for the development values. See the environment variable reference below for what each field means.
src/environments/. The src/environments/ directory is git-ignored (only a .gitkeep is committed). Copy or create the files you need:npm script reference
All scripts are invoked from theresearch-indicators/ directory.
| Script | Command | Description |
|---|---|---|
start | npm start | Dev server at http://localhost:4200 with hot reload |
build | npm run build | Production build → dist/research-indicators/browser/ |
build-dev | npm run build-dev | Development build with sourcemaps |
watch | npm run watch | Incremental dev build in watch mode |
test | npm run test | Run Jest unit tests once |
test:watch | npm run test:watch | Jest in watch mode (interactive) |
test:coverage | npm run test:coverage | Coverage report (floors: stmts 40% / branches 20% / lines 45% / functions 30%) |
lint | npm run lint | Angular ESLint — TypeScript and HTML templates |
s-lint | npm run s-lint | Stylelint — all **/*.scss files |
compose:up:dev | npm run compose:up:dev | Start Docker Compose dev profile |
compose:up:prod | npm run compose:up:prod | Start Docker Compose prod profile |
Environment variable reference
| Variable | Required | Description |
|---|---|---|
mainApiUrl | Yes | Base URL of the primary NestJS REST API. All calls through ApiService are prefixed with this URL. Include the trailing slash. |
textMiningUrl | Yes | Base URL of the AI/NLP text-mining microservice. Used for auto-fill and content extraction on result forms. |
fileManagerUrl | Yes | Base URL of the evidence file upload service. Multipart uploads go here; the service returns a persistent URL that is attached to the result record. |
saveErrorsUrl | No | External error-tracking endpoint. Set to an empty string in development. |
fastResponseUrl | No | URL for the fast-response AI endpoint. |
feedbackUrl | No | URL for the user-interaction feedback endpoint. |
frontVersionUrl | No | URL of the deployed version.json asset used by VersionWatcherService to detect stale builds. |
Path alias reference
TypeScript path aliases are declared intsconfig.json and mirrored in jest.config.ts. Use these instead of deep relative imports in all new code.
If you add a new alias to
tsconfig.json, you must add the same entry to jest.config.ts so unit tests continue to resolve imports correctly.