KSA is a Frappe app that adds Kingdom of Saudi Arabia VAT and tax compliance capabilities on top of Frappe / ERPNext. It is designed to be installed on any Frappe bench and configured per company.
| Dependency | Version |
|---|---|
| Frappe Framework | v16 |
| ERPNext | v16 (optional) |
| Python | >= 3.14 |
Install with the bench CLI:
cd $PATH_TO_YOUR_BENCH
bench get-app https://github.com/kodlyft/ksa --branch develop
bench --site your-site.com install-app ksaThis app uses pre-commit for formatting and linting. After cloning:
cd apps/ksa
pip install pre-commit
pre-commit install
pre-commit install --hook-type commit-msgConfigured hooks:
- ruff: Python linting, import sorting, and formatting
- prettier: JS / Vue / SCSS formatting
- eslint: JavaScript linting
- Frappe semgrep rules: vendored static-analysis rules (see
.semgrep) - commitlint: enforces Conventional Commits
This repository ships a full CI/CD suite via GitHub Actions:
| Workflow | Trigger | Purpose |
|---|---|---|
ci.yml |
push to develop, PRs |
Installs the app on a fresh bench and runs unit tests |
linter.yml |
PRs | Pre-commit, Frappe semgrep rules, and pip-audit dependency scan |
semantic-commits.yml |
PRs | Validates commit titles against Conventional Commits |
release.yml |
push to develop |
Automated semantic versioning + GitHub releases |
Dependabot keeps GitHub Actions and Python dependencies up to date weekly.
Contributions are welcome! Please read the Contributing Guide and our Code of Conduct before opening a pull request.
- Report bugs with the Bug Report template.
- Suggest features with the Feature Request template.
- Found a security issue? See the Security Policy.