Maksutov Design MAKSUTOV DESIGN
v1.3 Latest Expo SDK 54 React Native TypeScript Local-first

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

8 advisor characters: each with its own tone, role, and set of tips.
56 contextual tips: 7 screens multiplied by 8 characters.
0 TypeScript errors noted in the release, after a code audit.
3 public releases: stability, dependencies, and security.

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.

UX/UI Expo React Native TypeScript Expo Router Push AsyncStorage RevenueCat Reanimated Haptics Local-first Characters
TypeScript
99.9%
JavaScript
0.1%

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.
release notes
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`.
release notes
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.
release notes

04 / file map

Key Files

05 / next projects