Thank you for your interest in contributing to SaleFlex.PyPOS! We welcome all contributions, from bug fixes and documentation improvements to new features and peripherals support.
- Bug Reports - Found a bug? Open an issue using the Bug Report template.
- Feature Requests - Have an idea? Open an issue using the Feature Request template.
- Code Contributions - Fix bugs, implement features, improve performance.
- Documentation - Improve or translate the docs in the docs/ folder.
- Testing - Help test against different databases, OS environments, or hardware.
Fork the repository on GitHub, then clone your fork:
�ash git clone https://github.com/<your-username>/SaleFlex.PyPOS.git cd SaleFlex.PyPOS
`�ash python -m venv .venv .venv\Scripts\activate # Windows source .venv/bin/activate # Linux / macOS
pip install -r requirements.txt `
`�ash git checkout -b feature/my-feature-name
git checkout -b fix/issue-description `
�ash python saleflex.py
- Follow PEP 8.
- Use meaningful variable and function names.
- Keep functions focused and small.
- Add docstrings to public classes and methods.
- All custom widgets live under user_interface/control/.
- UI forms are database-driven; avoid hardcoding layout values.
- Use the existing EventHandler and event_distributor() pattern for user actions.
- Do not mix business logic into UI widget classes.
- All models live under data_layer/model/.
- Use the existing db_manager.py helper for sessions.
- Seed data belongs in data_layer/db_init_data/.
- Avoid raw SQL; use SQLAlchemy ORM queries.
- Use core/logger.py for all logging (get_logger(name)).
- Raise SaleFlexError subclasses (defined in core/exceptions.py) for domain errors.
- Never swallow exceptions silently.
Before submitting a pull request, please verify:
- The application starts without errors (python saleflex.py).
- The feature/fix works end-to-end in the UI.
- Existing functionality (sales, payments, closures) is not broken.
- If you added a new model, run db_initializer.py against a fresh database.
- Push your branch to your fork.
- Open a pull request against the main branch of SaleFlex/SaleFlex.PyPOS.
- Fill in the pull request template completely.
- Link any related issues (e.g. Closes #42).
- Wait for a review — we aim to respond within a few business days.
Use the Bug Report issue template and include:
- Steps to reproduce the problem.
- Expected vs actual behavior.
- OS, Python version, and database backend.
- Relevant log output from logs/saleflex.log.
Use the Feature Request issue template and describe:
- The problem your feature solves.
- Your proposed solution and alternatives considered.
- How it fits into a typical POS workflow.
All contributors are expected to follow our Code of Conduct. Please be respectful and constructive in all interactions.
For questions not suited to a public issue, email ferhat.mousavi@gmail.com.
Last Updated: 2026-04-05