Skip to content

Connect native Rides to the hosted Convex backend - #3

Merged
capy-ai-staging[bot] merged 1 commit into
mainfrom
landseer/convex-rides
Oct 19, 2026
Merged

capy-ai-staging[bot] merged 1 commit into
mainfrom
landseer/convex-rides

Conversation

@Landseer100

Copy link
Copy Markdown
Contributor

Depends on #2; this PR contains only the hosted-backend follow-up. Neither PR has been merged.

Hosted rides

Deploy the transactional ride service to the existing landseer-enga/uber-clone production deployment at https://harmless-mammoth-742.convex.cloud. Store room-scoped participants, SHA-256 credential hashes, trips and messages in indexed Convex tables; enforce exclusive acceptance, state transitions, idempotent bookings, authoritative demo fares, expiry and bounded history. No project was replaced or deleted, and no admin token is committed or bundled.

Use pinned ConvexMobile 0.8.1 mutations and live subscriptions in the native app, with foreground cancellation/reconnection, Keychain restoration, expired-session recovery and receipt focus after restoring an active trip. Prefill the hosted URL and conceal private invitations until explicitly requested. Keep the optional HTTP/SQLite transport and all Eats code/configuration intact. Build on Apple Silicon because this SDK does not ship Intel binaries.

Verification

  • Backend: 45 tests, TypeScript checking and npm audit pass.
  • Actual production deployment: live subscription delivery, concurrent exclusive acceptance, booking idempotency/conflicts, two-way chat, arrival/start/completion, rating/tips, cancellation, isolation and independent-client persistence pass.
  • Native SDK build: Debug/Release core tests and arm64 simulator build pass; two phones exercised request/accept/chat/arrival/start/completion and cold-launch active-trip restoration against Convex. Final simulator CI and the updated Rides-only hosted request/cancellation proof run on this PR.
  • Six Revyl-isolation tests and connected Rides configuration validation pass. Rides manual policy is published independently; the root Eats policy was not overwritten.

This remains a functional private-room demo, not production identity, maps/GPS, real dispatch or payment processing. Rooms authorize access for 24 hours; expiry is not automatic data deletion. See docs/RIDES.md and docs/RIDES_VERIFICATION.md for setup and evidence boundaries.

Native hosted connection with private invitation concealed

Open in Capy

Co-authored-by: capy-ai-staging[bot] <305915985+capy-ai-staging[bot]@users.noreply.github.com>
@revyl

revyl Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

Preview builds Revyl

dc03df4c

Project: apps/rides

Managed via apps/rides/.revyl/config.yaml (config-as-code).

Build Target Status Details Updated (UTC)
Uber Rides Demo iOS (iOS) 🟩 Ready · 2m 06s Open preview · View logs 2026-10-19 18:25

Proof of changes

Target Status Details Updated (UTC)
Uber Rides Demo iOS (iOS) 🟩 Ready View proof logs 2026-10-19 18:36

Findings

🟩 No defects found in the exercised changes.

Revyl Open this build in Atlas →
Explore screenshots, findings, and resolution history.

iOS · Uber Rides Demo iOS

Verification confidence · 3/5

exercised the core single-rider hosted connection, request, cancellation, history, and post-cancellation navigation; a second joined driver and server/test tooling were unavailable for paired lifecycle and server-only guarantees.

What this proof covered

Change Result
Hosted Convex connection and private invitations Demo connection prefilled https://harmless-mammoth-742.convex.cloud; creating a rider room reached a live demo and kept the invitation hidden until explicitly requested.
Live rider request An offline catalog destination, UberX, and Demo Visa label produced Finding your ride; it explicitly said the offline driver would not accept automatically.
Hosted cancellation/history Cancelling the requested trip showed no cancellation fee / no payment collected and Activity persisted a $0.00 · Cancelled entry.
Rides shell after cancellation Home, Services, Activity, and Account remained available; Wallet and Saved places opened with demo-only data.

Out of reach

  • Driver join/online state, exclusive acceptance, two-way chat, arrival, start, completion, receipt, rating, and tip require a second Rides phone joined to this private room; this run had one device only.
  • Foreground reconnection, expired-session recovery, and restored active-trip receipt focus require a controlled disconnected/expired or persisted-active-trip state that this single fresh-device run could not create through the app.
  • Convex table/index enforcement, credential hashing, booking idempotency/conflicts, fare authority, expiry, bounded history, and isolation are backend-only behaviors with no visible one-phone route; the backend dependencies and Apple/Swift toolchain were not installed, so no test suite was run.
  • Apple-Silicon simulator build configuration and ConvexMobile unit tests are build-time behaviors; swift and xcodebuild were unavailable in this environment.

To make this provable

  • Provide a second concurrently usable Rides iOS device, joined to the newly created private room as Driver, to drive the paired lifecycle and chat.
  • Provide a preview control to expire/disconnect a room and a fixture with a persisted active trip, or a supported device-network/background-state control, to verify recovery and focus behavior.
  • Provide the installed services/ride-convex/node_modules toolchain and an Apple-Silicon Xcode/Swift runner to execute the backend and native test/build commands.
What we exercised

Exercised the hosted Convex rider flow on iPhone 17 Pro Max (iOS 27.0) using build 5bde5d9f-4ee7-4303-83a1-88a1af03d371 at app commit dc03df4. Pass: the build prefilled the hosted backend, created a private rider room, showed a live connection, requested a ride without inventing an acceptance, and recorded cancellation at $0.00; no user-visible defect was observed in the exercised flow.


iOS · Uber Rides Demo iOS · Evidence

Revyl Full step-by-step report and session video — session d24dd7cb-2653-4eaa-86de-9e7566b2b95e

Demo connection screen with the Convex URL prefilled
Hosted connection
Created rider room with a Show private invitation control and no code visible
Private room
Finding your ride state says the demo driver is offline and request will not be accepted automatically
Requested trip
Cancelled ride confirmation showing no payment and a zero dollar total
Zero-charge cancellation
Activity history displaying the cancelled Jo's Coffee trip at zero dollars
Cancelled history
Wallet screen showing demo balance and test payment methods only
Demo wallet

Captured by Revyl · See how Revyl works →

@capy-ai-staging
capy-ai-staging Bot changed the base branch from landseer/rides-demo to main October 19, 2026 19:47
@capy-ai-staging
capy-ai-staging Bot merged commit cfe572b into main Oct 19, 2026
7 of 8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant