Thanks for your interest in contributing! We welcome contributions in all areas. By contributing, you agree to follow the Coding Rules below and acknowledge that all contribution rights are transferred to AcuPower LTD.
- Language & Style: C#/.NET MAUI code should follow the existing patterns: async/await for I/O,
ConfigureAwait(false)only when necessary, explicit access modifiers, nullable reference types respected, and meaningful naming. - Architecture: Keep business logic in services/models; keep UI logic minimal in pages/viewmodels. Avoid mixing UI with data access.
- Error Handling: Prefer graceful handling and user-friendly messages; avoid swallowing exceptions silently.
- Logging: When adding logging, prefer concise, actionable messages without leaking secrets.
- Security: Do not log secrets; use secure storage for credentials (consistent with
SettingsService); HTTPS only. - Serialization: Use the existing source-generated JSON context and avoid reflection-based serialization that breaks trimming.
- Tests: Add or update tests when you change behavior. Keep tests deterministic and isolated.
- Dependencies: Avoid adding heavy dependencies; discuss first if uncertain.
- Accessibility/UI: Keep XAML clean and aligned; prefer styles and resources over inline duplication.
- Fork and branch from
main. - Open an issue first for major changes; minor fixes are fine directly with a PR.
- Follow templates: use the provided issue templates and PR template.
- Coding rules agreement: By opening a PR you confirm you agree to the Coding Rules and transfer ownership of submitted ideas/code to AcuPower LTD.
- Tests: Run relevant tests (
dotnet test) before submitting. - PR reviews: AcuPower team reviews all PRs. Please respond to feedback promptly.
- Keep commits focused and messages clear.
- Reference related issues in the PR description.
- Describe user-visible changes and testing performed.
- Tech stack: .NET MAUI app + WPF barcode generator.
- JSON: Use the source-generated
JsonContextfor models; keep<TrimMode>partial</TrimMode>intact. - Storage: Credentials/settings via platform secure storage (
SettingsService). - Branding: Keep the teal barcode scanner icon and splash assets unchanged unless intentionally updating branding.
Participation is governed by the Code of Conduct.