Files
tally/expo-app/README.md

54 lines
2.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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)
```sh
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