diff --git a/backend/README.md b/backend/README.md index 96d9359..f619cc6 100644 --- a/backend/README.md +++ b/backend/README.md @@ -8,20 +8,96 @@ GraphQL-server (Apollo Server) med egen PostgreSQL-database. ## Kom i gang -Krever Node 24.6+ og PostgreSQL. +> **Vil du bare bruke appen?** Gå til http://it2810-16.idi.ntnu.no/project2. Du trenger ikke installere noe. +> +> Guiden under er for å kjøre backenden på din egen maskin. + +Guiden er for macOS. Se [Windows](#windows) for forskjellene der. + +### 1. Installer verktøyene (bare første gang) + +Du trenger **Node.js 24.6 eller nyere** (kjører koden) og **PostgreSQL** (databasen). Enklest er å installere dem med [Homebrew](https://brew.sh): ```bash -cd backend +brew install node postgresql@17 +brew services start postgresql@17 # starter databasen i bakgrunnen, også etter omstart +``` + +Sjekk at det virker: + +```bash +node --version # skal være v24.6 eller nyere +pg_isready # skal si "accepting connections" +``` + +### 2. Hent koden og installer avhengigheter + +```bash +git clone https://git.ntnu.no/IT2810-H26/T16-Project-2.git +cd T16-Project-2/backend npm install -cp .env.example .env # fyll inn DATABASE_URL og TMDB_READ_TOKEN -createdb framerate # lager en tom database (første gang) -npm run db:migrate # lager tabellene -npm run import:movies # henter ~5000 filmer fra TMDB (under ett minutt) -npm run dev # starter serveren på http://localhost:3001 +``` + +### 3. Lag innstillingsfilen + +```bash +cp .env.example .env +``` + +Åpne `.env` og lim inn en TMDB-nøkkel etter `TMDB_READ_TOKEN=`. Lag din egen gratis nøkkel på [TMDB](https://www.themoviedb.org/settings/api) og bruk «API Read Access Token» (den lange). (Gruppemedlemmer bruker gruppas nøkkel, som deles privat og aldri på git.) Resten av verdiene fungerer som de er. `.env` er ignorert av git og skal aldri committes. + +#### Om TMDB-nøkkelen + +Nøkkelen trengs til to ting: + +- **Importen** (`npm run import:movies`) henter filmene til databasen. +- **Serveren** henter filmdetaljer (beskrivelse, regissør, spilletid, aldersgrense) når noen åpner en film. + +Uten nøkkel stopper importen med `TMDB_READ_TOKEN mangler`, databasen blir tom og alle søk gir 0 treff. Detaljsiden virker heller ikke. + +| Hvem | Trenger nøkkel? | +| ------------------------------- | ----------------------------------------------------------------------- | +| Brukere av nettsiden | Nei, de bruker bare lenken. Backenden kjører allerede på VM-en. | +| Gruppemedlemmer | Ja, gruppas felles nøkkel. Deles privat i gruppa, aldri på git. | +| Andre som kjører backenden selv | Ja, sin egen gratis nøkkel fra TMDB | +| Faglærer | Nøkkelen ligger i `.env` på VM-en og kan leses der med sudo-rettigheter | + +### 4. Lag databasen og fyll den med filmer + +```bash +createdb framerate # lager en tom database +npm run db:migrate # lager tabellene +npm run import:movies # henter ~5000 filmer fra TMDB +``` + +### 5. Start serveren + +```bash +npm run dev # starter serveren på http://localhost:3001 ``` Åpne http://localhost:3001 i nettleseren for å teste spørringer i Apollo Sandbox. +**Neste gang** holder det med `npm run dev` i `backend/`. Databasen og filmene ligger der fortsatt. + +### Vanlige feil + +| Feilmelding | Løsning | +| -------------------------------------- | ----------------------------------------------------------------------- | +| `DATABASE_URL mangler` | `.env` finnes ikke. Kjør `cp .env.example .env` (steg 3) | +| `TMDB_READ_TOKEN mangler` | Nøkkelen er ikke lagt inn i `.env` | +| `ECONNREFUSED` / `connection refused` | PostgreSQL kjører ikke. Kjør `brew services start postgresql@17` | +| `database "framerate" does not exist` | Kjør `createdb framerate` | +| Feil om `--env-file` eller `.ts`-filer | For gammel Node. Sjekk `node --version` | +| `extension "pg_trgm" is not available` | PostgreSQL-installasjonen mangler tillegg. Bruk Homebrew-versjonen over | + +### Windows + +- Installer Node fra [nodejs.org](https://nodejs.org) og PostgreSQL fra [postgresql.org](https://www.postgresql.org/download/windows/). Installasjonen ber deg velge et passord for brukeren `postgres`. +- Bruk `copy .env.example .env` i stedet for `cp`. +- Sett brukernavn og passord i `.env`: `DATABASE_URL=postgres://postgres:DITT_PASSORD@localhost:5432/framerate` +- Lag databasen med `createdb -U postgres framerate` (eller i pgAdmin). + ## Skript | Kommando | Hva den gjør | @@ -36,7 +112,14 @@ npm run dev # starter serveren på http://localhost:3001 ```graphql query { - searchMovies(search: "star", genreIds: [878], yearFrom: 1970, sort: RATING_DESC, limit: 20, offset: 0) { + searchMovies( + search: "star" + genreIds: [878] + yearFrom: 1970 + sort: RATING_DESC + limit: 20 + offset: 0 + ) { totalCount movies { id @@ -44,13 +127,16 @@ query { releaseYear posterPath averageRating - genres { name } + genres { + name + } } } movie(id: 11) { title averageRating - details { # hentes fra TMDB, bruk bare på detaljsiden + details { + # hentes fra TMDB, bruk bare på detaljsiden overview director runtime diff --git a/docs/AI_Deklarasjon/AI_Deklarasjon.md b/docs/AI_Deklarasjon/AI_Deklarasjon.md index 90dbab4..a48d097 100644 --- a/docs/AI_Deklarasjon/AI_Deklarasjon.md +++ b/docs/AI_Deklarasjon/AI_Deklarasjon.md @@ -45,3 +45,20 @@ Her dokumenterer vi bruk av KI-verktøy i prosjektet, med én del per pull reque - Lage kamera logoen - Forslag til hvordan nettsiden kan se ut - Viste en lettere måte å holde koden organisert som f.eks. med layout mappe + + +## PR #23 – Oppsettguide for backend (`docs/backend-setup-guide`) + +**Verktøy:** Claude (Anthropic) via Claude Code +**Brukt av:** Akhil + +### Hva KI ble brukt til + +- Skrive steg-for-steg guiden i `backend/README.md`: installasjon, `.env`, database, import og oppstart +- Tabell med vanlige feil og en egen del for Windows +- Forklaring av hvem som trenger TMDB-nøkkel + +### Hva vi har gjort selv + +- Bestemt hva guiden skal inneholde og hvem den er for (utviklere, ikke vanlige brukere), og at gruppas nøkkel ikke skal deles +- Testet stegene på macOS