A proof of concept “remote-sign on desktop” bridge so a mobile dApp can charge even though CIP-30 wallets live in the browser.
Developing decentralized applications (dApps) in the Cardano ecosystem often faces friction due to wallet availability and integration. Unlike Ethereum, which has a rich mobile wallet SDK ecosystem, Cardano primarily exposes wallets via CIP-30 browser extensions (Nami, Eternl, Lace, etc.).
This creates a few big problems for developers and users:
-
No native mobile support On mobile, there’s no
window.cardanocontext. That means a React Native or Expo app cannot directly integrate with wallets. Users are forced to switch to a desktop browser to complete transactions. -
Broken UX for payments If a mobile app needs to accept ADA payments, the user has to leave the app and manually handle the payment in a separate wallet UI. This is confusing and leads to drop-offs.
-
Lack of real-time payment tracking Current dApps often don’t provide a smooth, real-time update experience for payments. A user clicks “Pay”, but doesn’t see immediate state changes like submitted → confirmed unless they refresh.
-
Developer fragmentation Developers end up re-implementing wallet logic, QR flows, or ad-hoc APIs just to bridge mobile ↔ desktop. This wastes time and makes solutions brittle.
CardanoPay was built as a Proof of Concept (PoC) to solve these issues and improve developer & user experience:
-
Mobile-first payment intents The Expo mobile app allows users to generate a “payment intent” (with ADA amount + metadata) without needing direct wallet access.
-
PIN + desktop bridge flow The mobile app shows a short code (PIN). The user enters this into the web app on desktop, where CIP-30 wallets are available. This pairs the sessions securely.
-
JWT-authenticated desktop sessions A short-lived JWT ensures only the paired desktop can act on behalf of the mobile intent. This makes the bridge safe and traceable.
-
Realtime status updates Socket.io ensures both mobile and web stay in sync:
created → paired → awaiting_payment → submitted → confirmed. -
Backend with persistence Express + MongoDB Atlas persist the payment state so both devices see consistent history.
- One codebase → multiple channels: Backend (Express + MongoDB), Mobile (Expo React Native), Web (Vite + React).
- Clear state machine for payments: Developers can extend statuses, add business logic, or integrate Cardano off-chain SDKs.
- SDK-ready architecture: The modular design means this PoC can evolve into a CardanoPay SDK later.