Browse⌘K
tsfeatured.ts
tsxrippay.tsx
tsxrippay.tsx

RipPay — Self-Custody XRPL Checkout

2025live

In-person tap-to-pay checkout that keeps the private key on a Ledger Nano X. NFC loads a session, buyer signs on hardware, XRPL settles on-chain — merchant sees live confirmation.

RipPay — Self-Custody XRPL Checkout

Story

The thesis: NFC tap-to-pay UX without giving up self-custody. Most crypto checkout flows either hand over a key or trust a hot wallet. RipPay keeps the private key on a Ledger Nano X — the buyer reviews and approves the transaction on the hardware device, and only the signed blob comes back to the app.

A monorepo: an iOS buyer app, a merchant web app + backend, an Android HCE spike, and a shared package of canonical session types so every client agrees on the same state machine. SessionStatus is the contract: every component reads and writes against the same set of transitions.

The merchant sees live confirmation via Server-Sent Events as the transaction moves through `AWAITING_BUYER → AWAITING_SIGNATURE → SUBMITTED → VALIDATING → PAID`. Failure and expiry states are first-class — sessions auto-cancel after 24 hours.

What I built

  • 1Designed the canonical SessionStatus state machine (CREATED → AWAITING_BUYER → AWAITING_SIGNATURE → SUBMITTED → VALIDATING → PAID / FAILED / EXPIRED)
  • 2Built the iOS buyer app with NFC tag handling and Ledger Nano X signing integration
  • 3Built the merchant web app + backend with Server-Sent Events for live transaction status
  • 4Spiked Android Host Card Emulation as an alternative initiation path; documented iOS NFC limitations

Tech

React Native (iOS)Next.jsXRPLLedger Nano XTypeScriptNFCAndroid HCESSE

Links

DevpostGitHub repo

Up Next

● open to SWE roles·rippay.tsx·UTF-8·github: …
·resume·contact··