c9911cc262
New standalone apps/website (Nuxt 4) serving the public marketing site at dezky.local / www.dezky.local. The customer portal moves off the root domain to app.dezky.local only. Landing page ported from the Dezky design handoff: light theme, Danish default, hero variant A, with a working da/en toggle. Self-contained colour system threaded through components (utils/landingTokens.ts), full bilingual copy (utils/landingCopy.ts), and shared state (composables/useLanding.ts). Sections live under components/landing/* with the Node logo under components/brand/*. Wired into docker-compose (website service, volume, Traefik labels, network aliases) and bootstrap.sh (hosts list + service URLs).
54 lines
2.0 KiB
TypeScript
54 lines
2.0 KiB
TypeScript
// Nuxt 4 configuration for the Dezky public marketing site (dezky.com).
|
|
//
|
|
// Unlike apps/portal and apps/operator this surface is fully public — no
|
|
// OIDC, no sessions, no platform-api coupling. It can be statically
|
|
// generated (`pnpm generate`) and served from a CDN/edge independently of
|
|
// the Docker app stack. Locally it runs behind Traefik at dezky.local /
|
|
// www.dezky.local with the same mkcert TLS as the rest of the platform.
|
|
|
|
export default defineNuxtConfig({
|
|
compatibilityDate: '2026-01-01',
|
|
devtools: { enabled: true },
|
|
|
|
css: ['~/assets/styles/tokens.css', '~/assets/styles/base.css'],
|
|
|
|
// Auto-import from the shared packages/ui workspace in addition to the
|
|
// app's own components/. /shared-packages is bind-mounted in
|
|
// docker-compose.yml — outside containers the same files live at
|
|
// <repo>/packages/ui/components/. The local dir keeps the default
|
|
// directory-based prefix; the shared dir uses no prefix so a shared
|
|
// CountrySelect.vue is just <CountrySelect>. Mirrors portal/operator.
|
|
components: [
|
|
'~/components',
|
|
{ path: '/shared-packages/ui/components', pathPrefix: false },
|
|
],
|
|
|
|
app: {
|
|
head: {
|
|
// Marketing site is light by default (the design's primary theme). The
|
|
// page sets <html lang> reactively based on the da/en toggle.
|
|
htmlAttrs: { lang: 'da' },
|
|
link: [
|
|
{ rel: 'preconnect', href: 'https://fonts.googleapis.com' },
|
|
{ rel: 'preconnect', href: 'https://fonts.gstatic.com', crossorigin: '' },
|
|
{
|
|
rel: 'stylesheet',
|
|
href: 'https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Inter+Tight:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600;700&display=swap',
|
|
},
|
|
],
|
|
},
|
|
},
|
|
|
|
vite: {
|
|
server: {
|
|
// Vite 7 added a strict host check; allow the Traefik-fronted hostnames
|
|
// this site is served on in dev.
|
|
allowedHosts: ['dezky.local', 'www.dezky.local'],
|
|
hmr: {
|
|
protocol: 'wss',
|
|
clientPort: 443,
|
|
},
|
|
},
|
|
},
|
|
})
|