54 lines
2.3 KiB
Markdown
54 lines
2.3 KiB
Markdown
# 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
|
||
(Monday–Sunday) 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
|