Pin & Penny expense tracker (web + expo-app)

This commit is contained in:
2026-09-18 16:09:05 +00:00
commit b394fd85a9
23 changed files with 8583 additions and 0 deletions

53
expo-app/README.md Normal file
View File

@@ -0,0 +1,53 @@
# Pin & Penny — 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, Housing, Utilities, Shopping, Health,
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