# 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