Final brand-strip: replace MUELLERPRINTS-specific content with plausible neutral defaults #11

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

Part of #10

Goal

Final brand-strip pass: remove all MUELLERPRINTS-specific content from libreshop/shop so it stands as a clean reference example anyone can copy.

Why

Per the pivot ADR, libreshop/shop is now a public reference. Having MUELLERPRINTS hardcoded means new readers see a mp-specific shop and can't tell what's structural vs branded. The reference becomes much more valuable when brand-neutral.

Inventory of brand leakage (from earlier feasibility analysis)

  • 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 — "MUELLERPRINTS. Paperwork" logo + "Über MUELLERPRINTS" description
  • components/Footer.vue:10,83 — footer brand block (2 lines)
  • pages/details/[slug].vue:41–42 — schema.org with paperwork-logo URL
  • server/api/contact.post.ts:30,41 — to-address paperwork@muellerprints.de + body text
  • server/api/__sitemap__/urls.ts:50 — sitemap fallback
  • All 11 page files — useSeoMeta titles with "MUELLERPRINTS"
  • composables/usePageContent.ts:37–106 — Stuttgart address, phone, email, copyright (287 lines hardcoded)
  • composables/useProductContent.ts:1–369 — VIVUS 89, FSC C018175, hardcover/softcover Stuttgart claims, Fadenheftung narratives
  • pages/checkout/result/[uuid].vue:22,38,102 — order confirmation MP emails

Replacement strategy

Replace each occurrence with plausible neutral example content, not Lorem. The reference should be deployable as-is and look like a real (fictional) shop, e.g.:

  • Brand: BLANKBOOK (placeholder name)
  • Tagline: Notebooks made by hand
  • Domain: blankbook.example
  • Email: hello@blankbook.example
  • Address: Beispielstraße 1, 12345 Musterstadt
  • VAT: DE 000000000
  • Hours: Mo – Fr 9.00 – 17.00
  • Logo: simple text-based fallback or a placeholder SVG (no client artwork)
  • Paper: Premium Recycled 90 g/m² (generic)
  • Cert claims: drop FSC numbers, replace with "FSC-certified, environmentally friendly"

Acceptance

  • No occurrence of "MUELLERPRINTS", "Paperwork", "Stuttgart", "Rotenberg", "Müller", "muellerprints@t-online.de", paperwork@muellerprints.de, +49 (0)711 / 262, DE 147595459, VIVUS 89, FSC® C018175 in repo
  • CI step that fails if any of the above strings reappear (grep regression test)
  • Bare docker run libreshop/shop:vX.Y.Z still produces a deployable demo shop with the placeholder brand

Out of scope

  • Notebook-specific product schema (binding/cover/ruling) — stays. Reference is opinionated about being a notebook shop. Generic-product abstraction is a separate (deferred) concern.
Part of https://git.librete.ch/libreshop/shop/issues/10 ## Goal Final brand-strip pass: remove all MUELLERPRINTS-specific content from libreshop/shop so it stands as a clean reference example anyone can copy. ## Why Per the pivot ADR, libreshop/shop is now a public reference. Having MUELLERPRINTS hardcoded means new readers see a mp-specific shop and can't tell what's structural vs branded. The reference becomes much more valuable when brand-neutral. ## Inventory of brand leakage (from earlier feasibility analysis) - `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` — "MUELLERPRINTS. Paperwork" logo + "Über MUELLERPRINTS" description - `components/Footer.vue:10,83` — footer brand block (2 lines) - `pages/details/[slug].vue:41–42` — schema.org with paperwork-logo URL - `server/api/contact.post.ts:30,41` — to-address `paperwork@muellerprints.de` + body text - `server/api/__sitemap__/urls.ts:50` — sitemap fallback - All 11 page files — `useSeoMeta` titles with "MUELLERPRINTS" - `composables/usePageContent.ts:37–106` — Stuttgart address, phone, email, copyright (287 lines hardcoded) - `composables/useProductContent.ts:1–369` — VIVUS 89, FSC C018175, hardcover/softcover Stuttgart claims, Fadenheftung narratives - `pages/checkout/result/[uuid].vue:22,38,102` — order confirmation MP emails ## Replacement strategy Replace each occurrence with **plausible neutral example content**, not Lorem. The reference should be deployable as-is and look like a real (fictional) shop, e.g.: - Brand: `BLANKBOOK` (placeholder name) - Tagline: `Notebooks made by hand` - Domain: `blankbook.example` - Email: `hello@blankbook.example` - Address: `Beispielstraße 1, 12345 Musterstadt` - VAT: `DE 000000000` - Hours: `Mo – Fr 9.00 – 17.00` - Logo: simple text-based fallback or a placeholder SVG (no client artwork) - Paper: `Premium Recycled 90 g/m²` (generic) - Cert claims: drop FSC numbers, replace with "FSC-certified, environmentally friendly" ## Acceptance - [ ] No occurrence of "MUELLERPRINTS", "Paperwork", "Stuttgart", "Rotenberg", "Müller", "muellerprints@t-online.de", `paperwork@muellerprints.de`, `+49 (0)711 / 262`, `DE 147595459`, `VIVUS 89`, `FSC® C018175` in repo - [ ] CI step that fails if any of the above strings reappear (grep regression test) - [ ] Bare `docker run libreshop/shop:vX.Y.Z` still produces a deployable demo shop with the placeholder brand ## Out of scope - Notebook-specific product schema (binding/cover/ruling) — stays. Reference is opinionated about being a notebook shop. Generic-product abstraction is a separate (deferred) concern.
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: libreshop/shop#11
No description provided.