Dorian 15c951c2a0 feat: shop 4-section category banners + brand-feedback pass
Shop page rebuilt into four brand colour-coded use-group sections (Küche/lime,
Reinigung/grapefruit, Wäsche/plum, Pflege/care/orange): colour banners with diagonal
dividers, per-section grid titles, crimson 'add to cart' + white-outline 'learn more'
CTAs, plain-name eyebrows, first-fold halved + thin white band. Split old Haushalt
group into clean+wash.

Also in this checkpoint (brand-owner feedback items):
- L11: Kaiser-Natron® on every visible mention, hyphenated (de+en, products, logo, nav)
- L4: product-hero headline reworded to the brand versatility voice
- L5/L6: faint 'AI Edited' badge on AI bundle images (data-driven aiEdited flag)
- L10: Revitalization animation row + early-access CTA removed
- U2: membership 'become a member' button removed
- New category tokens (cat-kitchen/clean/wash/care) + Hero/WaveDivider tones
- New /kueche category page (route + copy) — not yet linked (see STYLE-CHANGES caveat)
- Homepage reverted to original ProductTeaser (banners belong on /shop)

dist/ rebuilt and included for the Portainer/gitea deploy. Open decisions tracked
in STYLE-CHANGES.md §20 and memory.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 12:35:52 +01:00
2026-05-26 13:26:36 -05:00
2026-04-19 15:09:27 +01:00
2026-04-19 15:09:27 +01:00
2026-04-19 15:09:27 +01:00
2026-04-21 11:27:25 +01:00
2026-04-19 15:09:27 +01:00
2026-04-19 15:09:27 +01:00

Kaiser Natron

Ecommerce frontend. Vue 3 + Vite + Tailwind v4. Backend (PHP / MySQL, Stripe for payments) is plugged in at the src/api/ boundary.

Setup

npm ci
npm run dev

Design system

Everything visual lives in src/design-system/:

  • tokens/ — color, typography, spacing, radius (CSS custom properties consumed by Tailwind v4's @theme)
  • primitives/ — atomic components (Button, Input, Badge, Stack)
  • patterns/ — composed components (ProductCard, etc.)

Browse the full system at /design when running npm run dev. This is the single source of truth — new UI composes these, never one-off styling.

API boundary

src/api/ exposes a typed surface the backend dev fills in. Until then, fixtures in src/api/ drive the UI so frontend work is unblocked.

Endpoint specs for backend integration live under docs/api/:

  • docs/api/cart.md — cart endpoints, types, error codes, and how to swap the local implementation for HTTP.
  • docs/api/checkout.md — Stripe handoff: PaymentIntent creation, client-side confirmation, and the webhook that finalises the order.
  • docs/api/orders.md — order lookup and customer order history.
  • docs/api/customers.md — account, login, and address endpoints used by the checkout and account pages.

Supply chain

All dep versions are pinned exactly (no ^/~). Use npm ci (not npm install) in CI and before builds. Run npm audit before adding any new dep.

Deployment (Portainer dev-showcase stack)

This is the showcase path, not real production — the dev machine is the source of truth for the built output. The container has no build step: it just copies a prebuilt dist/ into nginx.

Release flow:

npm run build          # produces /dist
git add dist && git commit -m "build: <what changed>"
git push

Then in Portainer → StacksPull and redeploy. The site comes up on host port 5555 (/health returns 200 ok).

Base image: nginx:1.27.3-alpine (pinned). When this graduates to real production, reintroduce the multi-stage Node build + the hardening (read_only, security_opt, resource caps) that lived in earlier revisions of this file.

Description
No description provided
Readme 86 MiB
Languages
Vue 54.3%
HTML 28.5%
JavaScript 12%
Python 3.3%
CSS 1.8%
Other 0.1%