-
{{ c.addressLabel }}
-
-
{{ copy.footer.legal.name }}
-
{{ copy.footer.legal.addr }}
-
{{ c.cvrLabel }}: {{ copy.footer.legal.cvr.replace('CVR ', '') }}
+
+
+
+
-
-
- {{ copy.pages.ctaDemo }} →
-
+
+
diff --git a/apps/website/pages/demo.vue b/apps/website/pages/demo.vue
new file mode 100644
index 0000000..d973f3a
--- /dev/null
+++ b/apps/website/pages/demo.vue
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+
+
+
+
{{ c.expectHeading }}
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/website/pages/migration.vue b/apps/website/pages/migration.vue
index 865d206..60ae238 100644
--- a/apps/website/pages/migration.vue
+++ b/apps/website/pages/migration.vue
@@ -1,12 +1,10 @@
-
+
+
`${copy.value.pages.roadmap.label} · dezky` })
+
{{ c.note }}
+
+
+
+
+
+
{{ c.themesLabel }}
+
{{ c.themesHeading }}
+
{{ c.themesLede }}
+
+
+
+
{{ th[0] }}
+
{{ th[1] }}
+
+
+
+
+
+
+
+
+
{{ c.ctaHeading }}
+
{{ c.ctaBody }}
+
{{ c.ctaButton }} →
+
@@ -44,6 +83,9 @@ useHead({ title: () => `${copy.value.pages.roadmap.label} · dezky` })
.roadmap-col--first {
border-left: none;
}
+.roadmap-themes {
+ grid-template-columns: 1fr 1fr;
+}
@media (max-width: 768px) {
.roadmap-col {
border-left: none;
@@ -52,5 +94,8 @@ useHead({ title: () => `${copy.value.pages.roadmap.label} · dezky` })
.roadmap-col--first {
border-top: none;
}
+ .roadmap-themes {
+ grid-template-columns: 1fr;
+ }
}
diff --git a/apps/website/pages/status.vue b/apps/website/pages/status.vue
new file mode 100644
index 0000000..783b923
--- /dev/null
+++ b/apps/website/pages/status.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+ {{ c.overallOk }}
+
+
+
+
{{ c.servicesHeading }}
+
+
+
+
+ {{ s[0] }}
+
+ {{ c.statusLabels[s[1]] ?? s[1] }}
+
+
+
+
+
{{ c.incidentsHeading }}
+
{{ c.noIncidents }}
+
+
+
diff --git a/apps/website/utils/landingCopy.ts b/apps/website/utils/landingCopy.ts
index 29558f5..942b7a4 100644
--- a/apps/website/utils/landingCopy.ts
+++ b/apps/website/utils/landingCopy.ts
@@ -167,19 +167,61 @@ export const COPY = {
title: 'Lad os tale sammen.',
intro: 'Spørgsmål om migration, priser eller whitelabel? Skriv til os — vi svarer på dansk og engelsk.',
emailLabel: 'E-mail',
- email: 'kontakt@dezky.eu',
+ email: 'info@dezky.eu',
addressLabel: 'Adresse',
cvrLabel: 'CVR',
+ responseNote: 'Vi svarer typisk inden for én arbejdsdag — på dansk eller engelsk.',
+ channels: [
+ ['Generelt & salg', 'info@dezky.eu', 'Spørgsmål, demoer, priser og migration.'],
+ ['Juridisk', 'legal@dezky.eu', 'Servicevilkår, SLA og Enterprise-aftaler.'],
+ ['Databeskyttelse', 'privacy@dezky.eu', 'Privatliv, databehandleraftale og dataanmodninger.'],
+ ] as [string, string, string][],
+ demoHeading: 'Se dezky live.',
+ demoBody: 'Book en kort gennemgang, så viser vi suiten og svarer på dine spørgsmål — helt uforpligtende.',
+ },
+ demo: {
+ label: 'book en demo',
+ title: 'Se dezky i aktion.',
+ intro: 'En kort, konkret gennemgang af suiten — på dansk eller engelsk. Udfyld formularen, så vender vi tilbage med et par tider.',
+ expectHeading: 'Hvad du kan forvente',
+ expect: [
+ '30 minutter — ingen slides, intet salgspres.',
+ 'Vi viser modulerne live på rigtige data.',
+ 'Et reelt pristilbud til jeres størrelse.',
+ 'Svar på migration, sikkerhed og whitelabel.',
+ ] as string[],
+ formHeading: 'Book din demo',
+ nameLabel: 'Navn', namePh: 'Dit navn',
+ emailLabel: 'Arbejds-e-mail', emailPh: 'dig@virksomhed.dk',
+ companyLabel: 'Virksomhed', companyPh: 'Virksomhedens navn',
+ teamLabel: 'Antal brugere', teamPh: 'Vælg…',
+ teamSizes: ['1–10', '11–50', '51–200', '200+'] as string[],
+ messageLabel: 'Besked (valgfrit)', messagePh: 'Hvad vil I gerne se?',
+ submit: 'Book en demo',
+ note: 'Vi vender tilbage inden for én arbejdsdag for at aftale et tidspunkt. Din henvendelse sendes til info@dezky.eu.',
},
roadmap: {
label: 'roadmap',
title: 'Hvor vi er på vej hen.',
intro: 'Vi udvikler i det åbne. Her er, hvad der er live, hvad der er på vej, og hvad vi planlægger.',
columns: [
- ['Live nu', ['Mail, kalender & kontakter', 'Filer & drev', 'Single sign-on & brugerstyring']],
- ['Næste', ['Videomøder i browseren', 'Team chat med tråde', 'Mobil-apps til iOS & Android']],
- ['Senere', ['Kundekontrollerede nøgler (BYOK)', 'Avanceret compliance-rapportering', 'Flere EU-regioner']],
+ ['Live nu', ['Mail, kalender & kontakter', 'Filer & drev', 'Single sign-on & brugerstyring', 'Office-redigering i browseren', 'Admin-konsol & domæneopsætning']],
+ ['Næste', ['Videomøder i browseren', 'Team chat med tråde', 'Mobil-apps til iOS & Android', 'Delte teamdrev & rettigheder', 'Migrationsværktøj fra Microsoft 365']],
+ ['Senere', ['Kundekontrollerede nøgler (BYOK)', 'Avanceret compliance-rapportering', 'Flere EU-regioner', 'Whitelabel-portal til partnere', 'Offentlige status- & hændelses-API\'er']],
],
+ note: 'Tidslinjer er retningsgivende — ikke løfter. Vi prioriterer ud fra sikkerhed, kundebehov og hvad der gør suiten mere sammenhængende.',
+ themesLabel: 'temaer',
+ themesHeading: 'De store linjer.',
+ themesLede: 'Uanset rækkefølgen i kolonnerne er det her, vi satser på.',
+ themes: [
+ ['Suverænitet som standard', 'Alt hostet i EU, ingen amerikansk afhængighed. Vi udvider med flere EU-regioner og endnu skarpere datakontrol.'],
+ ['Ét login, alle værktøjer', 'Vi syr modulerne tættere sammen, så det føles som én arbejdsplads — ikke fem apps med samme farve.'],
+ ['Åben og portabel', 'Åbne standarder, fuld eksport og flere migrationsværktøjer. Det skal være lige så let at forlade os som at komme til.'],
+ ['Bygget til partnere', 'Dybere whitelabel og selvbetjente værktøjer til forhandlere, så partnere kan drive deres eget brand på dezky.'],
+ ] as [string, string][],
+ ctaHeading: 'Mangler du noget på listen?',
+ ctaBody: 'Vores roadmap formes af de virksomheder, der bruger dezky. Fortæl os, hvad der ville gøre størst forskel for jer.',
+ ctaButton: 'Foreslå en funktion',
},
changelog: {
label: 'changelog',
@@ -407,6 +449,25 @@ export const COPY = {
contactHeading: 'Kontakt',
contactBody: 'Spørgsmål om cookies eller databeskyttelse: privacy@dezky.eu.',
},
+ status: {
+ label: 'status',
+ title: 'Systemstatus',
+ intro: 'Aktuel status for dezkys tjenester. Vi opdaterer siden ved planlagt vedligehold og under hændelser.',
+ overallOk: 'Alle systemer kører',
+ servicesHeading: 'Tjenester',
+ statusLabels: { operational: 'Operationel', planned: 'På vej', degraded: 'Forringet ydelse', down: 'Nede' } as Record
,
+ services: [
+ ['E-mail', 'operational'],
+ ['Drev', 'operational'],
+ ['Kalender', 'operational'],
+ ['Login / SSO', 'operational'],
+ ['Platform & API', 'operational'],
+ ['Videomøder', 'planned'],
+ ['Chat', 'planned'],
+ ] as [string, string][],
+ incidentsHeading: 'Hændelseshistorik',
+ noIncidents: 'Ingen hændelser registreret de seneste 90 dage.',
+ },
stubs: {
customers: 'Kunder',
careers: 'Karriere',
@@ -594,19 +655,61 @@ export const COPY = {
title: 'Let\'s talk.',
intro: 'Questions about migration, pricing or whitelabel? Drop us a line — we reply in Danish and English.',
emailLabel: 'Email',
- email: 'kontakt@dezky.eu',
+ email: 'info@dezky.eu',
addressLabel: 'Address',
cvrLabel: 'Company reg.',
+ responseNote: 'We usually reply within one business day — in Danish or English.',
+ channels: [
+ ['General & sales', 'info@dezky.eu', 'Questions, demos, pricing and migration.'],
+ ['Legal', 'legal@dezky.eu', 'Terms of service, SLA and Enterprise agreements.'],
+ ['Data protection', 'privacy@dezky.eu', 'Privacy, the DPA and data requests.'],
+ ] as [string, string, string][],
+ demoHeading: 'See dezky live.',
+ demoBody: 'Book a short walkthrough — we\'ll show you the suite and answer your questions, no commitment.',
+ },
+ demo: {
+ label: 'book a demo',
+ title: 'See dezky in action.',
+ intro: 'A short, concrete walkthrough of the suite — in Danish or English. Fill in the form and we\'ll come back with a few times.',
+ expectHeading: 'What to expect',
+ expect: [
+ '30 minutes — no slides, no sales pressure.',
+ 'We show the modules live on real data.',
+ 'A real price quote for your size.',
+ 'Answers on migration, security and whitelabel.',
+ ] as string[],
+ formHeading: 'Book your demo',
+ nameLabel: 'Name', namePh: 'Your name',
+ emailLabel: 'Work email', emailPh: 'you@company.com',
+ companyLabel: 'Company', companyPh: 'Company name',
+ teamLabel: 'Number of users', teamPh: 'Select…',
+ teamSizes: ['1–10', '11–50', '51–200', '200+'] as string[],
+ messageLabel: 'Message (optional)', messagePh: 'What would you like to see?',
+ submit: 'Book a demo',
+ note: 'We\'ll get back within one business day to arrange a time. Your request is sent to info@dezky.eu.',
},
roadmap: {
label: 'roadmap',
title: 'Where we\'re headed.',
intro: 'We build in the open. Here\'s what\'s live, what\'s next, and what we\'re planning.',
columns: [
- ['Live now', ['Mail, calendar & contacts', 'Files & drive', 'Single sign-on & user management']],
- ['Next', ['Video meetings in the browser', 'Team chat with threads', 'Mobile apps for iOS & Android']],
- ['Later', ['Customer-held keys (BYOK)', 'Advanced compliance reporting', 'More EU regions']],
+ ['Live now', ['Mail, calendar & contacts', 'Files & drive', 'Single sign-on & user management', 'Office editing in the browser', 'Admin console & domain setup']],
+ ['Next', ['Video meetings in the browser', 'Team chat with threads', 'Mobile apps for iOS & Android', 'Shared team drives & permissions', 'Microsoft 365 migration tooling']],
+ ['Later', ['Customer-held keys (BYOK)', 'Advanced compliance reporting', 'More EU regions', 'White-label partner portal', 'Public status & incident APIs']],
],
+ note: 'Timelines are directional — not promises. We prioritise by security, customer needs, and what makes the suite more cohesive.',
+ themesLabel: 'themes',
+ themesHeading: 'The bigger picture.',
+ themesLede: 'Whatever the column order, these are the bets we\'re making.',
+ themes: [
+ ['Sovereignty by default', 'Everything EU-hosted, no American dependency. We\'re expanding to more EU regions and even tighter data control.'],
+ ['One login, every tool', 'We\'re stitching the modules closer together so it feels like one workplace — not five apps in the same colour.'],
+ ['Open and portable', 'Open standards, full export and more migration tooling. Leaving us should be as easy as joining.'],
+ ['Built for partners', 'Deeper white-label and self-serve reseller tooling, so partners can run their own brand on dezky.'],
+ ] as [string, string][],
+ ctaHeading: 'Missing something from the list?',
+ ctaBody: 'Our roadmap is shaped by the businesses using dezky. Tell us what would make the biggest difference for you.',
+ ctaButton: 'Suggest a feature',
},
changelog: {
label: 'changelog',
@@ -834,6 +937,25 @@ export const COPY = {
contactHeading: 'Contact',
contactBody: 'Questions about cookies or data protection: privacy@dezky.eu.',
},
+ status: {
+ label: 'status',
+ title: 'System status',
+ intro: 'Current status of dezky\'s services. We update this page during planned maintenance and incidents.',
+ overallOk: 'All systems operational',
+ servicesHeading: 'Services',
+ statusLabels: { operational: 'Operational', planned: 'Coming soon', degraded: 'Degraded', down: 'Down' } as Record,
+ services: [
+ ['Email', 'operational'],
+ ['Drive', 'operational'],
+ ['Calendar', 'operational'],
+ ['Login / SSO', 'operational'],
+ ['Platform & API', 'operational'],
+ ['Video meetings', 'planned'],
+ ['Chat', 'planned'],
+ ] as [string, string][],
+ incidentsHeading: 'Incident history',
+ noIncidents: 'No incidents reported in the last 90 days.',
+ },
stubs: {
customers: 'Customers',
careers: 'Careers',