SaleFlex Applications
Three focused applications, each owning a distinct layer of the retail stack. Use one, two, or all three — the ecosystem is designed for incremental adoption.
SaleFlex.PyPOS
Touch-Screen Point-of-Sale Application
v1.0.0b7 Beta | Active DevelopmentSaleFlex.PyPOS is a modern, Python-based POS system for retail businesses, restaurants, and service-oriented establishments. Built with PySide6 (Qt), it offers a touch-optimised interface, cross-platform compatibility, and a rich set of operational capabilities — all running against a local database with zero mandatory network dependency.
Key Capabilities
Multi-Payment Processing
Cash, credit/debit card, mobile, prepaid, on-account, bank transfer, loyalty bonus. Split tenders until balance reaches zero.
Smart NumPad — 4 Modes
Barcode/PLU lookup, inline quantity, X multiplier pre-set, and payment amount entry. PLU inquiry shows price and per-warehouse stock.
Campaign Engine
Basket discount, product discount, time-based, Buy-X-Get-Y, and payment-method promotions. Coupon activation with global and per-customer usage limits.
Loyalty Programs
Tiered membership (Bronze / Silver / Gold / Platinum). Earn points on purchase, redeem at payment (BONUS button). Full audit trail per customer.
Customer Management
Search by name, phone, or email. Assign customer to an active sale via FUNC → CUSTOMER. Activity history and point movement tabs.
Inventory Control
Real-time stock deduction on sale, low-stock alerts, goods receipt, manual adjustment, and movement history — per warehouse location.
End-of-Day Closure
Session-based closure tracking, Z-report on ESC/P printer, country-specific closure templates (Turkey e-fatura, USA state tax, EU VAT).
Item Discount & Markup
Dual-function DISC % / MARK % and DISC AMT / MARK AMT buttons. Dialog with embedded keypad. Line cancelled and re-inserted with recalculated VAT.
Suspend & Resume (Market Mode)
SUSPEND parks the cart as pending, opens a new draft. SUSPENDED_SALES_MARKET lists parked receipts; ACTIVATE restores them to the sale form.
System Requirements
Software
- Python 3.13 or higher
- PySide6 6.11.0 (Qt framework)
- SQLAlchemy 2.0.48
- Requests 2.33.0
Supported Databases
- SQLite (default — included)
- PostgreSQL
- MySQL & Oracle
- Microsoft SQL Server, Firebird, Sybase
Supported Platforms
- Windows (touch screen devices)
- Linux (touch screen devices)
- Single or dual display configurations
Peripheral Hardware
- ESC/P compatible receipt printers
- 2D and 3D barcode scanners
- Weighing scales
- Cash drawers & line displays
Quick Start
git clone https://github.com/SaleFlex/SaleFlex.PyPOS.git cd SaleFlex.PyPOS python3 -m venv venv # Windows: venv\Scripts\activate.bat # macOS/Linux: source venv/bin/activate pip install -r requirements.txt python saleflex.py
Default Login Credentials
| Username | Password | Role |
|---|---|---|
admin | admin | Administrator — full access, can manage all cashier accounts |
jdoe | 1234 | Standard Cashier — can update own password only |
SaleFlex.OFFICE
Back-Office Management Application
Foundation Implemented | Active DevelopmentSaleFlex.OFFICE is a PySide6 desktop back-office application providing static manager and admin forms, local store operations, POS data backup, and integration orchestration between store terminals and central systems. Unlike PyPOS (touch-first), OFFICE is a keyboard-first operations console for predictable manager workflows.
Management Modules
Cashier Management
Spreadsheet-style cashier list with CRUD operations, performance target definition, and transaction metrics — filtered per cashier.
Product Management
Product CRUD, catalog listing, manufacturer, unit, attribute, variant, and barcode management — all in one workspace.
Campaign Management
Campaign CRUD, type and rule management, product associations, usage tracking, and a dedicated campaign operations window.
Customer Management
Customer CRUD, segment and member management, loyalty CRUD, point transaction history, and a dedicated customer operations window.
Loyalty Management
Full CRUD for loyalty programs, tiers, earn rules, program policy, and redemption policy — with dedicated loyalty operations form.
Warehouse Management
Warehouse and location CRUD, product stock levels, stock movements, stock adjustments, and aggregated warehouse operations.
POS Terminal Management
POS terminal list and CRUD, per-terminal settings, virtual keyboard definitions — with multi-terminal store support.
Form Management
Form and control CRUD, tab definitions, POS-scoped form assignment (single terminal or all terminals), and new form creation flow.
Deployment Modes
Standalone
OFFICE works as a local store control center without requiring SaleFlex.GATE. All data stays on-premises.
Gate-Connected
OFFICE is connected to SaleFlex.GATE and synchronizes master data and operational events upstream via REST/JSON.
High-Level Data Flow
- Managers define products, campaigns, loyalty rules, and settings in OFFICE.
- PyPOS terminals pull bootstrap definitions from OFFICE over REST/JSON.
- PyPOS pushes completed transactions and closures back to OFFICE.
- OFFICE stores data locally — acting as in-store backup during internet outages.
- When internet is available, OFFICE syncs required data to/from SaleFlex.GATE.
Quick Start
git clone https://github.com/SaleFlex/SaleFlex.OFFICE.git cd SaleFlex.OFFICE pip install -r requirements.txt python saleflex.py
Default users: admin / admin · jdoe / 1234 · jpace / 1234
SaleFlex.GATE
Central API Hub and Integration Gateway
Target Architecture | In DevelopmentSaleFlex.GATE is the central hub for the SaleFlex ecosystem — a Django and Django REST Framework backend that ties together stores, terminals, mobile apps, and optional third-party systems. It provides multi-tenant company/store/terminal management, versioned REST APIs, and a web portal.
Key Capabilities
Multi-Tenant Architecture
Company → Store → Terminal hierarchy. Data partitioned and API-scoped by company and store boundaries.
REST API (Django REST Framework)
Versioned JSON APIs for device auth, product/price distribution, transaction ingestion, closure sync, and warehouse events.
Web Portal
Public landing + session login/register, company creation, join-by-slug requests, multi-owner deletion approvals, and dashboard stub.
Integration Gateway
Front ERP, loyalty, campaign, and payment adapters behind clear service interfaces — so edge clients stay simple.
Mobile Client Support
Same REST surface supports management dashboards, stocktake sessions, and waiter/order flows for mobile applications.
Django Admin
Built-in staff admin site for direct ORM and data management. Not the primary end-user interface — that is the web portal.
Tenancy Model
- A registered user creates one or more companies, or joins an existing company via admin approval.
- Each company has one or more stores (physical locations).
- Each store registers one or more POS terminals (PyPOS instances) and optionally kitchen display systems.
- JWT / API keys are bound to company, store, and device scope.
System Requirements
Runtime
- Python 3.12 or newer
- Django (latest)
- Django REST Framework
Database
- SQLite — default for local development
- PostgreSQL — recommended for production
Quick Start
git clone https://github.com/SaleFlex/SaleFlex.GATE.git cd SaleFlex.GATE python -m venv .venv # Windows: .venv\Scripts\activate.bat # macOS/Linux: source .venv/bin/activate pip install -r requirements.txt python manage.py makemigrations python manage.py migrate python manage.py collectstatic --noinput python manage.py createsuperuser # optional — for Django Admin python manage.py runserver
Public site: http://127.0.0.1:8000/ · Django Admin: http://127.0.0.1:8000/admin/
Shared Foundation
MIT License
All repositories are open-source and licensed under MIT — free for personal and commercial use with attribution.
Modular Adoption
Start with PyPOS only and add OFFICE or GATE when your needs grow. No component forces the others.
Repository Documentation
Each repository ships its own docs/ folder with architecture, configuration, and API references.
REST/JSON Contracts
All inter-application communication uses REST APIs and JSON payloads — making integration straightforward.