#!/usr/bin/env node /** * Fiber Direkt — Landing Page Seed Script * * Creates three solution landing pages as DRAFTS in Payload CMS: * 1. Data Direkt — /data-direkt * 2. Rack Direkt — /colocation * 3. Server Direkt — /virtuellt-datacenter * * Usage: * PAYLOAD_URL=https://webdev2.fiberdirekt.se PAYLOAD_API_KEY=your-key node seed-landing-pages.mjs * * Or place this in your project root and use .env: * node seed-landing-pages.mjs * * Pages are created as DRAFTS — review in admin before publishing. * Images are referenced as placeholder text — replace with real Media IDs after upload. */ import 'dotenv/config' const PAYLOAD_URL = process.env.PAYLOAD_URL || process.env.NEXT_PUBLIC_SERVER_URL || 'http://localhost:3000' const API_KEY = process.env.PAYLOAD_API_KEY if (!API_KEY) { console.error('❌ Missing PAYLOAD_API_KEY environment variable') console.error(' Set it to a Users API key with create permissions') process.exit(1) } const headers = { 'Content-Type': 'application/json', Authorization: `users API-Key ${API_KEY}`, } // ────────────────────────────────────────────── // Helper: Convert plain text to Payload Lexical JSON // Supports \n\n for paragraph breaks // ────────────────────────────────────────────── function lexical(text) { const paragraphs = text.split('\n\n').filter(Boolean) return { root: { type: 'root', children: paragraphs.map((p) => ({ type: 'paragraph', children: [ { type: 'text', text: p.replace(/\n/g, ' '), format: 0, detail: 0, mode: 'normal', style: '', version: 1, }, ], direction: 'ltr', format: '', indent: 0, textFormat: 0, version: 1, })), direction: 'ltr', format: '', indent: 0, version: 1, }, } } // ────────────────────────────────────────────── // Helper: POST a page to Payload // ────────────────────────────────────────────── async function createPage(pageData) { const url = `${PAYLOAD_URL}/api/pages` console.log(`\n📄 Creating page: ${pageData.title} (/${pageData.slug})...`) try { const res = await fetch(url, { method: 'POST', headers, body: JSON.stringify({ ...pageData, _status: 'draft' }), }) const json = await res.json() if (!res.ok) { console.error(` ❌ Failed (${res.status}):`, JSON.stringify(json.errors || json, null, 2)) return null } console.log(` ✅ Created as draft — ID: ${json.doc?.id || json.id}`) return json } catch (err) { console.error(` ❌ Network error:`, err.message) return null } } // ══════════════════════════════════════════════ // PAGE 1: Data Direkt — Svensk datasuveränitet // ══════════════════════════════════════════════ const dataDirektPage = { title: 'Data Direkt — Svensk datasuveränitet', slug: 'data-direkt', meta: { title: 'Data Direkt — Svensk datasuveränitet | Fiber Direkt', description: 'Varje dag skickar svenska företag sin mest känsliga data till servrar utanför landets gränser. Vi erbjuder ett helt svenskt alternativ — fiber, colocation och virtuella servrar på svensk mark.', }, layout: [ // ── Block 1: Hero ── { blockType: 'fdHero', heading: 'Var bor din data egentligen?', subheading: 'Data Direkt — svensk datasuveränitet utan kompromisser', body: 'Varje dag skickar svenska företag sin mest känsliga data till servrar utanför landets gränser — utan att veta vem som egentligen har åtkomst. Vi erbjuder ett helt svenskt alternativ.', ctaText: 'Gör en datasuveränitets-check', ctaLink: '/kontakt', secondaryCtaText: 'Se våra lösningar', secondaryCtaLink: '#losningar', theme: 'dark', overlayOpacity: '50', textColor: 'auto', // backgroundImage: }, // ── Block 2: Statistics ── { blockType: 'fdStatistics', heading: 'Verkligheten i siffror', sectionBackground: 'white', numberColor: 'gradient', stats: [ { number: '72%', label: 'av svenska företags data lagras utanför EU' }, { number: '3 av 4', label: 'IT-chefer osäkra på var data faktiskt finns' }, { number: '100%', label: 'av vår infrastruktur på svensk mark' }, { number: 'NIS2', label: 'kräver kontroll — från oktober 2024' }, ], }, // ── Block 3: CTA Side Image — Problem statement ── { blockType: 'fdCtaSideImage', heading: 'Problemet ingen pratar om', body: 'Ditt företags data ligger troligen på servrar i USA, Irland eller Singapore — styrda av lagar du aldrig godkänt. US Cloud Act ger amerikanska myndigheter rätt att kräva ut data från amerikanska molntjänster, oavsett var servern står. GDPR skyddar dig i teorin. I praktiken? Inte tillräckligt.', ctaText: 'Läs mer om riskerna', ctaLink: '/blogg/datasuveranitet', imagePosition: 'right', theme: 'light', // image: }, // ── Block 4: Card Grid — Regulatory risks ── { blockType: 'fdCardGrid', layout: '1-1-1', cardStyle: 'navy', sectionBackground: 'gray', cards: [ { displayMode: 'content', heading: '🇺🇸 US Cloud Act', contentLines: [ { text: 'Risk: Amerikanska myndigheter kan begära ut din data — även om servern står i EU.', style: 'bold' }, { text: 'Gäller alla som använder AWS, Azure, Google Cloud eller annan amerikansk tjänst.', style: 'normal' }, ], }, { displayMode: 'content', heading: '🔓 Schrems II', contentLines: [ { text: 'Dom: EU-domstolen ogiltigförklarade Privacy Shield.', style: 'bold' }, { text: 'Konsekvens: Överföring av persondata till USA kräver extra skyddsåtgärder som sällan implementeras korrekt.', style: 'normal' }, ], }, { displayMode: 'content', heading: '📋 NIS2-direktivet', contentLines: [ { text: 'Krav: Strängare säkerhetskrav för samhällsviktiga tjänster.', style: 'bold' }, { text: 'Gäller nu. Brott kan ge böter upp till 2% av global omsättning.', style: 'normal' }, ], }, ], }, // ── Block 5: Text — What is data sovereignty? ── { blockType: 'fdText', heading: 'Vad innebär datasuveränitet, konkret?', // body is richText — you may need to structure this as Lexical JSON in admin // For API seeding, try plain string first — Payload may auto-convert body: lexical('Datasuveränitet handlar inte om nationalism — det handlar om kontroll. Det betyder att du vet exakt var din data lagras, vilka lagar som gäller, och att ingen utländsk myndighet kan tvinga fram åtkomst utan svensk rättsprocess.\n\nDet betyder att din backup inte plötsligt blir otillgänglig för att en utländsk leverantör ändrar sina villkor.\n\nDet betyder att du uppfyller regulatoriska krav utan att behöva anlita jurister för att tolka tredjelandsöverföringar.'), alignment: 'left', textColor: 'navy', sectionBackground: 'white', maxWidth: 'medium', }, // ── Block 6: USP Table — Solutions overview ── { blockType: 'fdUspTable', heading: 'Så löser vi det — helt på svensk mark', anchorId: 'losningar', checkColor: 'yellow', sectionBackground: 'white', textColor: 'navy', rows: [ { title: 'Data som aldrig lämnar Sverige', description: lexical('All infrastruktur drivs från svenska datacenter. Inga moln i USA, inga bakdörrar via tredjeland. Punkt.'), }, { title: 'Svensk lag, hela vägen', description: lexical('Ingen Cloud Act, inga FISA-domstolar. Din data skyddas av svensk lagstiftning och svensk rättsprocess.'), }, { title: 'NIS2 och ISO 27001 — inbyggt', description: lexical('Våra datacenter är ISO 27001-certifierade och byggda enligt Skyddsklass 3. Du uppfyller regulatoriska krav utan extra arbete.'), }, { title: 'Privat nätverk med Layer 2', description: lexical('Anslut era kontor och system via dedikerat Layer 2-nätverk. Er trafik rör aldrig det publika internet.'), }, { title: 'Svensk support, dygnet runt', description: lexical('Inga chatbotar i Bangalore. Ring oss. Vi svarar. På svenska. Från Sverige.'), }, ], }, // ── Block 7: Services Grid — Three paths ── { blockType: 'fdServicesGrid', heading: 'Tre vägar till svensk datasuveränitet', columns: '3', services: [ { title: 'Colocation — Rack Direkt', description: 'Flytta era servrar till vårt säkerhetsklassade datacenter. Ni behåller kontrollen, vi levererar kraft, kyla och redundans.', link: '/colocation', // image: }, { title: 'Virtuellt datacenter — Server Direkt', description: 'Byt ut era fysiska servrar mot virtuella. Samma prestanda, noll hårdvarubekymmer, 100% svenskt.', link: '/virtuellt-datacenter', // image: }, { title: 'Privat fiber & nätverk', description: 'Dedikerad fiberanslutning med Layer 2-nätverk. Er data reser aldrig via tredje part.', link: '/fiber', // image: }, ], }, // ── Block 8: Testimonials ── { blockType: 'fdTestimonial', heading: 'Företag som gjort flytten', layout: 'grid', sectionBackground: 'gray', testimonials: [ { quote: 'Vi insåg att vi hade all kunddata i AWS Frankfurt utan egentlig kontroll. Flytten till Fiber Direkt tog tre veckor — och nu sover jag bättre.', authorName: 'Placeholder', authorRole: 'IT-chef', authorCompany: 'Svenskt medelstort företag', }, { quote: 'NIS2-kraven hade stressat oss i månader. Med Fiber Direkt kunde vi bocka av compliance på en eftermiddag.', authorName: 'Placeholder', authorRole: 'CISO', authorCompany: 'Placeholder', }, { quote: 'Layer 2-nätverket förändrade allt. Våra fyra kontor har nu ett privat nätverk som om de satt i samma byggnad.', authorName: 'Placeholder', authorRole: 'CTO', authorCompany: 'Placeholder', }, ], }, // ── Block 9: FAQ ── { blockType: 'fdFaq', heading: 'Vanliga frågor om datasuveränitet', theme: 'light', items: [ { question: 'Räcker det inte med att min molnleverantör har servrar i EU?', answer: lexical('Nej. EU-baserade servrar hos amerikanska bolag (AWS, Azure, Google) omfattas fortfarande av US Cloud Act. Den amerikanska staten kan kräva ut data oavsett serverns fysiska plats. Svensk infrastruktur hos ett svenskt bolag är den enda garantin.'), }, { question: 'Vad händer med min data om ni som företag säljs?', answer: lexical('Fiber Direkt är ett svenskägt företag med långsiktigt ägande. Men även vid ägarbyten gäller svensk lag — din data kan inte plötsligt flyttas utomlands eller överlåtas utan avtalsbrott.'), }, { question: 'Hur lång tid tar det att migrera till svensk infrastruktur?', answer: lexical('Det beror på komplexitet. En enkel servermigrering kan vara klar på dagar. Vi erbjuder en steg-för-steg migreringsplan med dedikerad support genom hela processen.'), }, { question: 'Vad kostar det jämfört med AWS/Azure?', answer: lexical('Vi är konkurrenskraftiga — speciellt när du räknar in compliance-kostnader, juridisk riskpremie, och den dolda kostnaden av vendor lock-in. Kontakta oss för en jämförelse baserad på er nuvarande setup.'), }, { question: 'Uppfyller ni NIS2-kraven?', answer: lexical('Ja. Våra datacenter är ISO 27001-certifierade, byggda enligt Skyddsklass 3, och opereras helt under svensk lag. Vi hjälper er dokumentera compliance.'), }, ], }, // ── Block 10: CTA Banner ── { blockType: 'fdCtaBanner', heading: 'Redo att ta tillbaka kontrollen?', subheading: 'Boka ett kostnadsfritt rådgivningssamtal. Vi analyserar er nuvarande setup och visar exakt vad som behöver göras.', ctaText: 'Boka rådgivning', ctaLink: '/kontakt', secondaryCtaText: 'Ring oss direkt', secondaryCtaLink: 'tel:+46771101010', sectionBackground: 'navy', alignment: 'center', size: 'large', }, ], } // ══════════════════════════════════════════════ // PAGE 2: Rack Direkt — Colocation // ══════════════════════════════════════════════ const rackDirektPage = { title: 'Rack Direkt — Colocation', slug: 'colocation', meta: { title: 'Colocation i Skyddsklass 3-datacenter | Fiber Direkt', description: 'Flytta era servrar till vårt ISO 27001-certifierade, Skyddsklass 3-datacenter. Redundant kraft, precisionskyla, 24/7 övervakning och svensk support. Från 1 995 kr/mån.', }, layout: [ // ── Block 1: Hero ── { blockType: 'fdHero', heading: 'Ditt serverrum håller dig tillbaka', subheading: 'Rack Direkt — säkerhetsklassad colocation, utan krångel', body: 'Eget serverrum innebär eget ansvar: redundant kraft, kylning, brandskydd, fysisk säkerhet, och personal som kan hantera det. Vi erbjuder ett bättre alternativ — flytta in i vårt Skyddsklass 3-datacenter och fokusera på det ni faktiskt gör bäst.', ctaText: 'Se priser och rack-storlekar', ctaLink: '#priser', secondaryCtaText: 'Boka en rundvisning', secondaryCtaLink: '/kontakt', theme: 'dark', overlayOpacity: '50', textColor: 'auto', // backgroundImage: }, // ── Block 2: Card Grid — Server room problems ── { blockType: 'fdCardGrid', layout: '1-1-1', cardStyle: 'outlined', sectionBackground: 'white', cards: [ { displayMode: 'content', heading: 'Strömavbrott kl 03:00', contentLines: [ { text: 'Er UPS klarar 15 minuter. Sen?', style: 'bold' }, { text: 'Er verksamhet stannar. Vårt datacenter har N+1-redundans på allt — kraft, kyla, nätverk.', style: 'normal' }, ], }, { displayMode: 'content', heading: 'Kylningen sviktar i juli', contentLines: [ { text: 'Eget serverrum + sommar = överhettning.', style: 'bold' }, { text: 'Vi har precisionskyla designad för 24/7 drift, året runt. Överskottsvärmen återvinns till fjärrvärmenätet.', style: 'normal' }, ], }, { displayMode: 'content', heading: 'Obehörig i serverrummet', contentLines: [ { text: 'Vem hade egentligen tillgång senast?', style: 'bold' }, { text: 'Vårt datacenter har biometrisk åtkomst, kameraövervakning och loggning av varje besök. Skyddsklass 3.', style: 'normal' }, ], }, ], }, // ── Block 3: CTA Side Image — Value prop ── { blockType: 'fdCtaSideImage', heading: 'Vi hanterar infrastrukturen. Ni driver verksamheten.', body: 'Colocation hos Fiber Direkt innebär att er hårdvara står i ett ISO 27001-certifierat, Skyddsklass 3-datacenter — med redundant kraft, precisionskyla, brandsläckning och 24/7 övervakning. Ni behåller full kontroll över era servrar. Vi ser till att de aldrig stannar.', ctaText: 'Kontakta oss', ctaLink: '/kontakt', imagePosition: 'right', theme: 'dark', // image: }, // ── Block 4: Services Grid — What colocation means ── { blockType: 'fdServicesGrid', heading: 'Colocation innebär', columns: '4', services: [ { title: 'Hållbarhet', description: 'Direktanslutning till svenskägt nätverk. Från 10 Gbit/s till 400 Gbit/s — symmetrisk, skalbar, utan Big Tech-mellanhänder.', // image: }, { title: 'Säkerhet', description: 'Dina säkerhetskopior lagras i våra säkra datacenter. Snabb återställning när det händer något. Helt utan BigTech.', // image: }, { title: 'Skalbarhet', description: 'Din hårdvara i våra säkra hallar. Svensk drift, ditt utrymme, full kontroll. Från en server till hela burar.', // image: }, { title: 'Låg latens', description: 'Virtuella servrar som körs på svensk mark. Flexibel kapacitet, lokal data, inget tredjepartsmoln. Hybrid infrastruktur — vi löser det!', // image: }, ], }, // ── Block 5: Tech Properties ── { blockType: 'fdTechProperties', sectionBackground: 'navy', categoryColor: 'white', valueColor: 'yellow', properties: [ { category: 'Skyddsklass', value: '3' }, { category: 'Certifiering', value: 'ISO 27001' }, { category: 'Upptid', value: '99,99%' }, { category: 'Support', value: '24/7' }, ], }, // ── Block 6: Pricing Cards ── { blockType: 'fdPricingCard', anchorId: 'priser', sectionTitle: 'Gott om utrymme!', titleColor: 'navy', sectionBackground: 'white', cardStyle: 'navy', buttonColor: 'yellow', cards: [ { title: 'Helskåp (40U)', subtitle: 'från 5 995 kr/mån', description: 'Ett helt skåp innebär att ni har ensam tillgång med nyckel. Antal höjdenheter är max 40U.', bulletPoints: [ { text: 'Eget lås & nyckel' }, { text: 'N+1 redundant kraft' }, { text: 'Fri fjärrstyrning (KVM)' }, { text: 'Cross-connect ingår' }, ], ctaText: 'Kom igång', ctaLink: '/kontakt', }, { title: 'Halvskåp (18U)', subtitle: 'från 3 495 kr/mån', description: 'Ett halvt skåp ger er antal höjdenheter på max 18U. 24/7-bevakning och dygnet runt åtkomst.', bulletPoints: [ { text: 'Delat skåp, eget utrymme' }, { text: 'Samma redundans som helskåp' }, { text: '24/7 fysisk åtkomst' }, { text: 'Skalbart — uppgradera till hel' }, ], ctaText: 'Kom igång', ctaLink: '/kontakt', }, { title: 'Kvartsskåp (9U)', subtitle: 'från 1 995 kr/mån', description: 'Ett kvartsskåp ger er antal höjdenheter på max 9U. 24/7-bevakning och dygnet runt åtkomst.', bulletPoints: [ { text: 'Perfekt startlösning' }, { text: 'All infrastruktur inkluderad' }, { text: 'Dygnet runt åtkomst' }, { text: 'Uppgradera när ni växer' }, ], ctaText: 'Kom igång', ctaLink: '/kontakt', }, ], }, // ── Block 7: Wide Card — Dedicated space ── { blockType: 'fdWideCard', heading: 'Dedikerat utrymme, helt på dina villkor', body: 'För verksamheter som kräver full kontroll och hög integritet erbjuder vi privata cage-lösningar och fristående datacentermiljöer med upp till 1 MW effektkapacitet. En egen bur, eller varför inte ett privat datacenter?', ctaText: 'Kontakta oss', ctaLink: '/kontakt', cardBackground: 'navy', buttonColor: 'yellow', sectionBackground: 'white', }, // ── Block 8: USP Checklist — Migration support ── { blockType: 'fdUspChecklist', heading: 'Vi hjälper er flytta — från planering till drift', checkColor: 'yellow', sectionBackground: 'gray', textColor: 'navy', imagePosition: 'left', // image: items: [ { text: 'Behovsanalys och dimensionering av rack-utrymme' }, { text: 'Planering av nätverksanslutning och redundans' }, { text: 'Fysisk transport och installation av er hårdvara' }, { text: 'Konfiguration och testning i datacenter-miljö' }, { text: 'Igångkörning med övervakning och support' }, { text: 'Dokumentation och överlämning till er drift' }, ], }, // ── Block 9: Card Grid — Certifications ── { blockType: 'fdCardGrid', layout: '1-1-1', cardStyle: 'gray', sectionBackground: 'white', cards: [ { displayMode: 'centeredBody', heading: 'ISO 27001', centeredBodyText: 'Certifieringen innebär att våra processer för kommunikationslösningar, lagringstjänster och colocation styrs av ett ledningssystem som ställer krav på att vi etablerar, inför, underhåller och ständigt förbättrar skyddet av kundernas data.', }, { displayMode: 'centeredBody', heading: 'ISO 14001', centeredBodyText: 'Genom energieffektiv kylning, minimerat avfall och systematiska miljömål kan vi erbjuda en klimatsmart colocation-lösning som hjälper våra kunder att växa hållbart.', }, { displayMode: 'centeredBody', heading: 'Skyddsklass 3', centeredBodyText: 'Våra datahallar är byggda enligt Skyddsklass 3, den högsta nivån för fysiskt intrångsskydd. Det innebär förstärkt byggnadsskal, flera skalskydd, kameraövervakning och larmklass 3.', }, ], }, // ── Block 10: CTA Side Image — Sovereign AI cross-sell ── { blockType: 'fdCtaSideImage', heading: 'Suverän AI och molntjänster 🇸🇪', body: 'Din data stannar i Sverige. Våra AI- och molntjänster drivs från svenska datacenter, under svensk lagstiftning, med svensk support. Perfekt för företag som vill använda moderna AI-verktyg utan att kompromissa med datasuveräniteten.', ctaText: 'Läs mer', ctaLink: '/data-direkt', theme: 'dark', imagePosition: 'right', }, // ── Block 11: FAQ ── { blockType: 'fdFaq', heading: 'Vanliga frågor om colocation', theme: 'light', items: [ { question: 'Kan jag besöka min hårdvara när som helst?', answer: lexical('Ja. Alla colocation-kunder har 24/7 tillgång till sina rack via biometrisk åtkomst. Besök loggas för säkerhet.'), }, { question: 'Vad händer vid strömavbrott?', answer: lexical('Vårt datacenter har N+1-redundans: dubbla matningar, UPS-system och dieselgeneratorer. Vid normal drift uppnår vi 99,99% upptid.'), }, { question: 'Kan jag skala upp om jag behöver mer plats?', answer: lexical('Absolut. Ni kan enkelt uppgradera från kvartsskåp till halvt, helt, eller privata cage-lösningar utan driftstopp.'), }, { question: 'Ingår nätverksanslutning?', answer: lexical('Basanslutning ingår. Vi erbjuder dessutom dedikerad fiber med hastigheter från 1 Gbit/s till 400 Gbit/s samt Layer 2-nätverk för privat trafik mellan era platser.'), }, { question: 'Hjälper ni med flytten av befintlig hårdvara?', answer: lexical('Ja. Vi erbjuder komplett migrerings-support — från planering och transport till installation och driftsättning i vårt datacenter.'), }, ], }, // ── Block 12: CTA Banner ── { blockType: 'fdCtaBanner', heading: 'Redo att lämna serverrummet?', subheading: 'Boka en kostnadsfri rundvisning i vårt datacenter. Se med egna ögon varför 200+ svenska företag redan gjort flytten.', ctaText: 'Boka rundvisning', ctaLink: '/kontakt', secondaryCtaText: 'Ring oss: 0771-10 10 10', secondaryCtaLink: 'tel:+46771101010', sectionBackground: 'yellow', alignment: 'center', size: 'large', }, ], } // ══════════════════════════════════════════════ // PAGE 3: Server Direkt — Virtuellt Datacenter // ══════════════════════════════════════════════ const serverDirektPage = { title: 'Server Direkt — Virtuellt Datacenter', slug: 'virtuellt-datacenter', meta: { title: 'Virtuellt Datacenter — Servrar utan serverrum | Fiber Direkt', description: 'Ersätt era fysiska servrar med flexibla, redundanta virtuella maskiner på svensk mark. Samma prestanda, noll hårdvarubekymmer, 100% svenskt. Beräkna din kostnad direkt.', }, layout: [ // ── Block 1: Alternate Hero ── { blockType: 'fdAlternateHero', heading: 'Servrar utan serverrum', description: 'Server Direkt — virtuella servrar på svensk mark. Ersätt era fysiska servrar med flexibla, redundanta virtuella maskiner. Samma prestanda. Noll hårdvarubekymmer. All data i Sverige.', primaryCtaText: 'Beräkna din kostnad', primaryCtaLink: '#kalkylator', secondaryCtaText: 'Prata med en expert', secondaryCtaLink: '/kontakt', sectionBackground: 'white', // image: }, // ── Block 2: Card Grid — Old vs New ── { blockType: 'fdCardGrid', layout: '1-1', cardStyle: 'navy', sectionBackground: 'white', cards: [ { displayMode: 'content', heading: '❌ Traditionella servrar', contentLines: [ { text: 'Dyra att köpa — dyrare att underhålla', style: 'normal' }, { text: 'Begränsad kapacitet, svårt att skala', style: 'normal' }, { text: 'Sårbar för hårdvarufel och strömavbrott', style: 'normal' }, { text: 'Tar plats, kräver kylning och personal', style: 'normal' }, { text: 'Garanti löper ut — sen börjar problemen', style: 'normal' }, ], }, { displayMode: 'content', heading: '✅ Server Direkt', contentLines: [ { text: 'Betala för det ni använder — skala på minuter', style: 'normal' }, { text: 'Inbyggd redundans — ingen enskild felkälla', style: 'normal' }, { text: 'Ingen hårdvara att underhålla eller byta ut', style: 'normal' }, { text: 'Alla data i Sverige, under svensk lag', style: 'normal' }, { text: 'Support på svenska, dygnet runt', style: 'normal' }, ], }, ], }, // ── Block 3: Statistics ── { blockType: 'fdStatistics', sectionBackground: 'navy', numberColor: 'gradient', stats: [ { number: '99,99%', label: 'garanterad upptid' }, { number: '< 5 min', label: 'att starta en ny server' }, { number: '100%', label: 'svensk data, svensk lag' }, { number: '24/7', label: 'support på svenska' }, ], }, // ── Block 4: CTA Side Image — Use cases ── { blockType: 'fdCtaSideImage', heading: 'Perfekt för era kritiska system', body: 'Databaser, ERP, bokföring, intranät, e-post, Active Directory — alla de system som er verksamhet är beroende av varje dag. Server Direkt ger dem redundans, prestanda och skalbarhet utan att ni behöver äga en enda fysisk server.', ctaText: 'Se vanliga användningsområden', ctaLink: '#anvandning', imagePosition: 'right', theme: 'light', // image: }, // ── Block 5: Services Grid — Use cases detail ── { blockType: 'fdServicesGrid', anchorId: 'anvandning', heading: 'Vanliga användningsområden', columns: '3', services: [ { title: 'Databaser & ERP', description: 'Kör era SQL-servrar, affärssystem och CRM i redundanta miljöer med daglig backup och garanterad prestanda.', // image: }, { title: 'Webb & applikationer', description: 'Hosta webbplatser, API:er och interna verktyg med autoskalning och lastbalansering.', // image: }, { title: 'E-post & kommunikation', description: 'Kör Exchange, Teams-infrastruktur eller valfri e-postlösning på dedikerade virtuella servrar med hög tillgänglighet.', // image: }, { title: 'Backup & disaster recovery', description: 'En geografiskt separerad kopia av er primära miljö — redo att ta över inom minuter vid incident.', // image: }, { title: 'Utveckling & test', description: 'Spinn upp testmiljöer på sekunder. Stäng ner dem när ni är klara. Betala bara för faktisk användning.', // image: }, { title: 'AI & maskininlärning', description: 'Kör tunga beräkningar på svensk mark. GPU-kapacitet finns tillgänglig för kunder med specifika behov.', // image: }, ], }, // ── Block 6: USP Table — What's included ── { blockType: 'fdUspTable', heading: 'Vad ingår?', checkColor: 'yellow', sectionBackground: 'white', textColor: 'navy', rows: [ { title: 'Valfri konfiguration', description: lexical('Anpassa CPU, RAM, SSD och HDD exakt efter era behov. Skala upp eller ner utan driftstopp.'), }, { title: 'Daglig backup', description: lexical('Automatisk backup varje natt. Spara kopior i upp till 30 dagar. Snabb återställning.'), }, { title: 'Redundant nätverk', description: lexical('Dubbla nätverksanslutningar med automatisk failover. Er tjänst är alltid nåbar.'), }, { title: 'Layer 2-nätverk (tillval)', description: lexical('Koppla ihop era virtuella servrar med kontor och andra platser via privat, dedikerat nätverk.'), }, { title: 'Svensk support', description: lexical('Dedikerat supportteam i Sverige. Telefon, e-post, fjärrstyrning. Vi talar ert språk — bokstavligen.'), }, { title: 'SLA med tänder', description: lexical('99,99% upptid med ekonomisk garanti. Vi kompenserar er om vi inte levererar.'), }, ], }, // ── Block 7: VPS Calculator ── { blockType: 'fdVpsCalculator', anchorId: 'kalkylator', heading: 'Beräkna din månadskostnad', description: 'Dra i reglagen och se priset direkt. Ingen bindningstid.', orderCtaText: 'Beställ nu', orderCtaLink: '/kontakt', contactCtaText: 'Behöver du hjälp att välja?', contactCtaLink: '/kontakt', sectionBackground: 'gray', // Pricing fields: use your existing values or set new ones: pricingCpuPerCore: 149, pricingRamPerGb: 49, pricingSsdPerGb: 2, pricingHddPerGb: 0.5, pricingWindowsLicense: 299, discountPercent: 0, }, // ── Block 8: Wide Card — Migration ── { blockType: 'fdWideCard', heading: 'Från eget serverrum till Server Direkt — på en vecka', body: 'Migrering behöver inte vara komplicerat. Vi analyserar er nuvarande miljö, planerar flytten, och genomför den med minimalt driftstopp. De flesta kunder är igång inom en vecka — inklusive test och verifiering.', ctaText: 'Boka migreringskonsultation', ctaLink: '/kontakt', cardBackground: 'navy', buttonColor: 'yellow', sectionBackground: 'white', }, // ── Block 9: Card Grid — Migration process ── { blockType: 'fdCardGrid', layout: '1-1-1', cardStyle: 'gray', sectionBackground: 'white', cards: [ { displayMode: 'content', heading: '1. Analys', contentLines: [ { text: 'Vi kartlägger er nuvarande servermiljö — hårdvara, mjukvara, belastning, beroenden.', style: 'normal' }, { text: 'Ni får en tydlig migreringsplan med tidslinje.', style: 'bold' }, ], }, { displayMode: 'content', heading: '2. Migration', contentLines: [ { text: 'Vi sätter upp er virtuella miljö, migrerar data och applikationer, och kör parallellt tills allt fungerar felfritt.', style: 'normal' }, ], }, { displayMode: 'content', heading: '3. Drift & support', contentLines: [ { text: 'Er nya miljö är igång. Vi övervakar, backar upp och supportar.', style: 'normal' }, { text: 'Ni fokuserar på kärnverksamheten — vi sköter infrastrukturen.', style: 'bold' }, ], }, ], }, // ── Block 10: Testimonial ── { blockType: 'fdTestimonial', heading: 'Företag som gjort bytet', layout: 'featured', sectionBackground: 'gray', testimonials: [ { quote: 'Vi hade tre fysiska servrar som var slut på garanti. Istället för att köpa nya investerade vi i Server Direkt — halva kostnaden, dubbla prestandan, och noll underhåll.', authorName: 'Placeholder', authorRole: 'VD', authorCompany: 'Svenskt företag, 50 anställda', }, ], }, // ── Block 11: FAQ ── { blockType: 'fdFaq', heading: 'Vanliga frågor om virtuella servrar', theme: 'light', items: [ { question: 'Vad är en virtuell server egentligen?', answer: lexical('En virtuell server (VM) är en mjukvarudefinerad dator som körs på kraftfull fysisk hårdvara i vårt datacenter. Den beter sig exakt som en fysisk server — men utan att ni behöver äga, underhålla eller byta hårdvara.'), }, { question: 'Klarar virtuella servrar tunga arbetsbelastningar?', answer: lexical('Ja. Våra VM:ar körs på enterprise-hårdvara med dedikerade resurser. Ni kan konfigurera upp till 32 CPU-kärnor, 128 GB RAM och stora SSD/HDD-volymer.'), }, { question: 'Kan jag köra Windows?', answer: lexical('Absolut. Vi stöder Windows Server (licensiering kan tillkomma) och alla vanliga Linux-distributioner.'), }, { question: 'Hur fungerar backup?', answer: lexical('Daglig automatisk backup ingår. Kopior sparas i upp till 30 dagar och kan återställas snabbt vid behov.'), }, { question: 'Vad händer om en fysisk server i ert datacenter går sönder?', answer: lexical('Er VM flyttas automatiskt till annan hårdvara — ofta utan märkbart avbrott. Det är kärnan i virtualisering: ni är aldrig beroende av en enskild maskin.'), }, { question: 'Kan jag kombinera virtuella servrar med colocation?', answer: lexical('Ja, och det är en vanlig setup. Många kunder kör primära system virtuellt och har specifik hårdvara i colocation — allt kopplat via vårt Layer 2-nätverk.'), }, ], }, // ── Block 12: CTA Banner ── { blockType: 'fdCtaBanner', heading: 'Starta er första virtuella server idag', subheading: 'Ingen bindningstid. Ingen hårdvara att köpa. Betala för det ni använder — skala när ni behöver.', ctaText: 'Beställ nu', ctaLink: '/kontakt', secondaryCtaText: 'Prata med en expert', secondaryCtaLink: 'tel:+46771101010', sectionBackground: 'navy', alignment: 'center', size: 'large', }, ], } // ══════════════════════════════════════════════ // Run it // ══════════════════════════════════════════════ async function main() { console.log('🚀 Fiber Direkt — Landing Page Seeder') console.log(` Target: ${PAYLOAD_URL}`) console.log(' Pages will be created as DRAFTS\n') const results = await Promise.allSettled([ createPage(dataDirektPage), createPage(rackDirektPage), createPage(serverDirektPage), ]) const succeeded = results.filter((r) => r.status === 'fulfilled' && r.value).length const failed = results.filter((r) => r.status === 'rejected' || !r.value).length console.log(`\n────────────────────────`) console.log(`✅ Created: ${succeeded} pages`) if (failed) console.log(`❌ Failed: ${failed} pages`) console.log(`\nNext steps:`) console.log(` 1. Open Payload admin → Pages`) console.log(` 2. Upload images and assign to image fields`) console.log(` 3. Check richText fields (FAQ answers, FDText body) — may need re-entry`) console.log(` 4. Review & publish when ready`) } main()