Home / FAQ

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.
All three are published under the MIT license and can be used freely for personal or commercial purposes.
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.
The only requirement is to retain the original copyright notice. There are no subscription fees, no hidden costs, and no feature limits behind a paywall.
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 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.
You can start with the standalone profile and evolve to more components as your needs grow.

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.
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.

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 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): CampaignService runs 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.
Campaigns are configured via Settings → Campaign Settings inside PyPOS (admin only), or via OFFICE's Campaign Management module.
PyPOS includes a full local loyalty program:
  • Tiers: Bronze, Silver, Gold, Platinum — each with its own earn multiplier.
  • Earning: LoyaltyEarnService calculates 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). LoyaltyRedemptionService applies 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.
You can also visit the Getting Started page on this site for a condensed setup guide.
Yes — the architecture is designed for this. SaleFlex.GATE acts as the integration gateway. PyPOS ships base connector stubs (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