🏗️Monorepopnpm + Turborepo with three Fastify APIs and two Next.js 15 frontends, sharing packages for auth, DB, and config.
📸Photo PipelinePhotographers upload via presigned R2 URLs. BullMQ workers generate thumbnails, watermarks, and run face recognition automatically.
🧠Face RecognitionAWS Rekognition matches uploaded selfies to project photos. Confidence thresholds drive auto-tagging with a manual review queue.
💳PurchasesEnd users buy photo packages via Stripe. Watermarked previews are shown until purchase; originals are delivered via presigned download URLs.
🔐Biometric ConsentNo selfie processing without active consent. Revocation cascades atomically — Rekognition, R2, and all auto-tags are cleaned up.
☁️Cloud-nativeCloudflare R2 for storage, AWS Rekognition for faces, Resend for email, Redis + BullMQ for the job queue.