Thank you for your interest in contributing to X POS! This guide will help you get started.
- Code of Conduct
- Getting Started
- Development Setup
- Making Changes
- Commit Guidelines
- Pull Request Process
- Reporting Bugs
- Requesting Features
This project follows a Code of Conduct. By participating, you are expected to uphold this code.
-
Fork the repository on GitHub.
-
Clone your fork locally:
cd $PATH_TO_YOUR_BENCH bench get-app https://github.com/<your-username>/xpos --branch develop bench --site your-site.com install-app xpos
-
Add the upstream remote:
cd apps/xpos git remote add upstream https://github.com/aliraxa29/xpos.git -
Create a new branch from
develop:git checkout -b feat/your-feature-name develop
| Dependency | Version |
|---|---|
| Python | >= 3.14 |
| Node.js | >= 24 |
| Frappe Framework | v16 |
| ERPNext | v16 |
Install pre-commit hooks to ensure code quality before every commit:
cd apps/xpos
pip install pre-commit
pre-commit installcd apps/xpos/frontend
yarn install
yarn dev # Start Vite dev server
yarn test # Run Vitest in watch mode
yarn test:run # Run tests once
yarn typecheck # TypeScript type checkingcd $PATH_TO_YOUR_BENCH
bench start # Start Frappe development server-
Keep changes focused. A single PR should address a single concern.
-
Write or update tests for any new functionality.
-
Ensure all linters and tests pass before submitting:
# Python linting ruff check xpos/ # Frontend checks cd frontend yarn typecheck yarn test:run
All commits must follow the Conventional Commits specification. This enables automated versioning and changelog generation.
<type>(<optional scope>): <description>
[optional body]
[optional footer(s)]
| Type | Description |
|---|---|
feat |
A new feature |
fix |
A bug fix |
docs |
Documentation only changes |
style |
Formatting, missing semicolons, etc. |
refactor |
Code change that neither fixes nor adds |
perf |
Performance improvement |
test |
Adding or updating tests |
build |
Build system or dependency changes |
ci |
CI configuration changes |
chore |
Other changes that don't modify src/test |
revert |
Reverts a previous commit |
feat: add delivery charge calculation to cart
fix: correct tax rounding in multi-currency payments
docs: add offline mode troubleshooting guide
refactor(cart): simplify discount application logic
test: add unit tests for pricing engine
-
Sync your branch with the latest
develop:git fetch upstream git rebase upstream/develop
-
Push your branch and open a Pull Request against the
developbranch. -
Fill out the PR template completely — describe what changed and why.
-
Ensure all CI checks pass (linting, type checking, tests).
-
A maintainer will review your PR. Address any feedback and push updates to the same branch.
-
Once approved, a maintainer will merge your PR.
Use the Bug Report issue template. Please include:
- Steps to reproduce
- Expected vs. actual behavior
- Screenshots or error logs if applicable
- Your environment (Frappe version, browser, OS)
Use the Feature Request issue template. Describe:
- The problem you're trying to solve
- Your proposed solution
- Any alternatives you've considered
Thank you for contributing to X POS!