Thanks for improving Small POS.
- Search existing Issues and Discussions first.
- Do not include real customer data, credentials, payment details, or internal business records.
- For vulnerabilities, follow SECURITY.md instead of opening a public issue.
- Use a template: Bug report, Feature request, or Documentation.
- New issues get
needs-triageuntil a maintainer classifies them.
Start here if this is your first PR:
- Filter Issues by
good first issue. - If none fit, take a
help wanted+scope:docsorscope:a11ytask. - Keep the PR docs-only or one focused test/UI change.
- Do not add persistence, cloud, payment gateways, or real credentials.
Current starter issues live on the repo Issues tab. If you are unsure whether a change is in scope, open a Discussion first.
Templates apply a type label plus needs-triage. Maintainers add a scope:* label and remove needs-triage.
| Label | Kind | Meaning |
|---|---|---|
bug / enhancement / documentation |
type | Applied by the issue template. |
needs-triage |
queue | New. Maintainer has not classified it yet. |
good first issue |
intake | Small, fixture-safe, one-file-or-docs change. |
help wanted |
intake | Bounded and welcome; may need more context. |
scope:docs |
triage | Documentation only. |
scope:a11y |
triage | Accessibility / Vietnamese accessible names. |
scope:e2e |
triage | Fixture Playwright only. |
scope:ui |
triage | Local UI/copy/layout. No new product surface. |
out-of-scope |
triage | Rejected against ROADMAP / SECURITY boundaries. |
Do not replace type labels with scope:* in templates. documentation and scope:docs are both correct: type first, scope after triage.
npm ci
npm run ci
npx playwright install --with-deps chromium
npm run test:e2e
npm run test:e2e:visualUse Node.js 22. Installing Chromium is required once per machine before the browser tests. The browser suite runs against a fixture-only authentication adapter; never replace it with real credentials or services.
-
Create a focused branch from
main. -
Add or update a behavioral test before changing production code.
-
Keep each PR limited to one concern.
-
Run all relevant checks:
npm run ci npx playwright install --with-deps chromium npm run test:e2e
-
Explain user-visible behavior, tests run, and remaining limitations in the PR body.
Do not add production payment processing, cloud credentials, Firebase configuration, e-invoicing, refunds, or real data integrations without an approved design and tests. Money amounts must remain safe integer VND at every input boundary. A failed write or validation must never be presented as payment success.
- Reproducible bug reports with steps and expected/actual behavior.
- Unit tests for domain and state invariants.
- Fixture-safe Playwright coverage.
- Accessibility, Vietnamese copy, and responsive UI improvements.
- Documentation and roadmap work.
Maintainers review scope, tests, money/data safety, and public API impact before merge. Automated checks do not replace human review.
By participating, you agree to follow the Code of Conduct.