Backend Java
Gradle multi-module build in splick-backend. Java 21, Spring Boot 3.3. Runnable services are services/*. Libraries are shared/*. Infra is infra/docker, infra/kong, infra/monitoring, infra/db-init.
Every service imports application-shared.yml for datasource, Redis, JWT public key, Flyway defaults, Actuator Prometheus, and inbox polling.
How the pages are organized
Each service folder uses the same template: overview, architecture, API, data model, events, dependencies, configuration, observability, jobs, runbook, testing. Update the page that matches the change. If you add a table, edit data model and the migration in the same pull request. If you add a stream, edit events and the consumer's page.
Local commands
Infrastructure: ./gradlew startTestEnvironment from splick-backend. Then start the services you need, including the outbox relay if you need side effects. OpenAPI validation: make openapi-validate.
Tests
Modules differ. Expense uses Testcontainers Postgres 16. Auth is unit and slice tests. Run a single module with ./gradlew :services:<name>:test.