foamking/OPSÆTNING.md
mikl0s 50c2664078 docs: add setup guides in English and Danish
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 21:58:44 +00:00

4.1 KiB

FoamKing Opsætningsguide

Komplet vejledning til at sætte FoamKing prisberegneren i drift.


1. Forudsætninger

  • Node.js 18 eller nyere (20 LTS anbefales)
  • npm (følger med Node.js)

2. Installation

npm install

3. Konfiguration af miljøvariabler

Kopier eksempelfilen og udfyld med jeres egne værdier:

cp .env.example .env.local

Åbn .env.local i en teksteditor og konfigurer hver sektion som beskrevet nedenfor.

Admin-login (Påkrævet)

ADMIN_EMAIL=admin@example.com
ADMIN_PASSWORD=changeme

Disse oplysninger bruges til at logge ind på /intern/login. Skift begge værdier inden I går i produktion.

E-mail — Office 365 SMTP (Påkrævet)

SMTP_HOST=smtp.office365.com
SMTP_PORT=587
SMTP_USER=tilbud@foamking.dk
SMTP_PASS=your_password_here
EMAIL_FROM_NAME=Foam King Prisberegner
EMAIL_TO=info@foamking.dk

Applikationen sender tilbudsforespørgsler via Office 365. For at det virker, skal SMTP AUTH være aktiveret på afsenderpostkassen:

  1. Gå til Exchange Admin Centeradmin.exchange.microsoft.com
  2. Gå til RecipientsMailboxes
  3. Vælg postkassen tilbud@foamking.dk
  4. Klik på Manage email apps settings (eller Mail flow → Email apps)
  5. Aktivér Authenticated SMTP (SMTP AUTH)
  6. Gem

Bemærk: Hvis jeres organisation bruger Security Defaults eller Conditional Access-politikker, der blokerer legacy-godkendelse, kan det være nødvendigt at oprette en undtagelse for denne postkasse. Hvis MFA er aktiveret på kontoen, skal I bruge et App Password i stedet for den almindelige adgangskode.

Base-URL (Påkrævet)

NEXT_PUBLIC_BASE_URL=https://beregner.foamking.dk

Bruges når der genereres links i udgående e-mails (f.eks. links til tilbudssider).

Afstandsberegning (Valgfrit)

OPENROUTE_API_KEY=your_api_key_here

Uden denne nøgle bruger applikationen en indbygget afstandstabel baseret på postnumre, hvilket fungerer fint i de fleste tilfælde. Ønsker I mere præcise køreafstande, kan I oprette en gratis API-nøgle på openrouteservice.org (2.000 forespørgsler pr. dag).

4. Opret database

npm run setup

Dette opretter SQLite-databasen og de nødvendige tabeller.

5. Byg og start

npm run build
npm start

Applikationen starter på port 3001.

6. Ruteoversigt

Rute Beskrivelse
/ Offentlig prisberegner
/tilbud/[id] Offentlig tilbudsvisning (link fra e-mail)
/intern Admin-dashboard — tilbudsstyring
/intern/historik Admin — tilbudshistorik
/intern/beregner Admin — detaljeret beregner med prisopbygning
/intern/login Admin-loginside

7. Tilpasset autentificering

Standardopsætningen bruger miljøvariablerne ADMIN_EMAIL og ADMIN_PASSWORD med sessioner i hukommelsen. Det er enkelt og tilstrækkeligt til en setup med en enkelt administrator.

Vil I integrere jeres egen autentificering (JWT, OAuth, SSO), skal I redigere lib/auth.ts. Hele applikationen bruger kun tre funktioner:

  • checkAuth() — tjekker om den aktuelle forespørgsel er autentificeret
  • login(email, password) — autentificerer en bruger og opretter en session
  • logout() — afslutter den aktuelle session

Middlewaren i middleware.ts tjekker for en session-cookie på alle /intern/*-ruter og omdirigerer ikke-autentificerede besøgende til /intern/login. Opdater den, hvis I skifter til en anden mekanisme (f.eks. en JWT i en Authorization-header).

8. Udvikling

npm run dev        # Start udviklingsserver (port 3001)
npm run build      # Produktionsbuild
npm start          # Start produktionsserver
npm run lint       # Kør ESLint
npm run setup      # Opret / nulstil database