123 lines
4.1 KiB
Markdown
123 lines
4.1 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
## 3. Konfiguration af miljøvariabler
|
|
|
|
Kopier eksempelfilen og udfyld med jeres egne værdier:
|
|
|
|
```bash
|
|
cp .env.example .env.local
|
|
```
|
|
|
|
Åbn `.env.local` i en teksteditor og konfigurer hver sektion som beskrevet nedenfor.
|
|
|
|
### Admin-login (Påkrævet)
|
|
|
|
```env
|
|
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)
|
|
|
|
```env
|
|
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 Center** — [admin.exchange.microsoft.com](https://admin.exchange.microsoft.com)
|
|
2. Gå til **Recipients** → **Mailboxes**
|
|
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)
|
|
|
|
```env
|
|
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)
|
|
|
|
```env
|
|
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](https://openrouteservice.org/dev/#/signup) (2.000 forespørgsler pr. dag).
|
|
|
|
## 4. Opret database
|
|
|
|
```bash
|
|
npm run setup
|
|
```
|
|
|
|
Dette opretter SQLite-databasen og de nødvendige tabeller.
|
|
|
|
## 5. Byg og start
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
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
|
|
```
|