Skip to main content

Code Style and Quality Gates

Backend

ToolPurposeRun
Spotlessgoogle-java-format (AOSP), import order, trailing whitespacemvn -B spotless:apply
CheckstyleStyle rules beyond formattingmvn -B -Plint -DskipTests verify
SpotBugsBug pattern detectionmvn -B -Plint -DskipTests verify
Mycila license-maven-pluginApache 2.0 header on every Java filemvn -B -Plint -DskipTests verify
codehaus license-maven-pluginThird-party license aggregationmvn org.codehaus.mojo:license-maven-plugin:add-third-party

The lint Maven profile runs everything in one go without tests.

Frontend

ToolPurpose
PrettierFormatting (with prettier-plugin-svelte and prettier-plugin-tailwindcss)
ESLint (custom config)Lint rules, including project-specific custom rules
Custom ESLint rulesCopyright header, Svelte file structure, Svelte script order
licenses-third-party.jsThird-party license aggregation

Both npm run lint and npm run format run all three together.

License header

Every source file (Java, JavaScript, TypeScript, Svelte) must carry the Apache 2.0 header. The auto-fixers add it for you. CI fails if it is missing.

Renovate

The repository uses Renovate for dependency updates. CI is set up so that Renovate's PRs auto-regenerate LICENSES-THIRD-PARTY.md if a dependency change requires it. Human contributors do not need to do this manually — but if you change pom.xml or package.json, you may need to run the appropriate licenses task locally and commit the result.