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 refusjon
README | https://github.com/navikt/mulighetsrommet/blob/main/frontend/arrangor-flate/README.md |
Url (dev-miljø) | https://arrangor-refusjon.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
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