Working prototype · built for Hugo

Project Lens

The camera-to-cloud flow from your spec, running end to end. Take a real photo, tag it, send it, and find it again in Gallery, Timeline and Tags. A backend inspector lists the API calls and R2 object keys behind every tap.

React Native / Expo Fastify PostgreSQL Cloudflare R2 RevenueCat
9:41Project Lens · MVPLTE · 82%

Camera

Capture, tag, upload
iPhone 15 · iOS 18expo-camera

Backend inspector

Every tap in the prototype, as the API would see it

Read this as the contract, not the plumbing. In the shipped build these same call sites hit Fastify and Cloudflare R2. Here the network hop is simulated on-device so you can open the link and use it without an account.

Spec coverage

Your deliverables, checked against this build

Storage layout

Key scheme and row shape used by the upload path

Bucket
project-lens-prod
Object
photos/YYYY/MM/<photo_id>.jpg
Thumb
thumbs/YYYY/MM/<photo_id>_480.jpg
Row
photos(id, project_id, r2_key, width, height, bytes, note, captured_at)
Join
photo_tags(photo_id, tag_id)
Entitlement
pro · RevenueCat