Mulighetsrommet er en applikasjonsportfølje som skal hjelpe brukere og veiledere til å få en helhetlig oversikt over alle arbeidsmarkedstiltak Nav kan tilby.
Dette prosjektet er strukturert som et monorepo, der både backend- og frontend-kode er organisert i samme kodebase. Enn så lenge benytter vi følgende tooling for å kjøre tasks for henholdsvis backend og frontend:
- Gradle med subprojects
- Turborepo i kombinasjon med PNPM workspaces
Om ønskelig så kan asdf benyttes til å installere verktøyene som trengs for å kjøre dette
prosjektet lokalt. Dette prosjektet inkluderer en
asdf
.tool-versions-fil som spesifiserer versjoner for
runtime-avhengigheter som matcher det vi kjører på Github Actions (CI) og på NAIS.
For å benytte asdf
så må du installere programmet og deretter
plugins for hver toolchain eller verktøy du ønsker å administrere med asdf
(du kan utelate plugins etter eget ønske
hvis du ønsker å administrere dette manuelt i stedet):
asdf plugin-add java
asdf plugin-add gradle https://github.com/rfrancis/asdf-gradle.git
asdf plugin-add nodejs
asdf plugin-add kubectl https://github.com/asdf-community/asdf-kubectl.git
Når plugins er installert så kan du kjøre kommandoen asdf install
i rot av prosjektet, samt for hver
gang .tools-versions
har endret seg.
Det anbefales å ha gradle
installert, det gjør det lettere å kjøre kommandoer uavhengig av hvilket prosjekt du jobber
med. Hvis du ikke har installert gradle
via asdf
så kan det
også installeres manuelt.
Det ligger et gradlew script i repoet som oppgraderes ved nye versjoner og gradle
plukker automatisk opp
dette. Dette lar oss kjøre scripts i forskjellige prosjekter uten å måtte referere direkte til gradlew
, f.eks:
# I mappen mulighetsrommet-api
gradle run
Turborepo benyttes til å kjøre kommandoer på tvers av workspaces. Det tar seg blandt annet av å cache output fra bygg og å kjøre bygge-script i avhengigheter om det er behov for det. Det kan være en fordel å installere globalt for å gjøre lokal utvikling enklere:
npm i -g turbo
Deretter kan npm-scripts kjøres direkte via turbo
. Fordelen med å gjøre dette er bl.a. at interne avhengigheter bygges
automatisk:
turbo run dev
turbo run build
# osv ...
Se turbo.json og Configuring tasks for hvordan man kan utvide støtten med flere scripts.
Noen pakker under @navikt
hentes fra Github sitt NPM-repository. For at dette skal fungere må du først autentisere mot
Github:
pnpm login --registry https://npm.pkg.github.com
Brukernavn er Github-brukernavnet ditt. Passordet er et Personal Access Token med
read:packages
-scope. Tokenet må autentiseres med SSO mot navikt-organisasjonen.
- Gå til Personal Access Token på Github
- Trykk
Tokens (classic)
- Trykk
Generate new token
-->Generate new token (classic)
- Skriv noe som
Nav IT
underNote
- Velg hvor lenge du vil at det skal vare under
Expiration
- Under
Select scope
velgrepo
ogread:packages
- Trykk
Generate token
- Kopier
ghp_x...
tokenet og putt det i.npmrc
filen på maskinen din - Trykk
Configure SSO
- Trykk
Authorize
pånavikt
- Ferdig!
For å gjøre utvikling på lokal maskin enklere benytter vi Docker og Docker Compose til å kjøre databaser og mocks av tredjeparts tjenester. Sørg for å ha Docker installert, se instruksjoner for Mac eller Ubuntu.
Når installasjon er fullført kan du bl.a. benytte følgende kommandoer til å administrere containere definert
i docker-compose.yaml
:
# Starter alle containere som trengs for lokal utvikling
docker compose --profile dev up -d
# Stopper alle containere
docker compose -p mulighetsrommet down
# Stopper alle containere og sletter samtidig tilhørende volumer
docker compose -p mulighetsrommet down -v
Vi bruker ktlint
for kodeformatering og linting av kotlin-kode. Følgende kommandoer kan benyttes til å sjekke og fikse
lintefeil:
# Sjekk lintefeil
gradle ktlintCheck
# Sjekk lintefeil og fiks de som kan fikses automatisk
gradle ktlintFormat
Vi bruker prettier
for kodeformatering og eslint for linting. Følgende kommandoer kan benyttes til å sjekke og fikse
lintefeil:
# Sjekk lintefeil
turbo run lint
# Sjekk lintefeil og fiks de som kan fikses automatisk
turbo run lint:fix
Vi har en rekke mocks for tredjeparts tjenester som blir administrert via Wiremock i docker-compose.yaml og som blir benyttet når du kjører tjenestene i dette prosjektet på lokal maskin. Se konfigurasjonen der for hvor mockene er definert hvis du ønsker å utvide med flere responser.
Følgende endepunkter kan være kjekke for benytte under testing:
- Get all mocks:
curl -XGET http://localhost:8090/__admin/mappings
- Reload mocks:
curl -I -XPOST http://localhost:8090/__admin/mappings/reset
Det finnes noen tilgjengelige dashboards, men nytten med disse kan variere:
Klient til frontend for å snakke med backend. Auto-generert med OpenAPI via openapi.yaml
i mulighetsrommet-api
.
Sanity Studio til forvaltning av informasjon for veiledere.
Applikasjon som gir oversikt over kafka-topics relevante for dette prosjektet.
Administrasjonsflate for tiltak- og fagansvarlige i Nav som jobber med tiltakstyper og tiltaksgjennomføringer.
Flate på nav.no for arrangører som skal be om utbetaling
README | https://github.com/navikt/mulighetsrommet/blob/main/frontend/arrangor-flate/README.md |
Url (dev-miljø) | https://arrangor-utbetaling.intern.dev.nav.no/ |
Url (prod-miljø) | <TBD - Ikke prodsatt per 06.09.2024> |
Vi har satt opp to Slack-bots som kan gi beskjed til oss på Slack i kanalen #team-valp-monitoring dersom det oppstår feil under kjøring av de automatiske jobbene.
Botene finner man her:
- Dev-monitorering: https://api.slack.com/apps/A04PW7S8J94/general
- Prod-monitorering: https://api.slack.com/apps/A04Q2NNABDZ
For å legge til eller fjerne kontaktpersoner i admin-flate så går du til https://portal.azure.com/#view/Microsoft_AAD_IAM/GroupDetailsMenuBlade/~/Members/groupId/0fdd133a-f47f-4b95-9a5e-f3a5ec87a472/menuId/ og logger inn med din nav-bruker.
Velg så Members -> Add members -> Søk opp personen med navn -> Huk av og velg Select. Synkronisering av kontaktpersoner kjører en gang i timen, så du må potensielt vente en time før kontaktpersonen blir tilgjengelig i admin-flate.
TIPS: Du kan gå til MAAM og velge mr-api (i
toppmenyen) og så kjøre task'en sync-navansatte
. Da skal kontaktpersoner blir synkronisert i løpet av ett minutt.
MERK: Hvis du mangler tilgang til AD så kan du selv be om tilgang ved å følge beskrivelse her: https://github.com/navikt/azure-ad-self-service/blob/main/DirectoryRead/README.md
For å legge til en utvikler og gi riktige tilganger til dev-miljø så må utvikleren legges til en rekke AD-grupper. Se lenker under og hvordan man synkroniserer brukeren.
- Gå til Team Mulighetsrommet og legg til utvikleren
- Gå til Tiltak avtaler skriv og legg til utvikleren
- Gå til Tiltak gjennomføringer skriv og legg til utvikleren
- Gå til Tiltak økonomi beslutter og legg til utvikleren
- Gå til https://mulighetsrommet-arena-adapter-manager.intern.dev.nav.no/mr-api (logg inn med trygdeetaten-bruker) og trykk på Sync navansatte. Vent noen minutter og så bør utvikleren ha tilgang
Vi har to datasett tilgjengelig på datamarkedsplassen. Det er data om tiltakstypene vi skal migrere og data om tiltaksgjennomføringer. Datasettene finner du her: https://data.intern.nav.no/dataproduct/5755b188-6670-41a2-8bbc-74fba810bd9e/Data%20om%20arbeidsmarkedstiltak%20fra%20Team%20Valp
Spørsmål knyttet til koden eller prosjektet kan stilles via issues her på GitHub.
Interne henvendelser kan sendes via Slack i kanalen #team-valp