Shopify Custom App · CRM

PRX Fotobuch CRM

Shopify-embedded App zur Verwaltung von Fotobuch-Bestellungen — Orders-Dashboard, Foto-Viewer, asynchrones Upload-System und Production Gate in einem Tool.

Live App · Shopify Admin
FotobandCRM Orders Dashboard
📋

Orders Dashboard

Alle Fotobuch-Bestellungen auf einen Blick — Kunde, Bestellnummer, Reiseziel, Jahr, Cover-Stil, Bildanzahl, Upload-Status. Direkt im Shopify Admin.

🖼️

Foto-Viewer + ZIP-Download

Pro Bestellung alle hochgeladenen Kundenbio-Fotos einsehbar, einzeln vorschaubar und als ZIP-Archiv herunterladbar für die Produktion.

⚙️

Background Upload Worker

Async-Jobsystem mit Manifest-basiertem Tracking. Jedes Foto durchläuft queued → uploading → verifying → completed. Idempotent, retry-fähig.

🔒

Production Gate

Bestellung geht erst in Produktion wenn alle Fotos vollständig hochgeladen und verifiziert sind. Verhindert unvollständige Druckaufträge.

Async Upload-Pipeline mit Job-Status-Tracking

Jeder Foto-Upload läuft als persistenter Job durch eine 6-stufige State Machine. Magic-Byte-Validierung + HMAC-gesignter Image-Proxy für Sicherheit.

queued
Job angelegt,
wartet
uploading
Transfer zu
Uploadcare CDN
🔍
verifying
Magic Bytes +
SHA-256 Check
completed
Production
Gate frei
failed
Auto-retry
max. N mal
quarantined
Manueller
Review
api.upload.production-gate.ts
// Production Gate: Freigabe nur wenn alle Fotos vollständig sind export async function isReadyForProduction(manifestId: string) { const job = await getUploadJobByManifestId(manifestId); if (!job) return false; const allDone = job.totalFiles === job.uploadedFiles; const noFailures = job.failedFiles === 0; const noQuarantine = job.quarantinedFiles === 0; return allDone && noFailures && noQuarantine; }

Warum das zählt: Ein Fotoband der mit fehlenden Bildern in den Druck geht ist ein teurer Fehler. Das Production Gate macht das systemisch unmöglich — nicht durch Prozess, sondern durch Code.

6
Upload-Status-
States
10+
API-Endpoints
für Upload-Flow
1
PostgreSQL DB
via Prisma
0
Druckfehler durch
unvollst. Uploads