Brand strings out of nuxt.config + Header + Footer → app.config + runtimeConfig #3

Open
opened 2026-05-04 15:42:15 +02:00 by libretech · 0 comments
Owner

Part of #2

Problem

Brand strings hardcoded in libreshop/shop:

  • nuxt.config.ts:32siteUrl: "https://muellerprints-paperwork.com"
  • nuxt.config.ts:58 — page title "MUELLERPRINTS - Handgefertigte Notizbücher aus Stuttgart"
  • components/Header.vue:8,50 — logo text "MUELLERPRINTS. Paperwork", description "Über MUELLERPRINTS"
  • components/Footer.vue:10,83 — footer brand block

Adapters can't override these without forking source. Runtime env can't reach build-time literals.

Acceptance

  • Move brand strings into app.config.ts (layer-mergeable) and runtimeConfig.public (env-overridable)
  • <Header> and <Footer> read brand from useAppConfig() / useRuntimeConfig(), no string literals
  • nuxt.config.ts siteUrl + meta title default to generic "Demo Print Shop"; can be overridden via NUXT_PUBLIC_SITE_URL, NUXT_PUBLIC_BRAND_NAME, NUXT_PUBLIC_BRAND_TAGLINE
  • Page-level useSeoMeta calls (11 pages: about, agb, anfahrt, datenschutz, impressum, kontakt, oeffnungszeiten, versand, zahlung, cart, checkout/*) read brand from config, not literals
  • White-label test: build with default env → no occurrence of "MUELLERPRINTS", "Paperwork", "Stuttgart" in built artifacts
Part of https://git.librete.ch/libreshop/shop/issues/2 ## Problem Brand strings hardcoded in libreshop/shop: - `nuxt.config.ts:32` — `siteUrl: "https://muellerprints-paperwork.com"` - `nuxt.config.ts:58` — page title `"MUELLERPRINTS - Handgefertigte Notizbücher aus Stuttgart"` - `components/Header.vue:8,50` — logo text "MUELLERPRINTS. Paperwork", description "Über MUELLERPRINTS" - `components/Footer.vue:10,83` — footer brand block Adapters can't override these without forking source. Runtime env can't reach build-time literals. ## Acceptance - [ ] Move brand strings into `app.config.ts` (layer-mergeable) and `runtimeConfig.public` (env-overridable) - [ ] `<Header>` and `<Footer>` read brand from `useAppConfig()` / `useRuntimeConfig()`, no string literals - [ ] `nuxt.config.ts` siteUrl + meta title default to generic "Demo Print Shop"; can be overridden via `NUXT_PUBLIC_SITE_URL`, `NUXT_PUBLIC_BRAND_NAME`, `NUXT_PUBLIC_BRAND_TAGLINE` - [ ] Page-level `useSeoMeta` calls (11 pages: about, agb, anfahrt, datenschutz, impressum, kontakt, oeffnungszeiten, versand, zahlung, cart, checkout/*) read brand from config, not literals - [ ] White-label test: build with default env → no occurrence of "MUELLERPRINTS", "Paperwork", "Stuttgart" in built artifacts
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: libreshop/shop#3
No description provided.