CodeCanyon Item Docs

Spendpath

React Native Expense & Subscription Tracker with Tamagui UI & AdMob. Zero-backend, Expo SDK 57, local storage, charts, notifications, and PDF/CSV export.

1. Prerequisites

  • Node.js 20+ and npm 10+
  • Expo CLI via npx expo (no global install required)
  • Android Studio / Xcode for device builds (optional for Expo Go)
  • EAS CLI for store builds: npm i -g eas-cli

2. Installation

npm install --legacy-peer-deps
npx expo start

Run these commands from the project root (the SpendpathApp folder after unzipping). Scan the QR code with Expo Go, or press a / use a USB or wireless Android device with ADB. For AdMob native ads, create a development or EAS build (see below).

3. What works in Expo Go vs a native build

FeatureExpo GoDev / EAS build
UI, expenses, subscriptions, chartsYesYes
Local persistence (AsyncStorage)YesYes
PDF / CSV exportYesYes
Notifications (permission + schedule)LimitedFull
AdMob banners / interstitialsPlaceholder onlyReal ads
Persistence uses AsyncStorage so the app runs in Expo Go. react-native-mmkv is listed as an optional upgrade path for production builds (requires a development build). It is not required to ship Spendpath.

4. Change App Name, Logo, Splash & Package ID

App name

  1. Update app.jsonexpo.name and expo.slug.
  2. Update display name in src/config/appConfig.tsappName.

Logo & splash

  1. Replace assets/icon.png (1024×1024 recommended).
  2. Replace assets/logo-mark.png / assets/logo-mark.svg and splash assets.
  3. Replace Android adaptive icons under assets/.
  4. Adjust splash backgroundColor in app.json (default #0F1C2E).

Package / Bundle ID

PlatformField
Androidexpo.android.package in app.json
iOSexpo.ios.bundleIdentifier in app.json

Default: com.codecanyon.spendpath

5. Configure Tamagui Themes

Theme tokens live in tamagui.config.ts. Primary brand color is coral (#FF5C4D) on ink navy (#0F1C2E).

// tamagui.config.ts
ink: '#0F1C2E',
coral: '#FF5C4D',
sage: '#6F9B86',
mist: '#EEF3F8',

Light / Dark / System mode is toggled in Settings and stored in Zustand. Runtime theme resolves system using the device color scheme.

6. Insert AdMob Ad IDs

Open src/config/appConfig.ts:

adsEnabled: true,
admob: {
  android: {
    banner: 'ca-app-pub-xxxxxxxx/yyyyyyyyyy',
    interstitial: 'ca-app-pub-xxxxxxxx/yyyyyyyyyy',
  },
  ios: {
    banner: 'ca-app-pub-xxxxxxxx/yyyyyyyyyy',
    interstitial: 'ca-app-pub-xxxxxxxx/yyyyyyyyyy',
  },
},

Also replace the App IDs in app.json under the react-native-google-mobile-ads plugin.

The project ships with Google test unit IDs so development works safely. Users can also toggle ads at runtime in Settings. Real ads require an EAS / development build (not Expo Go). The SDK is probed automatically when the native module is present.

7. Build APK / AAB / IPA with EAS

npm i -g eas-cli
eas login
eas build:configure

# Android APK (preview)
eas build -p android --profile preview

# Android AAB (Play Store)
eas build -p android --profile production

# iOS IPA
eas build -p ios --profile production

Profiles are defined in eas.json. After the build finishes, download the artifact from the Expo dashboard.

8. Project Structure

app/                 Expo Router screens
src/components/      Tamagui UI primitives, cards, AppLogo
src/screens/         Feature screens
src/store/           Zustand + AsyncStorage
src/services/        Notifications, Export, Ads
src/config/          Buyer configuration
src/types/           TypeScript models
src/utils/           Currency & date helpers
tamagui.config.ts    Theme tokens
__tests__/           Jest unit tests

9. Support Notes

  • Demo data seeds automatically when demoMode: true on first launch.
  • Settings → Load demo data forces a reload; Clear all data empties expenses/subs without auto-reseeding.
  • FX rates in src/utils/currency.ts are offline approximations.
  • Run npm run typecheck and npm test before publishing your reskin.
  • Install icons package is @tamagui/lucide-icons-2 (must match Tamagui v2).
  • Online copy of this documentation (public): https://assets.nexcesstech.com/spendpath/documentation/index.html