A React Native + Expo customer ledger app for small shops to track customer credit, payments, balances, and simple reporting.
This project currently runs with a local in-memory data layer (platform-hooks.js) so it can work immediately without external backend services.
- Login and registration flow with role-based access
- Shop owner and customer modes
- Customer list with balance overview
- Credit and payment transaction logging
- Transaction history and reporting screens
- Mobile + web support through Expo
- Expo SDK 53
- React Native
- React Navigation (stack + bottom tabs)
- TypeScript support enabled in the project
App.tsx: app entry pointShopCredit.tsx: main app UI and screen logicplatform-hooks.js: local query/mutation hooks with in-memory storeapp.json: Expo app configurationbabel.config.js: Babel configuration
- Node.js 18+ (Node.js 20 LTS recommended)
- npm 9+
- Expo Go app (optional, for physical device testing)
npm installStart Expo development server:
npm startThen choose a platform from the terminal:
wfor webafor Android emulator/deviceifor iOS simulator (macOS only)
Direct platform commands are also available:
npm run web
npm run android
npm run iosThese seeded users are defined in platform-hooks.js:
- Shop Owner
- Username:
owner - Password:
owner123
- Username:
- Customer
- Username:
customer - Password:
customer123
- Username:
The current data layer is in-memory only.
- Data is reset whenever the app reloads or restarts.
- This is ideal for demos and local practice.
- For production use, replace
platform-hooks.jswith a persistent backend (API + database).
npm start: start Expo dev servernpm run web: run web targetnpm run android: run Android targetnpm run ios: run iOS target (macOS)
Try:
npm install
npx expo installIf Expo reports web runtime dependency issues:
npx expo install @expo/metro-runtimeRun Expo on another port:
npx expo start --web --port 8082rm -rf node_modules package-lock.json
npm install
npm startOn Windows PowerShell:
Remove-Item -Recurse -Force node_modules
Remove-Item -Force package-lock.json
npm install
npm start- Persist data with SQLite, Firebase, Supabase, or a custom backend API
- Add form validation and stronger auth security
- Add exportable reports (CSV/PDF)
- Add unit and integration tests
- Add CI checks for lint/test/build