Skip to content

Latest commit

 

History

History
286 lines (201 loc) · 13.4 KB

README.md

File metadata and controls

286 lines (201 loc) · 13.4 KB

Mulighetsrommet 🎯

Introduksjon

Mulighetsrommet er en applikasjonsportfølje som skal hjelpe brukere og veiledere til å få en helhetlig oversikt over alle arbeidsmarkedstiltak Nav kan tilby.

Oppsett

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:

Tooling via asdf

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.

Gradle

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

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.

Token for pnpm install av private pakker

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.

Github token er utdatert.

  1. Gå til Personal Access Token på Github
  2. Trykk Tokens (classic)
  3. Trykk Generate new token --> Generate new token (classic)
  4. Skriv noe som Nav IT under Note
  5. Velg hvor lenge du vil at det skal vare under Expiration
  6. Under Select scope velg repo og read:packages
  7. Trykk Generate token
  8. Kopier ghp_x... tokenet og putt det i .npmrc filen på maskinen din
  9. Trykk Configure SSO
  10. Trykk Authorizenavikt
  11. Ferdig!

Docker

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

Utvikling

Kodeformatering og linting i backend

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

Kodeformatering og linting i frontend

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

Mocks via Wiremock

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

Overvåking av løsninger

Det finnes noen tilgjengelige dashboards, men nytten med disse kan variere:

Moduler

mulighetsrommet-veileder-flate

Kildekode https://github.com/navikt/mulighetsrommet/tree/main/frontend/mulighetsrommet-veileder-flate
README https://github.com/navikt/mulighetsrommet/blob/main/frontend/mulighetsrommet-veileder-flate/README.md
Url (dev-miljø) https://veilarbpersonflate.intern.dev.nav.no/12118323058

@mr/api-client

Klient til frontend for å snakke med backend. Auto-generert med OpenAPI via openapi.yaml i mulighetsrommet-api.

Kildekode https://github.com/navikt/mulighetsrommet/tree/main/frontend/api-client
README https://github.com/navikt/mulighetsrommet/blob/main/frontend/api-client/README.md
openapi.yaml https://github.com/navikt/mulighetsrommet/tree/main/mulighetsrommet-api/src/main/resources/web/openapi.yaml

mulighetsrommet-veileder-cms

Sanity Studio til forvaltning av informasjon for veiledere.

Kildekode https://github.com/navikt/mulighetsrommet/tree/main/frontend/mulighetsrommet-cms
README https://github.com/navikt/mulighetsrommet/blob/main/frontend/mulighetsrommet-cms/README.md
Url (test-datasett) https://mulighetsrommet-sanity-studio.intern.nav.no/test/desk
Url (prod-datasett) https://mulighetsrommet-sanity-studio.intern.nav.no/production/desk

mulighetsrommet-api

Kildekode https://github.com/navikt/mulighetsrommet/tree/main/mulighetsrommet-api
README https://github.com/navikt/mulighetsrommet/blob/main/mulighetsrommet-api/README.md
Url (dev-miljø) https://mulighetsrommet-api.intern.dev.nav.no/
API (internt) https://mulighetsrommet-api.intern.dev.nav.no/swagger-ui/internal
API (eksternt) https://mulighetsrommet-api.intern.dev.nav.no/swagger-ui/external

mulighetsrommet-kafka-manager

Applikasjon som gir oversikt over kafka-topics relevante for dette prosjektet.

README https://github.com/navikt/kafka-manager
Kildekode https://github.com/navikt/mulighetsrommet/tree/main/iac/kafka-manager
Url (dev-miljø) https://mulighetsrommet-kafka-manager.intern.dev.nav.no
Url (prod-miljø https://mulighetsrommet-kafka-manager.intern.nav.no

mr-admin-flate

Administrasjonsflate for tiltak- og fagansvarlige i Nav som jobber med tiltakstyper og tiltaksgjennomføringer.

README https://github.com/navikt/mulighetsrommet/blob/main/frontend/mr-admin-flate/README.md
Url (demo) https://tiltaksadministrasjon.ekstern.dev.nav.no
Url (dev-miljø) https://tiltaksadministrasjon.intern.dev.nav.no
Url (prod-miljø) https://tiltaksadministrasjon.intern.nav.no

arrangør-flate

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>

Overvåking av automatiske jobber

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:

Rutiner i teamet

Synkronisere kontaktpersoner til admin-flate

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

Datadeling på Datamarkedsplassen

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

Henvendelser

Spørsmål knyttet til koden eller prosjektet kan stilles via issues her på GitHub.

For Nav-ansatte

Interne henvendelser kan sendes via Slack i kanalen #team-valp