Frequently Asked Questions
Common questions about the SaleFlex ecosystem, its applications, and how to get involved.
General
SaleFlex is a free, open-source retail automation ecosystem. It consists of three applications:
- SaleFlex.PyPOS — a touch-screen POS application for store-floor checkout operations.
- SaleFlex.OFFICE — a desktop back-office management application for managers and administrators.
- SaleFlex.GATE — a Django-based central API hub for multi-tenant, multi-store orchestration and third-party integration.
SaleFlex.PyPOS is designed for:
- Retail stores — complete retail management with inventory, customer tracking, and sales analytics.
- Fast food & quick service restaurants — fast checkout with order management.
- Chain restaurants — multi-location management with centralized data.
- Service businesses — any service-oriented establishment with customizable workflows.
Yes — completely free, forever. The MIT license means you can:
- Use the software for any purpose — personal or commercial.
- Modify the source code to fit your needs.
- Distribute your modified version.
saleflex.dev is the ecosystem-level information website. It explains what each application does, how they work together, architecture decisions, deployment options, and the overall roadmap at a product level.
Deep technical instructions — installation commands, configuration references, API specifications, and module-level documentation — live in each repository's
Deep technical instructions — installation commands, configuration references, API specifications, and module-level documentation — live in each repository's
README.md and docs/ folder on GitHub.
Choosing the Right Application
It depends on your immediate goal:
- Use PyPOS if your first target is checkout operations, cashier workflows, or store-floor transactions. It is the most feature-complete component and the best entry point for evaluation.
- Use OFFICE if you need a back-office workspace for defining products, campaigns, customer data, and reporting — alongside or without PyPOS.
- Use GATE if you are building a multi-store central API, connecting multiple stores, or integrating third-party ERP / loyalty / payment systems.
No. Each component can run independently:
- Standalone: PyPOS only, no network dependency, perfect for a single terminal.
- Office-connected: PyPOS + OFFICE, store-level coordination and reporting, works without internet.
- Gate-connected: All three, multi-tenant central APIs, best for multi-store chains.
Production Readiness
SaleFlex.PyPOS is in active beta (v1.0.0b7). Core POS functionality — sales, multi-payment, inventory, loyalty, campaigns, end-of-day closure — is operational. It is being used for evaluation and pilot deployments.
SaleFlex.OFFICE has its foundation and all management modules implemented and is in active development.
SaleFlex.GATE has its target architecture documented with the portal and company/membership model in place. REST API endpoints are under active development.
Always verify the latest status directly in each repository before planning a production rollout.
SaleFlex.OFFICE has its foundation and all management modules implemented and is in active development.
SaleFlex.GATE has its target architecture documented with the portal and company/membership model in place. REST API endpoints are under active development.
Always verify the latest status directly in each repository before planning a production rollout.
PyPOS uses SQLAlchemy, which supports: SQLite (default, no setup required), PostgreSQL, MySQL, Oracle, Microsoft SQL Server, Firebird, and Sybase.
SQLite is recommended for evaluation and single-terminal deployments. PostgreSQL is recommended for production.
SQLite is recommended for evaluation and single-terminal deployments. PostgreSQL is recommended for production.
Technical Questions
Yes. PyPOS is designed to be offline-first. All sales, payments, closures, and inventory operations complete against the local database with no network call.
When a network is available, a background
When a network is available, a background
SyncWorker (PySide6 QThread) periodically pushes queued events (via the offline outbox pattern using SyncQueueItem) to SaleFlex.GATE and pulls product/campaign updates. Connectivity is opportunistic, never required.
- SaleFlex.PyPOS: Python 3.13 or higher. Python 3.14 is not yet officially supported by SQLAlchemy — use 3.13 for best compatibility.
- SaleFlex.OFFICE: Python 3.11 or higher.
- SaleFlex.GATE: Python 3.12 or higher (required for Django 6.x).
Yes. The architecture is multi-store-ready from day one:
- GATE manages the Company → Store → Terminal hierarchy and scopes all data by those boundaries.
- OFFICE supports multi-terminal store management with terminal-specific form and settings assignments.
- PyPOS identifies itself by POS number and registers with the store and company via GATE (when gate-connected).
SaleFlex supports two campaign modes:
- Local engine (default):
CampaignServiceruns in-process inside PyPOS. Supports Basket Discount, Product Discount, Time-based, Buy-X-Get-Y, and Payment-method campaigns. The active campaign cache loads at startup and refreshes on admin save or GATE pull. - GATE-managed (optional): When
gate.manages_campaign = true, PyPOS sends a cart snapshot to GATE for evaluation and applies the returned discount proposals. This allows a central promotion authority.
PyPOS includes a full local loyalty program:
- Tiers: Bronze, Silver, Gold, Platinum — each with its own earn multiplier.
- Earning:
LoyaltyEarnServicecalculates points from document total, line items, or category/product rules after each completed sale. - Redemption: Customer enters point amount on the NumPad, then presses BONUS (BONUS_PAYMENT event).
LoyaltyRedemptionServiceapplies a LOYALTY discount with policy caps. - Audit: Full point movement history is visible on the Customer Detail → Point movements tab.
Setup & Integration
- Repository README files contain quick-start commands and environment setup.
docs/folders in each repository contain architecture, configuration, API references, and module-level guides.- Issue trackers on GitHub list known limitations and change tracking.
Yes — the architecture is designed for this. SaleFlex.GATE acts as the integration gateway. PyPOS ships base connector stubs (
Currently all adapter classes are log-only stubs. Concrete implementations for SAP, Oracle, Logo, Netsis, iyzico, PayTR, Stripe, and Nets are on the roadmap. You can implement your own adapter by extending the base classes.
BaseERPConnector, BasePaymentGateway, BaseCampaignConnector) behind clear service interfaces.
Currently all adapter classes are log-only stubs. Concrete implementations for SAP, Oracle, Logo, Netsis, iyzico, PayTR, Stripe, and Nets are on the roadmap. You can implement your own adapter by extending the base classes.
Contributing
- Open issues for bugs, missing documentation, or enhancement requests in the relevant repository.
- Submit pull requests with focused, testable changes. Review the repository's contributing guidelines if available.
- Improve documentation — clear docs are just as valuable as code.
- Test and report — try the applications in your environment and report what you find.
- Support the project — crypto donations are listed in each repository's README if you want to support development financially.
SaleFlex was created and is primarily maintained by Ferhat Mousavi (@ferhat-mousavi) at Mousavi.Tech. The project is open to community contributions and collaboration.
Contact: info@mousavi.tech · Support: support@mousavi.tech
Contact: info@mousavi.tech · Support: support@mousavi.tech