No description
  • Kotlin 95.8%
  • Dockerfile 4.2%
Find a file Use this template
Nathan - s1143109 c430f49918
All checks were successful
pr / test (push) Successful in 2m36s
chore(renovate): opt into the shared dependency updates
2026-09-09 10:46:16 +02:00
.forgejo/workflows fix(template): accept the calling frontend's issuer and require a scope-named admin role 2026-09-09 10:34:41 +02:00
.gitea fix: keep dollar patterns out of the substitution list 2026-09-07 16:11:17 +02:00
.mvn/wrapper chore: add the spring boot skeleton with platform auth on the classpath 2026-09-07 14:12:00 +02:00
docs feat(scaffold): use scaffolder placeholders so the backstage form substitutes values 2026-09-07 16:09:39 +02:00
helm Release 8429d4d 2026-09-09 08:37:52 +00:00
monitoring feat(scaffold): use scaffolder placeholders so the backstage form substitutes values 2026-09-07 16:09:39 +02:00
src fix(template): accept the calling frontend's issuer and require a scope-named admin role 2026-09-09 10:34:41 +02:00
.dockerignore chore: add the spring boot skeleton with platform auth on the classpath 2026-09-07 14:12:00 +02:00
.gitignore chore: add the spring boot skeleton with platform auth on the classpath 2026-09-07 14:12:00 +02:00
catalog-info.yaml feat(scaffold): use scaffolder placeholders so the backstage form substitutes values 2026-09-07 16:09:39 +02:00
Dockerfile fix: make the test suite work on boot 4 and containerized runners 2026-09-07 14:46:30 +02:00
mvnw chore: add the spring boot skeleton with platform auth on the classpath 2026-09-07 14:12:00 +02:00
mvnw.cmd chore: add the spring boot skeleton with platform auth on the classpath 2026-09-07 14:12:00 +02:00
pom.xml fix: keep dollar patterns out of the substitution list 2026-09-07 16:11:17 +02:00
README.md feat(scaffold): use scaffolder placeholders so the backstage form substitutes values 2026-09-07 16:09:39 +02:00
renovate.json chore(renovate): opt into the shared dependency updates 2026-09-09 10:46:16 +02:00

${{ values.name }}

A Spring Boot Kotlin backend on the PandaStage platform auth contract. Instantiated from templates/template-api-springboot, this service authenticates against authentik through platform-springboot-starter, persists to its own CNPG Postgres cluster, deploys automatically from helm/values.yaml and appears in the catalogue — with nothing hand-edited.

What you get

  • Bearer-token authentication with the contract's 401/403 error bodies, wired by the starter.
  • An ExampleEntity keyed on the token's sub (no user table, no password column).
  • The example entity ships without a migration — write your first Flyway migration (or delete the example) before the first deploy.
  • Flyway migrations into a per-preview schema, so parallel pull requests never collide.
  • Health on /api/health (8080), actuator and Prometheus on 8081, OTel traces, Swagger UI.
  • Preview deployments per pull request, release builds on push to main.

Running locally

./mvnw -B verify          # compiles and runs the Testcontainers suite (Docker required)

Tests never reach authentik: the JWT decoder is backed by a locally generated key, and everything else is the real production path.

Structure

Path What lives there
src/main/kotlin/nl/nathandev/service/ The application, the ExampleEntity API and its health endpoint
src/main/resources/db/migration/ Where your Flyway migrations go — the template ships none
src/test/kotlin/ The Testcontainers suite (401/403/200 and schema isolation)
helm/values.yaml How charts/app and charts/services deploy it
monitoring/ PodMonitor, applied with kubectl apply -f monitoring/
.forgejo/workflows/ Test, release and per-PR preview pipelines

See docs/ for the full guide.