Development Guide

This document describes the common development tasks for TEAMMATES. It is assumed that you have already set up your development environment.

If you encounter any issues, refer to the Troubleshooting Guide before seeking help in GitHub Discussions.

Running the Frontend Server

First, generate type definitions from the backend:

./gradlew generateTypes

gradlew.bat generateTypes

Then start the frontend server:

npm run start

The server will be available at http://localhost:4200. It runs in watch and live reload mode by default — any saved changes will be reflected immediately.

To disable live reload:

npm run start -- --no-live-reload

Running the Backend Server

Start the database if it is not already running:

docker compose up -d

Then start the backend server:

./gradlew serverRun

gradlew.bat serverRun

The server will be available at http://localhost:8080.

To stop the server, press Ctrl + C.

To run the backend server in the background, append & to the command. To stop it, kill the process on port 8080.

Serving frontend files from the backend

To serve the frontend from the backend server (e.g. for production environments or E2E tests):

npm run build

The frontend can now be accessed from http://localhost:8080 or your configured backend URL.

Running Tests

To run component tests:

./gradlew componentTests
npm run test

gradlew.bat componentTests
npm run test

To run static analysis tools:

./gradlew lint --continue
npm run lint

gradlew.bat lint --continue
npm run lint

TEAMMATES also includes end-to-end and accessibility tests. For more information, refer to the testing guide.

Config Points

Main config files — vary per developer and change frequently:

File Purpose
build.properties Configuration for the Backend
build-dev.properties Local development overrides for build.properties
config.ts Configuration for the Frontend
test.properties Configuration for the test driver (separate files for component and E2E tests)

Build config files — manage dependencies and automated tasks:

File Purpose
build.gradle Backend dependencies and Gradle tasks
package.json Frontend dependencies and NPM tasks
angular.json Angular application configuration

Static analysis — configuration files under static-analysis/. See static analysis guide.