Getting Started

This guide gets a UniTrack server running and pushes your first test report into it.

1. Prerequisites

  • Java 21

  • A database — PostgreSQL for production, or embedded H2 (PostgreSQL mode) for a quick demo

  • Maven is not required to run; the project ships the Maven Wrapper (./mvnw)

2. Build

./mvnw clean install

The reactor builds two modules: unitrack-core (domain, persistence, reporting) and unitrack-web (REST API, Thymeleaf dashboard, security).

3. Run against PostgreSQL

By default the app connects to PostgreSQL on localhost:5432. Override with environment variables (see Configuration):

UNITRACK_DB_URL=jdbc:postgresql://localhost:5432/unitrack \
UNITRACK_DB_USER=unitrack \
UNITRACK_DB_PASSWORD=unitrack \
./mvnw -pl unitrack-web spring-boot:run

Flyway applies the schema migrations on startup. The dashboard is then served at http://localhost:8080.

4. Run a self-contained demo on H2

For evaluation you can run entirely on embedded H2 with seeded sample data — no external database needed. The Compose stack in deploy/compose.h2.yaml does exactly this; see Deployment. To enable the seeded demo projects and a test/test user, set:

UNITRACK_DEMO_ENABLED=true

5. Push your first report

With the server up, upload a Surefire + JaCoCo report from any build:

curl -F project=myapp -F branch=main -F commit=$(git rev-parse HEAD) \
     -F 'junit=@target/surefire-reports/TEST-com.example.MyTest.xml;type=text/xml' \
     -F 'jacoco=@target/site/jacoco/jacoco.xml;type=text/xml' \
     http://localhost:8080/api/v1/ingest

Open the dashboard and the myapp project now shows its first run, pass/fail totals, and line-coverage percentage. From here, wire it into CI with the upload script and explore the features.