Et open-source verktøy for administrasjon av sikkerhets-compliance i komplekse organisasjoner.
Denne applikasjonen er bygget for visning av data i tabellformat på en oversiktlig og brukervennlig måte. Løsningen støtter data fra AirTable og YAML-filer. Den er utviklet med fokus på å hjelpe brukere med å oppfylle krav og standarder ved å gi en strukturert oversikt over nødvendige data. Brukere kan legge inn svar i ulike formater samt legge til kommentarer direkte i tabellens rader, noe som gjør det enkelt å holde oversikt over status og nødvendig informasjon. Løsningen er fleksibel og tilrettelagt for videre utvidelser etter behov.
Følg stegene nedenfor for å komme i gang, og bruk de tilgjengelige skriptene for å administrere prosjektet effektivt.
Regelrett kan konfigureres for å tilpasse seg ulike behov. Med det følger en drøss av verdier man kan endre på. Nesten alt har en default verdi; de som MÅ bli satt (ikke har default verdi) for at Regelrett skal fungere er nevnt under i Steg 1, andre er nevnt i konfigurasjonsdokumentasjonen.
Les mer: Konfigurasjon
Provisjoneringen til regelrett går ut på å fortelle til regelrett hvor og hvordan den finner skjemaene man etterhvert skal kunne fylle ut. Det vil si at hvis du har konfigurert opp regelrett og fått den til å kjøre, vil den bare vise en blank side frem til du provisjonerer opp skjemakildene.
En kort intro til hvordan du gjør dette finner du i stegene under, men for mer utfyllende detaljer og eksempler bør du lese her: Provisjonering
Start med å klone repoet fra GitHub:
git clone <repository-url>
For å sette opp databasen må man ha installert Docker. Dette kan du gjøre ved å kjøre denne kommandoen:
brew install --cask docker
Alternativt kan du bruke Postgres desktop til å kjøre en database lokalt. Som standard antar Regelrett at du
har en bruker postgres uten passord. Dette er
konfigurerbart.
Du trenger også et verktøy for håndtering av containere eller et container-runtime miljø som lar deg kjøre containere på din lokale maskin. Du kan bruke Docker Desktop dersom du har det. Hvis ikke kan du bruke Colima. Last ned Colima ved å kjøre denne kommandoen:
brew install colima
Etter å ha installert Colima, kan du starte det opp ved å kjøre denne kommandoen:
colima start --network-address
Når du har Colima eller Docker Desktop kjørende, kjør denne kommandoen:
docker run --name regelrett-db -it -e POSTGRES_HOST_AUTH_METHOD=trust -e POSTGRES_USER=postgres -e POSTGRES_DB=regelrett -p 5432:5432 -d postgres:15.4
Nå skal databasen være oppe og kjøre! Hvis du ønsker å kjøre opp databasen på en egen port må du huske å bytte ut porten i configen og i kommandoen over.
- Du kan stoppe containeren ved å kjøre
docker stop regelrett-dbog starte den igjen meddocker start regelrett-db. - Applikasjonen bruker en PostgreSQL-database, og Flyway migration for å gjøre endringer på databaseskjemaer.
- Alle filer i Flyway migration script må ha følgende format:
V<Version>__<Description>.sql For eksempel: V1.1__initial.sql
- Migreringsfilene ligger i
src/main/resources/db/migration. - Databasen heter "regelrett", og må settes opp lokalt på utviklerens maskin utenfor Flyway.
- Databasemigreringer kjører automatisk ved oppstart av applikasjonen, eller så
kan de kjøres manuelt med
./gradlew flywayMigrate
Backend er bygget med KTOR og frontend er bygget med React, Vite og TypeScript.
Før du begynner, sørg for at du har følgende installert:
Du må konfigurere applikasjonen slik det beskrives i
conf/README.md. Du kan enten opprette en conf/custom.yaml
fil, eller bruke miljøvariabler der du kjører backenden.
Verdiene som må overskrives, enten i fil - i conf/custom.yaml:
oauth:
tenant_id: <tenant_id>
client_id: <client_id>
client_secret: <client_secret>Eller som miljøvariabler:
RR_OAUTH_TENANT_ID=<TENANT_ID>
RR_OAUTH_CLIENT_ID=<CLIENT_ID>
RR_OAUTH_CLIENT_SECRET=<CLIENT_SECRET>Om du setter base.mode til development skal KTOR appen kunne reloades automatisk.
conf/custom.yaml:
base:
mode: developmentMiljøvariabel:
RR_BASE_MODE=developmentDu kan sette miljøvariablene i IntelliJ ved å gå inn på Run -> Edit configurations.
- Installer avhengigheter med
pnpm i - Start utviklingsserveren ved å kjøre:
pnpm run dev
- Gå inn på
Run -> Edit configurations - Trykk på + for å legge til ny konfigurasjon og velg KTOR
- Sett
no.bekk.ApplicationKtsom main class
./gradlew -t build -x testi ett shell./gradlew runi ett annet
Backenden fungerer som api og webserver for frontenden, som skal være
tilgjengelig på http://localhost:8080
Nå som Regelrett er oppe og kjører, må du provisjonere skjemakildene slik som beskrevet i conf/provisioning/README.md.
I praksis betyr provisjonering at du forteller Regelrett hvor skjemaene ligger (Airtable eller Yaml) og hvordan man får tak i dem, slik at applikasjonen kan laste dem inn.
I conf/provisioning/schemasources/sample.yaml finner du et eksempel på hvordan du provisjonerer opp et skjema.
Kopier eksempelet og endre verdiene til å stemme overens med dine skjemakilder og skjema. Du kan provisjonere opp flere skjemaer i samme fil.
Det finnes to typer skjemakilder: YAML og Airtable. For YAML-skjemaer lager du én .yaml-fil per skjema i mappen src/main/resources/questions
Hvis du provisjonerer opp en skjemakilde fra airtable og velger å beholde airtable access_token som miljøvariabel slik som i sample.yaml, må du sette denne som en miljøvariabel. Denne brukes i conf/provisioning/.yaml og kan derfor ikke settes i conf/custom.yaml:
RR_AIRTABLE_ACCESS_TOKEN=<PAT>Les mer om provisjonering.
For å kunne kjøre flere av testene lokalt, så må du ha en fungerende dockerinstallasjon. I tillegg, avhengig av oppsettet ditt, så er det noen spesifikke miljøvariabler som må settes. Hvis du bruker colima, sett følgende i .bashrc/.zshrc eller andre tilsvarende konfigurasjonsfiler for ditt shell;
export TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE=/var/run/docker.sock
export TESTCONTAINERS_HOST_OVERRIDE=$(colima ls -j | jq -r '.address') export
DOCKER_HOST="unix://${HOME}/.colima/default/docker.sock"Merk at det er viktig at colima startes med --network-address flagget, da det
er trengs for å hente ut adressen til TESTCONTAINERS_HOST_OVERRIDE.
Hvis du bruker noe annet, eksempelvis Podman eller Rancher, se dokumentasjonen til testcontainers; https://java.testcontainers.org/supported_docker_environment/
- For å sikre kodekvalitet, kjør lint-verktøyet:
pnpm run lint - For å automatisk fikse lintingproblemer:
pnpm run lint-fix - For å formatere kodebasen med Prettier:
pnpm run format. Dette vil formatere alle filer iapp-mappen. - For å kjøre typesjekk (inkludert
react-routertypegen):pnpm run typecheck. - For å kjøre frontendtestene (Vitest):
pnpm test. - For å lage en produksjonsklar versjon av prosjektet:
pnpm run build. Dette vil kompilere TypeScript-filene og pakke applikasjonen ved hjelp av Vite. Output vil bli plassert idist-mappen, klar for utrulling. - Før du ruller ut, kan du forhåndsvise produksjonsbygget lokalt:
pnpm run preview. Denne kommandoen vil servere produksjonsbygget på en lokal server, slik at du kan verifisere at alt fungerer som forventet. - Husky er konfigurert til å kjøre visse skript før commits blir fullført.
Dette inkluderer linting og TypeScript-sjekker for å sikre kodekvalitet og
konsistens. Disse kjøres via
lint-stagedpå stage'ede filer. - Dette prosjektet bruker TanStack Query (tidligere kjent som React Query) for å håndtere nettverksforespørsler og servertilstand. TanStack Query forenkler datainnhenting, caching, synkronisering og oppdatering av servertilstand i React-applikasjoner. Ved å bruke dette kraftige biblioteket sikrer prosjektet effektiv og pålitelig datahåndtering, minimerer unødvendige nettverksforespørsler, og gir en optimal brukeropplevelse med automatiske bakgrunnsoppdateringer og feilhåndtering. Se dokumentasjonen for TanStack Query her: https://tanstack.com/query/latest