Monorepo for Team Komet sine Ktor-applikasjoner og fellesmodulen amt-lib.
Dette monorepoet inneholder tre Ktor-applikasjoner som benytter en felles modul for modeller, databasekode og Kafka-integrasjon.
amt-deltaker er den viktigste applikasjonen i arkitekturen og fungerer som kjerne for deltakerdata.
Hovedfunksjoner:
- Publiserer siste versjon av deltakelser på Kafka
- Fungerer som ressurs-server for amt-deltaker-bff
- Har en database som inneholder “sannheten” om deltakerne
Backend-for-frontend for flere flate-applikasjoner.
amt-distribusjon har ansvar for journalføring av vedtak og å varsle tiltaksdeltaker og veileder om viktige endringer.
- Nav-veileder varsles gjennom OBO sitt filter i Modia Arbeidsrettet oppfølging.
- Deltaker varsles gjennom minside-varsel på nav.no.
- Ikke-digitale deltakere mottar varsler som brev.
Denne applikasjonen håndterer også Kafka-meldinger og asynkrone prosesser for å sikre at varsler og journalføring skjer på en pålitelig måte.
Felleskode for alle applikasjonene:
- Datamodeller
- Databaseintegrasjon
- Kafka-produsenter og -konsumenter
- Generell hjelpekode og utilities
For å bygge alle modulene i amt-deltakelser, gjør følgende:
Klon repoet:
git clone git@github.com:navikt/amt-deltakelser.git
cd amt-deltakelserKjør deretter build med Gradle Wrapper:
./gradlew buildFor å fikse lint-feil og formatere koden i henhold til KtLint-reglene, kjør:
./gradlew ktlintFormat buildFor å bygge enkeltmoduler, f.eks. amt-deltaker-bff:
./gradlew build -p amt-deltaker-bffeller
./gradlew :amt-deltaker-bff:buildBygging av hele repoet skal normal gå raskt etter første bygg grunnet caching. Ved bumping av versjoner, vil alt bygges på nytt.
amt-deltakelser har automatiserte workflows for testing, sikkerhet og publisering, basert på GitHub Actions.
- Alle Ktor-applikasjoner og
amt-libbygges og testes automatisk ved push eller pull request. - Enhetstester og integrasjonstester kjøres med JUnit 5, Kotest og Testcontainers.
- KtLint sjekker kodeformat og stil automatisk.
- Workflows trigges per modul via
pathsogpaths-ignorefor å redusere unødvendige bygg.
- CodeQL kjøres automatisk på alle PRer for å identifisere sikkerhetsrisikoer og sårbarheter i koden.
- Eventuelle funn markeres som kommentarer i PR.
amt-libpubliseres som Maven-pakke til GitHub Packages.- Publisering skjer når en PR merges til
main, eller ved commits som pushes direkte tilmain.
Applikasjonene i amt-deltakelser benytter flere viktige biblioteker og fellesmoduler. Vi bruker Gradle convention plugins for å standardisere oppsettet, inkludert Kotlin, Ktor og KtLint, slik at alle applikasjoner følger samme konvensjoner.
- Ktor – HTTP-server og klient; alle Ktor-moduler håndteres via
ktor-serverogktor-clientbundles. - Kafka – Kafka-klienter og felles outbox-mønster via
amt-lib. - Database – HikariCP, Flyway, PostgreSQL og Kotliquery samlet i
databasebundle. - Logging – Logback, Logstash-encoder og nav-common-log, samlet i
loggingbundle. - Metrics – Micrometer + Prometheus for overvåkning og eksponering av metrics.
- Testing – Ktor-test, Kotest, Mockk og Nimbus JWT, samlet i
ktor-testogkotestbundles. - Fellesmoduler (amt-lib) – inneholder modeller, utilities, outbox/Kafka-støtte og teststøtte.
- Kodekvalitet – KtLint brukes via convention plugin for automatisk formatering og kodekontroll.
ktor-server→ alle nødvendige Ktor-server-modulerktor-client→ Ktor HTTP-klientmodulerdatabase→ Hikari, Flyway, PostgreSQL og Kotliquerylogging→ Logback, Logstash encoder og nav-common-logktor-test→ Ktor test-host og klient-mockkotest→ Kotest assertions
Alle versjoner styres i libs.versions.toml, slik at alle moduler i monorepoet har konsistente versjoner.
Dette prosjektet er lisensiert under MIT License.
Se LICENSE for fullstendig lisensinformasjon.