A modern, cross-platform (mobile, tablet and desktop) Point of Sale (POS) system built with React Native and Expo. Supports multiple e-commerce platforms, offline operation, and hardware integration.
Website: retailpos.org
β All Planned Features Complete β Clean TypeScript compile, 198/198 tests pass
- Multi-Platform Support: Shopify, WooCommerce, BigCommerce, Magento, Sylius, Wix, PrestaShop, Squarespace, Offline
- Customer Management: Search, attach customers from platform APIs during checkout
- Discounts & Coupons: Validate platform coupons, apply percentage/fixed discounts
- Gift Cards: Check balances, redeem via platform APIs
- Offline Operation: Full POS functionality without internet, with background sync
- Multi-Register Sync: Shared offline API with event-driven sync across devices
- Product Variants: Option-based variants with inventory tracking
- Tax Profiles: Configurable tax rates and rules
- Returns Processing: Stock adjustments with optional platform refunds
- Reporting Dashboard: Sales analytics, cashier performance, CSV export
- Sync Queue Management: Retry/cancel failed orders with detailed error tracking
- Notifications System: Real-time alerts for sync events, inventory, returns
- Audit Logging: Complete audit trail for all user actions and system events
- Error Boundary: Crash recovery with retry UI and basket persistence
- Accessibility: Full screen reader support with a11y labels and hints
- Hardware Integration: Receipt printers, barcode scanners, payment terminals, cash drawers
- Payment Providers: Worldpay, Stripe, Square (4 total)
- Cross-Platform: iOS, Android, Web, Desktop (Electron)
- Multi-Language: English, Spanish, French, German
- Role-Based Access: Admin, Manager, Cashier permissions
RetailPOS follows a clean architecture pattern with separation of concerns:
- Presentation Layer: React Native components with Expo
- Business Logic: Service layer with platform abstractions
- Data Layer: SQLite repositories with TypeORM-like patterns
- Infrastructure: Hardware integrations and external APIs
See ARCHITECTURE.md for detailed technical documentation.
- Framework: React Native with Expo
- Language: TypeScript
- State Management: Zustand + React Context
- Database: SQLite (expo-sqlite)
- Styling: Custom theme system
- Internationalization: react-i18next
- Testing: Jest
- Linting: ESLint + Prettier
- Node.js 22.x or later
- Yarn package manager
- Expo CLI (
npm install -g @expo/cli)
-
Clone the repository
git clone https://github.com/n17foo/retailpos.git cd retailpos -
Install dependencies
yarn install
-
Setup environment
cp .env.example .env # Edit .env with your configuration -
Start development server
yarn ios # iOS simulator yarn android # Android emulator yarn web # Web browser yarn desktop # Electron desktop app
-
Run the onboarding
- Open the app and follow the setup wizard
- Choose your e-commerce platform or offline mode
- Create admin account and configure hardware
# Run tests
yarn test
# Run tests in watch mode
yarn test:watch
# Run tests with coverage
yarn test:coverageretailpos/
βββ components/ # Reusable UI components
βββ contexts/ # React contexts for global state
βββ hooks/ # Custom React hooks
βββ locales/ # Internationalization files
βββ repositories/ # Data access layer (SQLite)
βββ screens/ # Screen components
βββ services/ # Business logic and external APIs
β βββ audit/ # Audit logging service
β βββ auth/ # Authentication providers
β βββ basket/ # Shopping basket management
β βββ checkout/ # Order checkout flow
β βββ config/ # Configuration and service bridging
β βββ customer/ # Platform customer services (8 platforms)
β βββ discount/ # Platform discount/coupon services (8 platforms)
β βββ giftcard/ # Platform gift card services (8 platforms)
β βββ inventory/ # Inventory management
β βββ localapi/ # Multi-register offline API
β βββ logger/ # Logging infrastructure
β βββ notifications/# Real-time notification system
β βββ order/ # Order processing and sync
β βββ product/ # Product management and variants
β βββ reporting/ # Analytics and reporting
β βββ returns/ # Return processing + refunds (10 platforms)
β βββ search/ # Product search functionality
β βββ sync/ # Data synchronization
β βββ tax/ # Tax profile management
β βββ token/ # Platform API token management
βββ utils/ # Utility functions and helpers
Create a .env file based on .env.example:
# Development mode
APP_ENV=development
# Mock services for development
USE_MOCK_SCANNER=true
USE_MOCK_PAYMENT=true
USE_MOCK_PRINTERS=true
# Platform-specific settings
SHOPIFY_STORE_URL=your-shop.myshopify.com
SHOPIFY_API_VERSION=2024-01
WOOCOMMERCE_URL=https://yourstore.com
# ... other platform configsRetailPOS supports multiple e-commerce platforms. Each platform has its own service implementation with consistent interfaces.
For platform-specific setup instructions, see ARCHITECTURE.md.
Electron desktop installers are built automatically for Windows, macOS, and Linux on every push to the main branch. Download the latest builds from the GitHub Actions page.
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature - Make your changes following our coding standards
- Add tests for new functionality
- Ensure all tests pass:
yarn test - Submit a pull request
- TypeScript: Strict type checking enabled
- Linting: ESLint with React Native rules
- Formatting: Prettier with custom configuration
- Commits: Conventional commit format
- Testing: Jest with React Native testing library
- FEATURES.md: Complete feature roadmap with implementation details β all phases now complete β
- ARCHITECTURE.md: Technical architecture and design decisions
- CONTRIBUTING.md: Contribution guidelines and development setup
- CHANGELOG.md: Version history and release notes
- SECURITY.md: Security policy and vulnerability reporting
All Planned Features Complete (Feb 2026):
- β Platform service extensions: BigCommerce, Magento, Sylius, Wix, PrestaShop, Squarespace (24 new service implementations)
- β UI integrations: Customer search modal, notification system, error boundary
- β Service wiring: Audit logging, notifications, returns + refund orchestration
- β Accessibility audit: Full screen reader support across all components
- β
Logging refactor: All
consolecalls replaced with structuredLoggerFactorylogging - β Security hardening: Role access defaults to least privilege; iOS Face ID permission added
- β Clean compile + 198/198 tests passing
See SECURITY.md for our security policy and how to report vulnerabilities.
Licensed under the Apache License 2.0. See LICENSE for details.
- Built with Expo and React Native
- Icons from Lucide React
- UI components inspired by modern design systems
- Issues: GitHub Issues
- Discussions: GitHub Discussions
RetailPOS is built and maintained by N17 β a software studio specialising in retail and commerce infrastructure.
If you need help with any of the following, get in touch:
- Platform integration β connecting RetailPOS to your Shopify, WooCommerce, BigCommerce, Magento, or other e-commerce platform
- Custom hardware setup β configuring barcode scanners, receipt printers, cash drawers, or card terminals for your specific hardware
- Multi-register deployment β setting up server/client mode across multiple registers in your store
- Custom feature development β extending RetailPOS with features specific to your business (loyalty programmes, custom reporting, bespoke payment flows)
- Production hardening β security review, PIN hashing, encrypted credential storage, PCI compliance guidance
- Hosted deployment β managed hosting and ongoing maintenance so you don't have to run it yourself
- Staff training & onboarding β getting your team up and running quickly
- π Website: N17
- π§ Email: hello@n17.foo
- π¬ GitHub Discussions: github.com/n17foo/retailpos/discussions
RetailPOS β Bridging the gap between physical and digital retail experiences.