Skip to content

Transistorx/PoS

Repository files navigation

Pricewise — Point of Sale App

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.


Prerequisites

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:

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.

Getting Started

1. Clone the repository

git clone https://github.com/Transistorx/PoS.git
cd PoS

2. Install dependencies

npm install

3. Start the development server

npm start

This launches the Expo development server. A QR code will appear in the terminal.


Running the App

On a physical device (Expo Go)

  1. Open the Expo Go app on your phone.
  2. Scan the QR code shown in the terminal.
  3. The app will load automatically.

Make sure your phone and computer are on the same Wi-Fi network.

On an Android emulator

npm run android

Requires Android Studio with a configured AVD running.

On an iOS simulator (macOS only)

npm run ios

Requires Xcode installed on macOS.

In a web browser

npm run web

Building a Standalone APK (Android)

This project uses EAS Build to generate production builds.

1. Install EAS CLI

npm install -g eas-cli

2. Log in to your Expo account

eas login

3. Build a preview APK

eas build --platform android --profile preview

The APK file will be available for download from the Expo dashboard once the build completes.

4. Build for production

eas build --platform android --profile production

Project Structure

src/
├── 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

Tech Stack

  • 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

Troubleshooting

Dependencies not installing?

npm install --legacy-peer-deps

Metro bundler cache issues?

npx expo start --clear

Type errors?

npm run ts:check

About

Point of Sale system designed for small sari-sari store.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors