Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 28 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Forsiden viser en hero-karusell med trending filmer, og seksjoner for populære
2. [vm](#vm)
3. [api](#api)
4. [testing](#testing)
5. [prosjetkstruktur](#prosjektstruktur-komponenter-hooks-layout-types)
5. [prosjektstruktur](#prosjektstruktur-komponenter-hooks-layout-types)
6. [Valg?](#vet-ikke-hvor-dette-bør-stå)
7. [Bruk av Ki](#bruk-av-ki)

Expand Down Expand Up @@ -57,8 +57,22 @@ Prosjektet kan bygges med kommandoen `pnpm run build`. Dette vil bygge prosjekte

Prosjektet kan testes med kommandoen `pnpm test:run`.

#### Linting og kodekvalitet

Fra prosjektbeskrivelsen er det krav om "ingen feilmeldinger eller advarsler ved linting", og at koden skal formatteres med `prettier`.

Dette kan sjekkes med følgende kommandoer:
```bash
# sjekk linting
pnpm lint

# sjekk formatting, og evt. formatter koden
pnpm format:check
pnpm format
```

> [!NOTE]
> Prosjektet forventer en api-token i en lokal `.env`-fil. Se _API_-seksjonen under.
> Prosjektet forventer en api-token i en lokal `.env.local`-fil. Se _API_-seksjonen under.
## vm

Expand Down Expand Up @@ -120,6 +134,13 @@ Når man har lagt inn denne skal prosjektet kunne kjøre lokalt, og api-kall ska
> API token har kun lese-rettigheter, men bør fortsatt ikke være offentlig.
> Filen `.env.local` er derfor lagt til i `.gitignore`.
> [!NOTE]
> Vi vurderte å sette opp en reverse-proxy på serveren for å skjule api-token helt, men dette
> ble unødvendig komplekst for prosjektets omfang. Fordi Vite bygger inn alle 'Vite_'-prefikser inn i
> prosjektfilene vli api-tokenet teknisk sett være synlig for alle som inspiserer api-kallene.
> Vi anser risikoen som lav i dette tilfellet ettersom serveren kjører på en VM på ntnu sitt låste nettverk
> og siden api-token kun gir leser-tilgang. Verste tilfelle ved en lekkasje er at vi må rotere api-token.
## testing

I dette prosjektet bruker vi _Vitest_ med jsdom og React Testing Library. Disse kjøres med:
Expand Down Expand Up @@ -220,7 +241,6 @@ TreningPreview, SortfilterBar og MovieDetails har ingen egne tester som det stå
│   ├── MovieDetails.tsx
│   ├── MovieList.css
│   ├── MovieList.tsx
│   ├── PersonList.tsx
│   ├── SearchField.css
│   ├── SearchField.tsx
│   ├── Section.css
Expand All @@ -237,7 +257,6 @@ TreningPreview, SortfilterBar og MovieDetails har ingen egne tester som det stå
│   ├── useMediaQuery.ts
│   ├── useMovieCredits.ts
│   ├── useMovies.ts
│   ├── usePeople.ts
│   └── useSessionStorage.ts
├── layout
│   ├── FavoritesLayout.tsx
Expand All @@ -248,7 +267,6 @@ TreningPreview, SortfilterBar og MovieDetails har ingen egne tester som det stå
├── types
│   └── tmdb.ts
└── utils
├── sortAndFilterMovies.test.ts
└── sortAndFilterMovies.ts
```

Expand Down Expand Up @@ -344,7 +362,7 @@ Favorittsiden. Får `favoriteIds` inn og henter filmene på nytt via

En ren funksjon uten side-effekter som tar inn en liste med filmer, sorteringsvalg og minimumsvurdering, og returnerer en ny, filtrert og sortert liste. Fordi funksjonen er ren (samme input gir alltid samme output, og den endrer ikke noe utenfor seg selv), er den enkel å enhetsteste isolert med Vitest, uten å måtte mocke React eller komponenter.

# Vet ikke hvor dette bør stå
# Valg vi har gjordt i prosessen

## Sortering og filtrering

Expand Down Expand Up @@ -393,6 +411,10 @@ I **Detaljvisningen** blir fokus flyttet inn i dialogen ved åpning, og Escape l
Fokus flyttes inn i dialogen ved åpning og tilbake til kortet den ble åpnet fra ved lukking, og en fokusfelle holder Tab inne i dialogen så lenge den er åpen. Escape lukker, slik at den kan forlates uten mus. `body.modal-open` låser scroll bak overlayet.
Ellers brukes semantiske elementer gjennomgående — `<main>` `<article>` per filmkort og `<h2>`/`<h3>` i riktig rekkefølge — slik at overskriftsnavigasjon i en skjermleser gir en meningsfull struktur.

## Git-arbeidsflyt
Gjennom hele prosjektet har vi forsøkt å bruke git i henhold til anbefalingene som ligger på canvas. Vi har i hovedsak opprettet en ny lokal branch hver gang vi skal jobbe, og så push-et endringene opp til ny branch på github, og sammen gått gjennom endringer og godkjent pull-request.

Det var mye usikkerhet i starten hvordan vi var ment å bruke git, bl.a. angående `issues`. Dette begynte vi å benytte litt senere i prosjektet for å holde oversikt over hvilke oppgaver som fortsatt måtte gjøres.

## Kjente begrensninger

Expand Down
61 changes: 0 additions & 61 deletions info.txt

This file was deleted.

8 changes: 8 additions & 0 deletions src/App.css
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
padding-left: 16px;
padding-right: 16px;
gap: 16px;
flex: 1;
}

.page > main {
Expand All @@ -34,3 +35,10 @@
display: none; /* en tom kolonne er bortkastet plass på mobil */
}
}

.footer {
border-top: 1px solid var(--border);
padding: 16px;
margin-top: auto;
font-size: 0.75em;
}
14 changes: 14 additions & 0 deletions src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ function App() {
);

return (
<>
<div className="page">
<Sidebar
onSearch={setQuery}
Expand Down Expand Up @@ -109,7 +110,20 @@ function App() {

<div className="page-spacer" aria-hidden="true"></div>
</div>

<footer className="footer">
Filmdata hentet fra{' '}
<a href="https://www.themoviedb.org/" target="_blank" rel="noreferrer">
TMDB
</a>
</footer>
</>



);

}


export default App;