Skip to content

Repository files navigation

MuscleZone Pricetag Generator

Internes Tool zum Erstellen von Preisschildern für einen Fitness-Supplement-Store. Es ist die saubere Neuauflage einer älteren PHP/HTML-App: gleiche Bedienlogik, aber moderner Stack und klare Trennung von Daten und Sicherheit.

Tech Stack

  • Next.js 16 (App Router, proxy.ts statt Middleware) + React 19 + TypeScript
  • Tailwind CSS v4
  • Supabase Postgres (Daten) + Supabase Auth (Login)
  • Vercel Deployment
  • helloCash-Sync nur serverseitig (read-only)

Lokale Einrichtung

npm install
cp .env.example .env.local   # Werte eintragen
npm run dev                  # http://localhost:3000
npm run build                # Produktionsbuild / Typecheck

Benötigte Env Vars

Siehe .env.example. Kurzfassung:

Variable Sichtbarkeit Zweck
NEXT_PUBLIC_SUPABASE_URL Client Supabase-Projekt-URL
NEXT_PUBLIC_SUPABASE_ANON_KEY Client Anon-Key (RLS schützt die Daten)
SUPABASE_SECRET_KEY nur Server Service-Role-Key (Admin-Client, Sync, Import)
HELLOCASH_API_TOKEN nur Server helloCash API-Token (nur lesen)
HELLOCASH_API_BASE_URL Server Basis-URL der helloCash-API

Der Code akzeptiert auch NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY als alternativen Namen.

Datenbank

Migrationen liegen in supabase/migrations/ (additiv, nicht-destruktiv):

Tabelle / View Rolle
products Quell-Spiegel von helloCash (vom Sync gepflegt)
product_overrides Lokale Änderungen im Tool – Vorrang vor Quelldaten
categories Kategorien
sync_cache Hash je externem Artikel für inkrementellen Sync
sync_runs Sync-Protokoll (created/updated/unchanged/skipped)
label_settings Layout/Schrift/Abstände der Preisschilder
label_selection_sets / _items Gespeicherte Auswahl-Sets (optional)
effective_products (View) Override-gewinnt-Merge für UI & Etiketten

Effektive Werte: override ?? source für Name, Preis, Kategorie, EAN; Icon kommt nur aus dem Override.

Skripte

npx tsx scripts/import-legacy-data.ts           # Legacy data.json -> Supabase
npx tsx scripts/backfill-overrides.ts --dry-run # Edits -> product_overrides

Sync-Regeln (helloCash)

  • helloCash wird ausschließlich gelesen – nie zurückgeschrieben.
  • Lokale Overrides werden vom Sync nie überschrieben.
  • Unveränderte Artikel (gleicher Payload-Hash) werden übersprungen.
  • Verschwundene Artikel werden als active = false markiert, nicht gelöscht.
  • Jeder Lauf protokolliert created/updated/unchanged/skipped in sync_runs.

Ausgelöst über POST /api/hellocash/sync (Auth erforderlich) bzw. die /sync-Seite.

Seiten

Route Zugang Inhalt
/login öffentlich Anmeldung
/products Login Produktliste (effektive Daten, „lokal geändert“-Badge)
/products/[id] Login Original vs. lokale Werte, Override bearbeiten/zurücksetzen
/labels Login Auswahl mit Hervorhebung + A4-Druckbogen
/settings Login Etiketten-Einstellungen
/sync Login Sync auslösen + Historie

Auth ist aktuell deaktiviertsrc/proxy.ts lässt alle Anfragen durch. Zum Reaktivieren muss dort die Supabase-Session-Prüfung wieder eingebaut werden.

Sicherheitsregeln

  • Niemals committen: .env, .env.local, legacy/, node_modules/, .next/, SUPABASE_SECRET_KEY, HELLOCASH_API_TOKEN.
  • Secret/Service-Role-Key und helloCash-Token bleiben serverseitig.
  • Client-Code sieht nur NEXT_PUBLIC_SUPABASE_URL und NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY.

About

Preisschildgenerator von Gains 1210

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages