Files
tally/expo-app/README.md

2.3 KiB
Raw Permalink Blame History

Tally — Expo app (web + mobile from one codebase)

React Native (Expo SDK 57) version of the expense tracker. The same code runs as a website, an iOS app and an Android app. Data is stored on-device with AsyncStorage, so it works on all three without a backend.

The original plain-web version still lives in the folder above this one and keeps working as before; this folder is the future-proof rewrite.

Screens and features

  • Daily / Weekly / Monthly tabs — the same expenses regrouped by day, by week (MondaySunday) or by month, each group with its own total.
  • Categories — Food, Transport, Household, Utilities, Shopping, Health, Beauty, Entertainment, Other.
  • Repeats — mark an expense Daily, Weekly or Monthly. They appear under “Repeating expenses” with the next due date and a Log next occurrence button.
  • Summary — totals plus a per-category spending breakdown of whatever is shown.
  • INR amounts — everything is shown in rupees (₹) with Indian digit grouping.
  • Search and filters, edit, and two-tap delete (no popups, works identically on web and phones).
  • Sample data on first run; Clear all to start empty.

Run it (needs Node.js 20+ — not available in this workspace)

cd expo-app
npm install
npx expo start

Then:

  • Web — press w in the terminal, or run npm run web. Opens the app in your browser.
  • Phone — install the free Expo Go app, then scan the QR code the terminal shows.
  • Simulators — press a (Android Studio emulator) or i (Xcode simulator, Mac only).

If versions ever drift, npx expo install --fix realigns them with the SDK.

Going further later

  • Installable phone apps (App Store / Play Store): npm install -g eas-cli, then eas build -p android / eas build -p ios. No code changes needed.
  • Backend sync (same data on web and phone): add any API later; only src/storage.js needs to change — the UI and src/logic.js stay untouched.

Files

  • App.js — screen state and layout
  • src/logic.js — dates, totals, grouping, repeats (plain JS, no platform imports)
  • src/storage.js — on-device persistence (AsyncStorage)
  • src/components/ — form, summary bars, grouped list, repeating templates
  • package.json — every version pinned to a release verified on the npm registry