Skip to content

Add Map Point photos - #384

Draft
KacperKozak wants to merge 1 commit into
devfrom
photo-assets
Draft

Add Map Point photos#384
KacperKozak wants to merge 1 commit into
devfrom
photo-assets

Conversation

@KacperKozak

@KacperKozak KacperKozak commented Aug 18, 2026

Copy link
Copy Markdown
Collaborator

Map Point photos become durable Hosted Assets. The phone normalizes and uploads them natively, owners attach them to server-owned Map Points, and signed-out readers receive bounded public images. Transfer state remains reliable across offline periods, process death, sign-out, and Account changes.

Warning

Risk: High. This adds native media processing, authenticated uploads, durable retry and delete jobs, and server attachment state.
Complexity: High. It coordinates iOS and Android normalization, Asset identity, Map Point attachment, and background lifecycle.
DB: Schema and data. It adds durable Asset jobs and normalized local files. The parked Map Point media prototype needs no migration because it never shipped enabled.

Tasks

Blocked by

  • vescape-app/vescape-server#33

Description

Photos picked or captured on-device pass through one native pipeline. It applies orientation, strips metadata including GPS, limits dimensions without upscaling, and produces WebP with JPEG fallback. A client-generated UUID identifies each Asset before the first upload, so an ambiguous retry addresses the same Asset instead of creating an unknown orphan.

Native owns normalized files, remote identity, retry policy, and deletion through a durable job queue. JS renders state and sends intents. Map Point owners can add, remove, replace, and retry photos while public readers receive bounded server-resized images.

Map Points remain server-owned. Upload and attachment use their own Asset and Map Point endpoints. If upload succeeds but attachment fails, native retries with the Asset ID it already holds and does not upload the bytes again.

@KacperKozak KacperKozak added area:assets Hosted media, image normalization, upload state, and remote Asset references area:native Touches native side (modules/vesc-ble, Swift/Kotlin) area:db Touches database / persistent storage area:server Vescape backend APIs, relay behavior, server policy, and deployment-facing contracts area:sync Backup sync — native uploader, Sync Cursors, Sync Actions, Device Token area:auth Clerk sessions, native credentials, and endpoint caller policy area:map Maps, routes, GPS display area:history Ride history, sessions, buckets, graphs complexity:high Critical paths, subtle correctness, native pipelines. Use opus. labels Aug 19, 2026
@KacperKozak KacperKozak changed the title Add photo assets Add Map Point photos Aug 27, 2026
@KacperKozak KacperKozak mentioned this pull request Aug 27, 2026
16 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:assets Hosted media, image normalization, upload state, and remote Asset references area:auth Clerk sessions, native credentials, and endpoint caller policy area:db Touches database / persistent storage area:history Ride history, sessions, buckets, graphs area:map Maps, routes, GPS display area:native Touches native side (modules/vesc-ble, Swift/Kotlin) area:server Vescape backend APIs, relay behavior, server policy, and deployment-facing contracts area:sync Backup sync — native uploader, Sync Cursors, Sync Actions, Device Token complexity:high Critical paths, subtle correctness, native pipelines. Use opus.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant