Event photo distribution with consented selfie matching. Organizers upload photos once; attendees receive an event-scoped personalized gallery.
flowchart LR
Pages[Cloudflare Pages] --> Worker[Worker / Hono API]
Worker --> Convex
Worker --> R2
Worker --> Queue[Cloudflare Queue]
Queue --> OCI[OCI CPU processor]
OCI --> R2
OCI -->|authenticated callbacks| Worker
Cloudflare Pages serves a static Next.js export and an invite redirect Function. The Worker remains the only public application API. The processor runs FastAPI behind Nginx on OCI and never receives Convex credentials. The selfie and batch paths use the same pinned FaceNet weights. An E2.1.Micro VM is unproven for the under-five-second matching target, so a measured staging gate is mandatory.
Deployment progress (2026-10-16 IST): Convex and Worker preview database health are verified; R2 credential checks passed. OCI setup, Pages deployment, queue/cron activation, and measured staging acceptance remain open. See the verified deployment snapshot and progress checklist before resuming deployment.
pnpm install --frozen-lockfile
pnpm --filter @grabpic/api convex:dev
pnpm --filter @grabpic/api dev
pnpm --filter @grabpic/web dev
pnpm lint
pnpm build
pnpm vitest run
python -m unittest ml/test_processor.py ml/test_server.py
python -m compileall -q mlCI runs the build, type checks, deterministic contracts, and processor tests without model inference or deployed services. The six API, processing, throughput, and north-star suites skip unless RUN_REAL_INFRA_TESTS=1 and API_BASE_URL are set. A green CI run therefore does not verify the deployed upload-to-gallery flow, face matching quality, or the five-second target. See deployment for the real-stack staging gate and go-live requirements.
apps/web: Next.js organizer and attendee pagesapps/api: Hono Worker, Queue consumer, Convex functionsml: pinned CPU processor and persistent job APIfunctions/e/[code].ts: Pages invite redirectdeploy/oci: Nginx and systemd examplespackages/types: shared contractstests: deterministic contracts and opt-in infrastructure tests