Skip to content

Ding-Payments/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.

✅ Quality checks (CI)

CI (.github/workflows/ci-client.yml) runs the exact same npm scripts you run locally, so a green local run means a green pipeline. Run all three before opening a PR:

npm run build   # tsc --noEmit — type-checks the project
npm run lint    # expo lint (ESLint flat config + Prettier rules)
npm run format  # prettier --write . — auto-formats the repo

Helper scripts:

Script Purpose
npm run build / npm run typecheck TypeScript type-check (tsc --noEmit)
npm run lint Report lint problems (expo lint)
npm run lint:fix Auto-fix lint problems
npm run format Format all files with Prettier
npm run format:check Verify formatting without writing (used by CI)

Tooling config lives at the repo root: eslint.config.mjs (Expo flat config + Prettier) and .prettierrc (singleQuote, trailingComma: es5). Editors with the ESLint and Prettier extensions pick these up automatically.

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

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages