Kildekode - aTrueYety/idatt2106-2025-09-backend GitHub Wiki
Kildekode
Denne siden dokumenterer kildekoden for systemet og beskriver hvordan prosjektet er strukturert i henhold til god praksis og kravene i prosjektet. Backend koden er skrevet i Java og følger Google Checkstyle og Javadoc-konvensjoner. Alle tjenester er implementert med REST og WebSocket. Frontend er skrevet i React med Next.js.
Backend
Prosjektet er strukturert i et lagdelt arkitektur-mønster med følgende pakker:
config
– inneholder Spring-konfigurasjoner (f.eks. sikkerhet, WebSocket, CORS).controller
– håndterer HTTP-forespørsler og eksponerer REST-endepunkter.exception
– tilpassede exception-klasser og håndtering.model
:base
– database-entiteter.request
– DTO-er for innkommende forespørsler.response
– DTO-er for svar.update
– DTO-er for oppdateringsforespørsler.
repository
– grensesnitt for datatilgang med JDBC.service
– forretningslogikk og kommunikasjon med repository.mapper
– mapper mellom modeller og DTO-er, manuelt implementert.
websocket
– tjenester og konfigurasjon for STOMP/WebSocket.util
– hjelpeklasser, f.eks. inndata validering.
Eksempel: FoodType-funksjonalitet
Controller:
FoodTypeController.java
håndterer REST-endepunkter på/api/food-types
, inkludert oppretting, oppdatering, sletting og søk.Service:
FoodTypeService.java
inneholder forretningslogikk og datatilgang viaFoodTypeRepository
.Mapper:
FoodMapper.java
ogFoodTypeMapper.java
mapper mellom entiteter og DTO-er.DTO-er:
FoodTypeRequest.java
– brukes for opprettelse og oppdatering.FoodTypeResponse.java
– brukes som svarobjekt til klient.Repository:
Bruker JDBC og håndterer SQL direkte.
Logging
Backenden bruker SLF4J
for logging av hendelser. Logger er konfigurert til å skrive til konsollen og kan endres i application.properties
. Det er også mulig å bruke Logstash
for mer avansert logging.
Sikkerhet
Backend bruker JWT-token for autentisering og autorisering. Token genereres ved innlogging og kontrolleres med hver forespørsel. Spring Security håndterer sikkerhet og validering av token. JWT-token valideres i JwtService
, med støtte for claims som isAdmin
og isSuperAdmin
for rolle håndtering.
Kodekonvensjoner
- Google Java Style Guide
- Javadoc på alle klasser og metoder.
- Lombok brukes for å redusere boilerplate i modellklasser.
- OpenAPI annotasjoner i controllerne.
Tester
Backend følger teststruktur i src/test/java
Frontend
Frontend er ikke inkludert i dette repoet. Følgende struktur forventes:
actions
- API-kallapp
- Sidercomponents
– Gjenbrukbare komponentertypes
– Type-definisjonerutil
– Hjelpefunksjoner
Kodekonvensjoner
- ESLint og Prettier for linting og automatisk formatering.
- TypeScript for type-sjekking og bedre utvikleropplevelse.
Oppsummering
Kildekoden er strukturert for skalerbarhet, med tydelig separasjon mellom ansvar. Backenden følger moderne praksis for RESTful design og sikker WebSocket-kommunikasjon med JWT-autentisering. Frontend er bygget med React og Next.js, med fokus på komponentbasert utvikling og gjenbrukbarhet. Koden er godt dokumentert og følger etablerte konvensjoner for både Java og JavaScript/TypeScript.