Skip to content

goodness-cpu/ding-payments

 
 

Repository files navigation

Welcome to your Expo app 👋

Ding Payments — Mobile Client MVP

This repository contains the core React Native application built with Expo Router and the Soroban Smart Contract SDK for the Ding Payments network.

🛠 Prerequisites

  • Node.js: v18 or later
  • Package Manager: npm
  • Development Target: Physical iOS or Android device (required for NFC, passkeys, and SecureStore biometrics); simulator/emulator for UI-only work

⚠️ Native Framework Limitation: This application leverages advanced hardware integrations including NFC capabilities and Passkey WebAuthn modules. These features cannot execute inside standard Expo Go. You must use an Expo Development Build (EAS Development Build) to validate NFC, passkeys, and SecureStore functionality on physical devices.

🚀 Local Development Setup

  1. Clone the Repository & Fetch Dependencies

    npm install
  2. Build requirements for native features

    • NFC and passkey research require an Expo development build or custom native runtime.
    • Run npx expo prebuild and npx expo run:android / npx expo run:ios for device validation.
    • Use npm run dev-client to launch a dev-client session after native dependencies are installed.

EAS Development Build

  1. Install and authenticate EAS CLI

    npm install -g eas-cli
    eas login

    On first setup, link the project with eas init. Build profiles live in eas.json (development, preview, production).

  2. Create a development build

    npm run dev:build:android
    # or
    npm run dev:build:ios

    Install the resulting build on a physical device (.apk on Android; iOS via internal distribution or TestFlight).

  3. Start the dev client

    npm run dev-client

    This runs expo start --dev-client and connects the installed development build to Metro.

  4. Native rebuild required Rebuild and reinstall the development build after changes to:

    • app.config.ts plugins, permissions, or entitlements
    • native dependencies (for example expo-dev-client, expo-secure-store, react-native-nfc-manager, react-native-passkey)

    JavaScript-only changes do not require a native rebuild.

  5. Expo Go limitations Do not use Expo Go to validate NFC, passkeys, or SecureStore with biometric authentication. These flows require a development build with expo-dev-client.

  6. Simulator vs physical device

    Feature Simulator / emulator Physical device
    General UI / routing Yes Yes
    NFC No Yes (required)
    Passkeys Limited / unreliable Yes (required)
    SecureStore + biometrics Limited Yes (required)

    Use a physical device for native capability smoke tests, including the /c05 spike page.

C05 Spike documentation

This is an Expo project created with create-expo-app.

Get started

  1. Install dependencies

    npm install
  2. Start the app

    npx expo start

    For NFC, passkeys, and SecureStore testing, use npm run dev-client (expo start --dev-client) with an installed development build—not Expo Go.

In the output, you'll find options to open the app in a

You can start developing by editing the files inside the app directory. This project uses file-based routing.

Get a fresh project

When you're ready, run:

npm run reset-project

This command will move the starter code to the app-example directory and create a blank app directory where you can start developing.

Other setup steps

Learn more

To learn more about developing your project with Expo, look at the following resources:

Join the community

Join our community of developers creating universal apps.

About

Payments via NFC with USDC Stellar

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 97.2%
  • JavaScript 1.5%
  • CSS 1.3%