Skip to content
maybemnvPublic

About

Facial recognition-powered event photo distribution. Organizers upload photos once; attendees take a selfie and get a personalized gallery in under 5 seconds.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

GrabPic

Event photo distribution with consented selfie matching. Organizers upload photos once; attendees receive an event-scoped personalized gallery.

Deployment architecture

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
Loading

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.

Local development and verification

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 ml

CI 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.

Structure

  • apps/web: Next.js organizer and attendee pages
  • apps/api: Hono Worker, Queue consumer, Convex functions
  • ml: pinned CPU processor and persistent job API
  • functions/e/[code].ts: Pages invite redirect
  • deploy/oci: Nginx and systemd examples
  • packages/types: shared contracts
  • tests: deterministic contracts and opt-in infrastructure tests

MIT

About

Facial recognition-powered event photo distribution. Organizers upload photos once; attendees take a selfie and get a personalized gallery in under 5 seconds.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages