Zaymy App
A mobile app for personal loans: log the amount, term, interest, and account, get a push notification before the due date, close out the debt, and update your karma. No server, no sign-up — the data stays on the device.
01 / product scope
This app is about the debt, not a wallet screen
02 / stack & tags
Almost all the code is TypeScript, and the structure reads instantly
Zaymy is a local-only mobile app: loan tracking, terms, interest, push reminders, karma, achievements, onboarding, and paid tiers via RevenueCat.
What matters here isn't the “lend / borrow” form, but the behavior after saving: a notification gets scheduled, deleting a loan cancels the old push, and state doesn't get lost on concurrent updates.
03 / release log
The releases show how the app got put in order
v1.3
Security Fixes
This release closes two specific bugs: free Premium access via the production stub, and stale notifications after deleting a loan.
- `purchasePremium()` and `restorePurchases()` now only work in stub mode inside `__DEV__`.
- Production without RevenueCat now returns an error instead of granting free Premium access.
- `removeLoan()` now cancels the scheduled push before deleting the record.
v1.2
Dependency Cleanup & Security
This release cleaned up dependencies and removed the risk of accidentally committing credentials to the repository.
- 33 runtime packages moved from `devDependencies` to `dependencies`.
- Apple credentials in `eas.json` replaced with env variables.
- Added signing certificates, mobileprovision, keystore, and service keys to `.gitignore`.
v1.1
Bug Fixes & Stability
The first major code audit: fixed data loss, UI crashes, and a few navigation edge cases.
- `useCallback` now reads current state via `useRef`, without silent data loss.
- AsyncStorage is now read via safe-parse; amounts and karma are sanitized on load.
- `router.replace` replaced with `router.push` — the back button no longer breaks the navigation path.
04 / file map
Key Files
05 / next projects