Repository navigation
Contributing
Issues and PRs are welcome. The full guide lives in
CONTRIBUTING.md
— this page is a summary of what matters most before you start.
Before writing any code, read the README's Architecture and API Reference § Security posture sections. Anything you add that touches auth, money, or input validation is held to the same bar already documented there — not a lighter one.
This is a small, focused tool: offline-first, single-shop, single-till. Keep contributions aligned with that — see Roadmap § Deliberately not bundled for examples of features turned away on purpose. If you want to propose something that pushes toward multi-tenant or hosted-SaaS territory, open an issue to discuss it first rather than sending a PR directly.
A few things this codebase leans on that aren't obvious from the diff
alone — see CONTRIBUTING.md for the full list:
- Server-authoritative money. Price, tax, discount, loyalty, and change are always computed backend-side; the client only ever sends intent. Any new checkout-adjacent field needs to follow this.
-
GST is backed out of the entered price, never added on top — see
Architecture § Data & money model
before touching
pricing.jsorquote.ts. - Running balances are rounded, JS-computed, and
set— never a database-sideincrementon a float. - Barcode-scanner input parsing relies on inter-keystroke timing to tell a scanner apart from human typing; don't assume every keydown burst is a real scan.
-
Direct-USB printing goes through the kernel
usblpcharacter device first, libusb second — see Hardware Setup for why, if you're touchingescposUsb.js.
Covered in detail in CONTRIBUTING.md:
Development setup ·
Making a change ·
Commit messages ·
Opening a pull request ·
Reporting bugs
This project follows the Contributor Covenant. Report unacceptable behavior to ranjitraktim5@gmail.com.
See MAINTAINERS.md.
Project copyright is held jointly by Nodedr Infotech Private Limited and
Raktim Ranjit; the project is licensed
AGPL-3.0. By
submitting a PR you agree your contribution is licensed the same way; you
retain copyright on your own contribution.