Denne guiden tar deg igjennom å installere og kjøre både backend og frontend dersom du følger den fra start til slutt.
Backend
Forutsetninger
Det er to måter du kan kjøre backenden vår på;
- Den desidert enkleste måten å kjøre APIen på er via Docker og Docker Compose, dette er fordi Docker håndterer databasen for deg:
- NB! På Windows og MacOS får man både Docker og Docker Compose når man innstallerer Docker Desktop. På Linux er du nødt til å innstallere begge separat.
- Dersom du ønsker å kjøre lokalt er du nødt til å innstallere og sette opp følgende verktøy;
- Java Development Kit for å kompilere og kjøre
- Apache Maven for å håndtere avhengigheter og bygge
- En PostgreSQL-database for persistering av data
Installasjon
Kloning av repoet
# Via SSH
git clone git@gitlab.stud.idi.ntnu.no:idatt2106_2022_02/boco-backend.git
# Via HTTPS
git clone https://gitlab.stud.idi.ntnu.no/idatt2106_2022_02/boco-backend.git
Naviger til boco-backend
-mappen
cd boco-backend/
Miljøvariabler
Lag en .env
-fil i mapperoten til å holde miljøvariablene dine, og lim inn følgende linjer:
POSTGRES_DB=bocodb
POSTGRES_IP=localhost
POSTGRES_PORT=5432
POSTGRES_USER=boco
POSTGRES_PASS=superSecureMegaAwesomePassword
SERVER_PORT=3000
Her er du nødt til å konfigurere for ditt system, og da er det enkelte ting du er nødt til å passe på:
- Passordet må aldri lastes opp i git, og
.env
-filen er derfor lagt inn i.gitignore
. - Ikke bruk standardpassordet! Generer helst et nytt som er langt og trygt.
- Ved førstegangskjøring blir databasen opprettet med verdiene du skriver inn her. Dersom du ønsker å forandre disse senere kan det hende du må slette databasen. Dette kan du gjøre via kommandoen:
docker volume rm boco-backend_boco-data
- Det er viktig at
SERVER_PORT
samsvarer med frontend, slik at backend og frontend kan kommunisere.
Navn | Forklaring |
---|---|
POSTGRES_DB |
Navnet på databasetabellen du vil bruke. |
POSTGRES_IP |
IP-addressen der databasen ligger. Dersom du bruker Docker er denne ignorert. |
POSTGRES_PORT |
Porten databasen lytter på både internt i Docker-tjenestene og utad i systemet. |
POSTGRES_USER |
Brukernavnet til databasebrukeren. |
POSTGRES_PASS |
Passordet til databasebrukeren. |
SERVER_PORT |
Hvilken port du ønsker at API-en skal kjøre på, husk å samsvare med frontend! |
Konfigurasjon for å kjøre lokalt
Dersom du ønsker å kjøre lokalt er du nødt til å fjerne kommenteringen av PostgreSQL konfigurasjonen i src/main/resources/application.properties
, slik:
#PostgreSQL config
spring.datasource.url= jdbc:postgresql://${POSTGRES_IP}:${POSTGRES_PORT}/${POSTGRES_DB}
spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.PostgreSQLDialect
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation= true
spring.datasource.password=${POSTGRES_PASS}
spring.datasource.username=${POSTGRES_USER}
Kjøring
Dersom du har valgt å bruke Docker kan du nå bare skrive følgende kommando får å spinne opp en databasecontainer og en API-container:
docker-compose up
For å stoppe containerene kan du skrive
docker-compose down
Dersom du gjør kodeendringer er du nødt til å bygge containerne på nytt etter at du har stoppet den gamle instansen:
docker-compose up --build
Kjører du lokalt kan du starte applikasjonen ved å skrive
mvn spring-boot:run
Tester
Docker kjører automatisk tester hver gang den bygger på nytt med --build
-flagget. Den vil stoppe byggeprosessen dersom en feil oppstår. Dersom du ønsker å kjøre tester manuelt kan du skrive
mvn clean test
Frontend
Forutsetninger
For å kjøre frontenden vår trenger du bare å installere Node.
Installasjon
Klon repoet
# Via SSH
git clone git@gitlab.stud.idi.ntnu.no:idatt2106_2022_02/boco-frontend.git
# Via HTTPS
git clone https://gitlab.stud.idi.ntnu.no/idatt2106_2022_02/boco-frontend.git
Naviger til boco-frontend
-mappen
cd boco-frontend/
Miljøvariabler
Lag en .env
-fil i rotmappen til prosjektet, og lim deretter inn følgende linje
VUE_APP_BASEURL=http://localhost:3000/api/
Du må endre denne URLen slik at den stemmer overrens med den tidligere konfigurasjonen din.
Installer avhengigheter
npm install
Kjøring
For å bygge og kjøre med hot-reloads (for utvikling) kan du skrive
npm run serve
For å kompilere en produksjonsklar frontend kan du skrive
npm run build
Denne versjonen er optimalisert og gjort så liten som mulig (uten utviklingsavhengigheter)
Testing
For å kjøre testene våre kan du skrive
npm run test:unit
Denne kommandoen vil kjøre alle testene og generere en testdekningsgrads-rapport.
NB! I skrivende stund er det en bug med Vue og Jest som gjør at rapporten mangler en del tester/filer. Dette er på grunn av at Jest hopper over filer med importeringer i ES6
-stil.