A mobile Point of Sale (PoS) application built with React Native and Expo. Supports product management, cart/checkout, sales tracking, loans, and transaction history. Data is persisted locally using AsyncStorage.
Make sure the following are installed on your machine before proceeding:
| Tool | Version | Download |
|---|---|---|
| Node.js | 18 or higher | https://nodejs.org |
| npm | comes with Node.js | — |
| Expo CLI | latest | npm install -g expo-cli |
| Git | any | https://git-scm.com |
For running on a physical device:
- Install the Expo Go app from the Google Play Store or Apple App Store.
For running on an emulator:
- Android: Install Android Studio and set up an AVD (Android Virtual Device).
- iOS (macOS only): Install Xcode from the Mac App Store.
git clone https://github.com/Transistorx/PoS.git
cd PoSnpm installnpm startThis launches the Expo development server. A QR code will appear in the terminal.
- Open the Expo Go app on your phone.
- Scan the QR code shown in the terminal.
- The app will load automatically.
Make sure your phone and computer are on the same Wi-Fi network.
npm run androidRequires Android Studio with a configured AVD running.
npm run iosRequires Xcode installed on macOS.
npm run webThis project uses EAS Build to generate production builds.
npm install -g eas-clieas logineas build --platform android --profile previewThe APK file will be available for download from the Expo dashboard once the build completes.
eas build --platform android --profile productionsrc/
├── app/
│ ├── _layout.tsx # Root layout with theme provider
│ └── (tabs)/
│ ├── index.tsx # Store / product listing
│ ├── add_product.tsx # Add new product
│ ├── cart.tsx # Shopping cart & checkout
│ ├── sales.tsx # Sales summary
│ ├── transactions.tsx # Transaction history
│ ├── loans.tsx # Loans management
│ ├── view_product.tsx # Product detail view
│ ├── view_loans.tsx # Loan detail view
│ └── view_transactions.tsx
├── components/ # Reusable UI components
├── lib/
│ ├── db/ # AsyncStorage data layer (products, sales)
│ ├── memory/ # In-memory cart state
│ ├── states/ # Global state (valtio)
│ └── types/ # TypeScript type definitions
- React Native 0.73 + Expo 50
- Expo Router — file-based navigation
- NativeWind — Tailwind CSS for React Native
- AsyncStorage — local data persistence
- Valtio / Zustand — state management
- Fuse.js — fuzzy product search
- Lucide React Native — icons
Dependencies not installing?
npm install --legacy-peer-depsMetro bundler cache issues?
npx expo start --clearType errors?
npm run ts:check