Skip to content

Latest commit

 

History

History
 
 

README.md

Stellar IndigoPay Mobile App

React Native + Expo mobile app for Stellar IndigoPay climate donation platform.

Features

  • Browse climate projects
  • Donate using mobile Stellar wallet (Freighter deep links)
  • View donation history and impact
  • Real-time donation feed
  • Push notifications for donation receipts

Setup

  1. Install dependencies:
cd mobile
npm install
  1. Configure environment:
cp .env.example .env
# Edit .env with your API URL and Stellar network settings
  1. Run on device/simulator:
# iOS
npm run ios

# Android
npm run android

# Expo Go (for quick testing)
npm start

Expo Go Preview

Preview builds are generated automatically on every push to main via EAS Build.

Open in Expo Go

Replace OWNER with your Expo account username. Add EXPO_TOKEN as a GitHub Actions repository secret (Settings → Secrets and variables → Actions) before the first build.

  • Android: APK (direct install, no Play Store needed)
  • iOS: Simulator build (.app bundle, not a signed IPA)

Shared API Client

The mobile app shares the API client logic with the web frontend. The API functions are located in lib/api.ts and are imported from the shared package.

Wallet Integration

The app integrates with mobile Stellar wallets via deep links:

  • Freighter Mobile: freighter://tx?xdr=...
  • SEP-0007 payments: web+stellar:pay?destination=G...&amount=50&memo=donation
  • Other wallets can be added via similar deep link schemes

SEP-0007 support

The mobile app now registers the web+stellar scheme and handles incoming web+stellar:pay URIs from browsers and other apps. When a donation link is opened, the app shows a confirmation screen, authenticates the user, submits the Stellar payment, appends the transaction hash to the callback URL, and records the payment in scan history.

Architecture

  • expo-router: File-based routing
  • app/: Screen components
  • lib/: Shared utilities (API, Stellar SDK helpers)
  • components/: Reusable UI components
  • styles/: Theme and styling (matches web green theme)

Environment Variables

See .env.example for required variables:

  • EXPO_PUBLIC_API_URL: Backend API URL
  • EXPO_PUBLIC_STELLAR_NETWORK: testnet or mainnet
  • EXPO_PUBLIC_HORIZON_URL: Stellar Horizon URL