Skip to content

Conversation

ktmidtha
Copy link
Member

Hva dette gjør

Gjør appen klar for andre underveisinnlevering: backend og database kjører på gruppas VM, og klienten snakker med backend gjennom Apache. Samtidig er koden ryddet og delt i mer oversiktlige filer.

Publisert versjon: http://it2810-34.idi.ntnu.no/project2/

Status mot kravene

Krav Status
Kjørende database og backend på VM Backend kjører som systemd-tjeneste på port 3001, og databasen nås via socket
Klienten støtter interaksjon Søk, filtre, sortering, paginering, kart, fjellområder, innlogging og profil
Samspill klient–backend Apache sender /project2/graphql til backend. Testet på VM-en
Oppsett, installering og kjøring README («Kom i gang»), docs/oppsett-vm.md og deploy/

Endringer

Commitene er delt etter tema, så les gjerne commit for commit i denne rekkefølgen:

  1. VM-oppsett (feat: gjør appen klar for publisering på VM-en): base /project2/ i bygget, graphql() bruker BASE_URL, og deploy/ med Apache- og systemd-eksempler.
  2. Backend (refactor: samle transaksjoner og validering i backend): withTransaction() og server/lib/validation.ts erstatter kopiert kode.
  3. Frontend (refactor: del opp Profile, Fjellomrade og RouteBuilder i naturlige filer): oppdeling i pages/, features/, components/ og lib/, med useDebouncedValue og felles søketyper.
  4. Tilgjengelighet (fix: legg til hopp-lenke og main-landemerke på alle sider).
  5. Kodekvalitet: Prettier og lint er satt opp (egen style:-commit som bare formaterer).
  6. Dokumentasjon og AGENTS.md med retningslinjer for KI-verktøy.

Prettier-commiten (style:) berører nesten alle filer og er bare formatering. Hopp over den når du leser.

Slik tester du

  1. Følg «Kom i gang» i README, eller åpne den publiserte versjonen over (NTNU-nett eller VPN).
  2. Sjekk at forsiden viser turforslag, at Utforsk viser turer og kart, og at Fjellområder åpner kart med punkter.
  3. Prøv å logge inn med feil passord: du skal få «Feil brukernavn eller passord.».

Kontrollert lokalt: npm run lint, npx tsc -b, npm run build og npm run format:check går gjennom. Alle sider er testet med Playwright, også under /project2/.

Kjente begrensninger

  • Passordtilbakestilling virker ikke på VM-en, fordi ingen mailtjeneste er satt opp.
  • RouteBuilder (rutebygger) er ikke koblet inn i appen ennå.
  • Det er ingen automatiserte tester ennå, og ingen state management-bibliotek. Begge kommer i senere innleveringer.
  • VM-en kjører en kopi laget med rsync, ikke kode hentet fra git. Det rettes etter merge.

Til den som godkjenner

Dette er en stor PR, siden den både flytter filer og formaterer koden. Det viktigste å se på er vite.config.ts, src/lib/graphql.ts, deploy/, docs/oppsett-vm.md og server/lib/validation.ts. Resten er flytting og opprydding uten endret oppførsel.

karstenmidthaug added 14 commits October 16, 2026 10:08
…profilen

- Profile.tsx bruker felles graphql() i stedet for egen fetch, så kall alltid får timeout
- Ny formatKm i format.ts erstatter inline km-formatering
- Ny checkSession i graphql.ts erstatter tre kopier av sesjonssjekken
- Home bruker lengthText fra routeTypes, og TOKEN_KEY brukes i stedet for hardkodet nøkkel
- index.ts er delt i graphql/ (routes, auth, profile, builder), lib/, services/ og db/
- authed() erstatter requireUser(token) som var gjentatt i 15 resolvere
- setPassword() brukes både ved tilbakestilling og bytte av passord
- Sidene ligger i pages/, større deler i features/, delte komponenter i components/
- Hjelpefiler uten visning (graphql, format, gpx m.fl.) ligger i lib/
- Prosjektplanen er flyttet til docs/, og README beskriver mappestrukturen
- withTransaction() erstatter BEGIN/COMMIT/ROLLBACK som var skrevet ut i 7 steder
- server/lib/validation.ts samler kontroller av rute-id, passord og kartutsnitt
- findRouteById() erstatter to like oppslag, og overflødig e-postvalidering er fjernet
- Fjernet DATA_SCHEMA som ble lest, men aldri brukt
- Profile er delt i AuthGate, OverviewTab, SettingsTab, TripsTab og profileApi
- Fjellomrade er delt i Overview, AreaView, AreaMap, data og mapData
- RouteBuilder er delt i useBuilderMap, SourceSearch, RoundTripSuggester, PointsEditor, MyRoutes og builderApi
- useDebouncedValue og useAuthenticated erstatter kopier av debounce og sesjonssjekk
- Forsiden og Utforsk deler rutetyper og søkespørringer i lib/routeTypes og lib/routeSearch
- Ny SkipLink-komponent brukes på forsiden, Utforsk, innloggingen og fjellområdene
- Fjellområdesiden har fått <main>, som den manglet
- Innloggingssiden har fått id="main" så hopp-lenken har et mål
- README, arkitektur og server/README beskriver de nye mappene og filene
- AGENTS.md sier at filer skal deles der det er naturlig, ikke etter linjeantall
- vite.config.ts bygger under /project2/, og preview sender /project2/graphql til backend
- graphql() kaller BASE_URL + graphql, så kallene treffer Apache-proxyen på VM-en
- deploy/ har eksempler på Apache-konfigurasjon og systemd-tjeneste for backend
- docs/oppsett-vm.md beskriver oppsettet steg for steg, og README lenker til det
- engines i package.json og .nvmrc med Node 24, så feil versjon gir en tydelig feil
@ktmidtha ktmidtha added documentation Improvements or additions to documentation enhancement New feature or request labels Oct 16, 2026
@ktmidtha ktmidtha added this to the Innlevering 2 milestone Oct 16, 2026
@ktmidtha ktmidtha self-assigned this Oct 16, 2026
This was linked to issues Oct 16, 2026
@ktmidtha ktmidtha marked this pull request as ready for review October 16, 2026 08:49
@ktmidtha ktmidtha requested a review from a team as a code owner October 16, 2026 08:49
Copy link
Member

@martbirk martbirk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kjørt lokalt: npm run lint, npm run format:check og npm run build er grønne.

Testet manuelt: passordbytte, og at forsiden, Utforsk, Fjellområder og profilen laster og fungerer. Både localhost og den publiserte løsningen.

Sjekket spesielt:

  • at sortering, filtre og bbox i routes er med etter oppdelingen av backend
  • at withTransaction() håndterer COMMIT, ROLLBACK og frigjøring av tilkoblingen riktig
  • at Prettier-commiten bare formaterer: koden før og etter er lik når formateringen trekkes fra
  • at PORT=3001 er dokumentert i .env.example og docs/oppsett-vm.md, siden Apache-oppsettet er avhengig av det

Innspill (ikke blokkerende):

  • docs/bruk-av-ki.md: tabellen mangler commitene etter d6013dd (143c422, b4b3590, 382d9dd, c23477b, 5963d2a, 8ba6c2b, 33da77f, c874c66).
  • src/lib/graphql.ts: kommentaren til checkSession nevner Fjellomrade.tsx og Profile.tsx, men den brukes nå i App.tsx, AuthGate.tsx og useAuthenticated.ts.
  • Beskrivelsen sier at alle sider er testet med Playwright, men vi har ikke lagt inn Playwright-tester i repoet. Kan testene lagres, for eksempel i e2e/?

Godkjent ✅

@martbirk martbirk merged commit 315fb9c into main Oct 16, 2026
Sign in to join this conversation on GitHub.
Labels
documentation Improvements or additions to documentation enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Sette opp VM Gå over koder og litt dokumentasjon
2 participants