Et open-source vertkøy for administrasjon og monitorering 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 for øyeblikket 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.
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 cask install docker
Alternativt kan du bruke Postgres desktop til å kjøre en database lokalt. Hvis du har gjort dette kan du hoppe til Steg 6.
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 bruker 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!
Kjør denne kommandoen i backend/
for å migrere databaseskjemaer som ligger i resources/db.migration
:
./gradlew flywayMigrate
NB: Forutsetter at du har satt miljøvariablene DB_URL, DB_NAME og DB_PASSWORD.
Eventuelt, om du har flyway cli innstallert:
flyway -user=postgres -password=pwd -url=jdbc:postgresql://localhost:5432/regelrett -locations=src/main/resources migrate
- Filen curl.txt inneholder curl kommandoer for å utføre spørringer mot Airtable
- 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:
<Version>__<Description>.sql
For eksempel: V1.1__initial.sql
- Databasen heter "regelrett", og må foreløpig 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
- Gå inn på
Run -> Edit configurations
- Trykk på + for å legge til ny konfigurasjon og velg KTOR
- Sett
no.bekk.ApplicationKt
som main class
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 er
schema_sikkerhetskontroller:
airtable_access_token: <access_token>
schema_driftskontinuitet:
airtable_access_token: <samme_som_over>
oauth:
tenant_id: <tenant_id>
client_id: <client_id>
client_secret: <client_secret>
Som miljøvariabler
RR_SCHEMA_SIKKERHETSKONTROLLER_AIRTABLE_ACCESS_TOKEN=<ACCESS_TOKEN>
RR_SCHEMA_DRIFTSKONTINUITET_AIRTABLE_ACCESS_TOKEN=<SAMME_SOM_OVER>
RR_OAUTH_TENANT_ID=<TENANT_ID>
RR_OAUTH_CLIENT_ID=<CLIENT_ID>
RR_OAUTH_CLIENT_SECRET=<CLIENT_SECRET>
For å få tilgang til hemmelighetene, spør noen på teamet om å gi deg tilgang til 1Password vaulten.
AIRTABLE_ACCESS_TOKEN
er lagret under AirTable
i vaulten, og CLIENT_ID
, CLIENT_SECRET
og TENANT_ID
er lagret under EntraId
.
Du kan sette miljøvariablene i IntelliJ ved å gå inn på Run -> Edit configurations
.
Du skal nå kunne kjøre backend, gå inn på http://localhost:8080
For mer dokumentasjon om build and deployment, kodestruktur og datamodell se /docs mappen.
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/
Frontend er bygget med React, Vite og TypeScript.
Før du begynner, sørg for at du har følgende installert:
Gå inn i frontend mappen:
cd <repository-directory>/frontend/beCompliant
Installer avhengigheter ved å kjøre:
npm install
Forbered Husky (hvis aktuelt) ved å kjøre:
npm run prepare
Start utviklingsserveren ved å kjøre:
npm run dev
Dette vil starte Vite utviklingsserveren, og du kan se appen på http://localhost:3000.
- For å sikre kodekvalitet, kjør lint-verktøyet:
npm run lint
- For å automatisk fikse lintingproblemer:
npm run lint-fix
- For å formatere kodebasen med Prettier:
npm run format
. Dette vil formatere alle filer i src-mappen - For å lage en produksjonsklar versjon av prosjektet:
npm run build
. Dette vil kompilere TypeScript-filene og pakke applikasjonen ved hjelp av Vite. Output vil bli plassert i dist-mappen, klar for utrulling. - Før du ruller ut, kan du forhåndsvise produksjonsbygget lokalt:
npm 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. For å manuelt utløse disse sjekkene, kan du kjøre:
npm run pre-commit
. Dette vil kjøre lint-staged for å sjekke de stage’ede filene og sikre at TypeScript-filene er feilfrie før de blir committet. - 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
- For mer dokumentasjon om Build and deployment