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:
- Gå til Exchange Admin Center — admin.exchange.microsoft.com
- Gå til Recipients → Mailboxes
- Vælg postkassen tilbud@foamking.dk
- Klik på Manage email apps settings (eller Mail flow → Email apps)
- Aktivér Authenticated SMTP (SMTP AUTH)
- 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 autentificeretlogin(email, password)— autentificerer en bruger og opretter en sessionlogout()— 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