2.4 KiB
2.4 KiB
tga-shop — PMPNZNG Storefront (Astro)
Astro-Konvertierung des PMPNZNG-Merch-Mockups. Phase „Mockup-Port" — statische
Ausgabe aus lokalen Produktdaten. Später wird die Produkt-/Bestell-/Checkout-Schicht
durch ein Medusa-v2-Backend + Stripe ersetzt (siehe ../ARCHITEKTUR-UND-PLAN.md).
Stack
- Astro 5 (output:
static) — kein Framework-Overhead, Vanilla-JS-Inseln. - Vanilla CSS mit Design-Tokens (
src/styles/global.css, aus dem Mockup übernommen). - Client-JS (
public/shop.js): Warenkorb (localStorage), Passwort-Gate, Toasts, Galerie, Größenwahl, Mobile-Menü, Instagram-Kacheln.
Entwickeln
npm install
npm run dev # http://localhost:4321
npm run build # → dist/ (statisch)
npm run preview
Passwort-Vorschau: Die Seite ist per Gate geschützt. Passwort:
Hoyaaa(inpublic/shop.js, KonstantePASS_WORD). Vor Go-live entfernen oder serverseitig lösen.
Struktur
src/
├── data/products.ts # EINZIGE Produkt-Quelle (Medusa-ersetzbar; Preis in Cent)
├── layouts/Base.astro # Head, Header/Nav, Marquee, Footer, JSON-LD, Script-Injektion
├── pages/
│ ├── index.astro # Startseite (aus Mockup portiert)
│ ├── shop.astro # Katalog (aus Mockup portiert)
│ ├── produkt/[slug].astro# Produktdetail (datengetrieben aus products.ts)
│ ├── produkt/online-workshop.astro # Digitalprodukt (bespoke Seite)
│ ├── warenkorb · checkout · bestellung-erfolgreich
│ └── ueber-uns · faq · impressum · datenschutz
└── styles/global.css # Design-System (Tokens → Reset → Components)
public/
├── shop.js # Client-Logik (Vanilla)
└── product-images/ # Produktfotos + freigestellte PNGs + Insta
Bekannte To-dos (Mockup-Port → Produktiv)
- Checkout ist simuliert (leert nur den Warenkorb). → Stripe via Medusa anbinden.
- Produktdaten liegen lokal in
products.ts. → durch Medusa-API ersetzen (Schema ist bereits nah an Medusa:priceCents,sizes=Varianten,productType). - Recht: AGB & Widerruf fehlen noch (nur Impressum/Datenschutz aus Mockup).
- Design wird separat überarbeitet (Tokens in
global.css→ OKLCH-Migration möglich). - Passwort-Gate vor Launch entfernen.
- Beim Medusa-Anschluss: Node-Adapter +
output: 'server'inastro.config.mjs.