feat(shopping): loyalty-card modal with build-time barcodes

Adds a CreditCard button on the shopping list that opens a modal
showing the user's Coop Supercard (Data Matrix) and Migros Cumulus
(Code 128). Card numbers come from SHOPPING_COOP_SUPERCARD_NUMBER
and SHOPPING_MIGROS_CUMULUS_NUMBER env vars; a prebuild script
renders each to an SVG (~1-2 kB) in static/shopping/ so no barcode
library ships to the client. Cards missing their env var are
silently skipped, and the generated SVGs are gitignored to keep
personal numbers out of the repo.
This commit is contained in:
2026-04-23 16:21:15 +02:00
parent a8b0d3c722
commit 0ab98690eb
7 changed files with 261 additions and 4 deletions
+3
View File
@@ -12,6 +12,9 @@ vite.config.js.timestamp-*
vite.config.ts.timestamp-*
# USDA bulk data downloads (regenerated by scripts/import-usda-nutrition.ts)
data/usda/
# Loyalty-card barcodes (regenerated by scripts/generate-loyalty-cards.ts from env)
static/shopping/supercard.svg
static/shopping/cumulus.svg
src-tauri/target/
src-tauri/*.keystore
# Android: ignore build output and caches, track source files