diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 0000000..7a5f1f8 --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,94 @@ + +# Contributing Guide to BelZSpeedScan + +Thank you for your interest in contributing to BelZSpeedScan! This document provides guidelines and the process for contributing to the project. + +## 🎯 Why Contribute? + +BelZSpeedScan is a barcode and QR code scanning library designed to make scanning faster and more efficient. Your contribution can help: + +- Improve user experience +- Add new features +- Fix bugs +- Improve documentation +- Optimize performance + +## πŸš€ Getting Started + +1. **Fork the repository** + - Click the "Fork" button at the top right of the repository page. + +2. **Clone your fork** + ```bash + git clone https://github.com/YOUR-USERNAME/BelZSpeedScan.git + cd BelZSpeedScan + + 3. Set up your development environment +Make sure you have: +β€’ Android Studio (latest stable version) +β€’ Xcode (for iOS development) +β€’ Kotlin 1.8.0 or higher +β€’ Gradle 7.0 or higher + 4. Create a branch for your feature + +git checkout -b feature/your-feature-name + + + +πŸ“ Contribution Process +1. Development +β€’ Follow existing code conventions +β€’ Add tests for new features +β€’ Update documentation as needed +2. Commits +β€’ Use descriptive commit messages +β€’ Follow the format: type(scope): description +β€’ Example: feat(android): add background scanning support +3. Pull Request +β€’ Make sure your code compiles and passes all tests +β€’ Update documentation if necessary +β€’ Clearly describe your changes in the PR +β€’ Reference any related issues + +🎨 Style Guide + +Kotlin +β€’ Follow the Kotlin Coding Conventions +β€’ Use camelCase for variables and functions +β€’ Use PascalCase for classes and objects +β€’ Keep functions short and focused + +Documentation +β€’ Document all public APIs +β€’ Use KDoc for code documentation +β€’ Keep the README up to date + +πŸ§ͺ Testing +β€’ Write unit tests for any new functionality +β€’ Ensure all tests pass before submitting a PR +β€’ Keep test coverage above 80% + +πŸ“‹ Pull Request Checklist +β€’ Code follows the style guide +β€’ Tests have been added for new functionality +β€’ Documentation has been updated +β€’ Tests pass locally +β€’ Code compiles without warnings +β€’ Conflicts with the main branch are resolved + +🀝 Code of Conduct + +Please read our Code of Conduct before contributing. + +❓ Need Help? +β€’ Open an issue for questions or problems +β€’ Join our GitHub discussions +β€’ Reach out to the project maintainers + +πŸ“œ License + +By contributing, you agree that your code will be licensed under the same license as the project (MIT). + +βΈ» + +Thank you for contributing to BelZSpeedScan! πŸŽ‰ diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..0fab472 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,34 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '[BUG] ' +labels: bug +assignees: '' +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Environment:** + - Device: [e.g. iPhone 6, Samsung Galaxy S21] + - OS: [e.g. iOS 14.5, Android 12] + - Version [e.g. 1.0.11] + - Platform: [e.g. Android Native, KMP] + +**Additional context** +Add any other context about the problem here. + +**Possible Solution** +If you have suggestions on how to fix the issue, please describe them here. \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..83a2302 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,25 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '[FEATURE] ' +labels: enhancement +assignees: '' +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. + +**Would you like to work on this feature?** +- [ ] Yes, I would like to implement this feature +- [ ] No, I just want to suggest it + +If you would like to implement this feature, please let us know and we can guide you through the process! \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md new file mode 100644 index 0000000..899a750 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/question.md @@ -0,0 +1,31 @@ +--- +name: Question +about: Ask a question about the project +title: '[QUESTION] ' +labels: question +assignees: '' +--- + +**Question** +Please describe your question clearly and concisely. + +**Context** +Provide any relevant context about your question, such as: +- What you're trying to achieve +- What you've tried so far +- Any relevant code snippets +- Any error messages you're seeing + +**Environment** +- Device: [e.g. iPhone 6, Samsung Galaxy S21] +- OS: [e.g. iOS 14.5, Android 12] +- Version [e.g. 1.0.11] +- Platform: [e.g. Android Native, KMP] + +**Additional Information** +Add any other information about your question here. + +**Checklist** +- [ ] I have searched the [documentation](https://github.com/ismoy/BelZSpeedScan/wiki) +- [ ] I have searched existing [issues](https://github.com/ismoy/BelZSpeedScan/issues) +- [ ] I have searched existing [discussions](https://github.com/ismoy/BelZSpeedScan/discussions) \ No newline at end of file diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..001131e --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,33 @@ +## Description +Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. + +Fixes # (issue) + +## Type of change +Please delete options that are not relevant. + +- [ ] Bug fix (non-breaking change which fixes an issue) +- [ ] New feature (non-breaking change which adds functionality) +- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) +- [ ] This change requires a documentation update + +## How Has This Been Tested? +Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. + +- [ ] Test A +- [ ] Test B + +## Checklist: +- [ ] My code follows the style guidelines of this project +- [ ] I have performed a self-review of my own code +- [ ] I have commented my code, particularly in hard-to-understand areas +- [ ] I have made corresponding changes to the documentation +- [ ] My changes generate no new warnings +- [ ] I have added tests that prove my fix is effective or that my feature works +- [ ] New and existing unit tests pass locally with my changes +- [ ] Any dependent changes have been merged and published in downstream modules + +## Screenshots (if appropriate): + +## Additional context +Add any other context about the pull request here. \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..3b31678 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,92 @@ +name: CI + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + cache: gradle + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Build with Gradle + run: ./gradlew build + + - name: Run tests + run: ./gradlew test + + - name: Check formatting + run: ./gradlew ktlintCheck + + - name: Upload build artifacts + uses: actions/upload-artifact@v3 + with: + name: build-artifacts + path: build/ + + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + cache: gradle + + - name: Run ktlint + run: ./gradlew ktlintCheck + + security: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + cache: gradle + + - name: Run dependency check + run: ./gradlew dependencyCheckAnalyze + + release: + needs: [build, lint, security] + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + cache: gradle + + - name: Publish to Maven Central + run: ./gradlew publish + env: + OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }} + OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }} + SIGNING_KEY_ID: ${{ secrets.SIGNING_KEY_ID }} + SIGNING_PASSWORD: ${{ secrets.SIGNING_PASSWORD }} + SIGNING_SECRET_KEY_RING_FILE: ${{ secrets.SIGNING_SECRET_KEY_RING_FILE }} \ No newline at end of file diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..1489267 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,60 @@ +# Contributor Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to make participation in our project and community a harassment-free experience for everyone, regardless of: + +- Age +- Body size +- Disability +- Ethnicity +- Sex characteristics +- Gender identity and expression +- Level of experience +- Education +- Socio-economic status +- Nationality +- Personal appearance +- Race +- Religion +- Sexual identity and orientation + +## Our Standards + +Examples of behavior that contributes to creating a positive environment include: + +- Using welcoming and inclusive language +- Respecting different viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy toward other community members + +Examples of unacceptable behavior by participants include: + +- The use of sexualized language or imagery +- Trolling, insulting/derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others’ private information, such as physical or electronic addresses, without explicit permission +- Other conduct which could reasonably be considered inappropriate in a professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to: + +- Remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned with this Code of Conduct +- Temporarily or permanently ban any contributor for behaviors that they deem inappropriate, threatening, offensive, or harmful + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..7a5f1f8 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,94 @@ + +# Contributing Guide to BelZSpeedScan + +Thank you for your interest in contributing to BelZSpeedScan! This document provides guidelines and the process for contributing to the project. + +## 🎯 Why Contribute? + +BelZSpeedScan is a barcode and QR code scanning library designed to make scanning faster and more efficient. Your contribution can help: + +- Improve user experience +- Add new features +- Fix bugs +- Improve documentation +- Optimize performance + +## πŸš€ Getting Started + +1. **Fork the repository** + - Click the "Fork" button at the top right of the repository page. + +2. **Clone your fork** + ```bash + git clone https://github.com/YOUR-USERNAME/BelZSpeedScan.git + cd BelZSpeedScan + + 3. Set up your development environment +Make sure you have: +β€’ Android Studio (latest stable version) +β€’ Xcode (for iOS development) +β€’ Kotlin 1.8.0 or higher +β€’ Gradle 7.0 or higher + 4. Create a branch for your feature + +git checkout -b feature/your-feature-name + + + +πŸ“ Contribution Process +1. Development +β€’ Follow existing code conventions +β€’ Add tests for new features +β€’ Update documentation as needed +2. Commits +β€’ Use descriptive commit messages +β€’ Follow the format: type(scope): description +β€’ Example: feat(android): add background scanning support +3. Pull Request +β€’ Make sure your code compiles and passes all tests +β€’ Update documentation if necessary +β€’ Clearly describe your changes in the PR +β€’ Reference any related issues + +🎨 Style Guide + +Kotlin +β€’ Follow the Kotlin Coding Conventions +β€’ Use camelCase for variables and functions +β€’ Use PascalCase for classes and objects +β€’ Keep functions short and focused + +Documentation +β€’ Document all public APIs +β€’ Use KDoc for code documentation +β€’ Keep the README up to date + +πŸ§ͺ Testing +β€’ Write unit tests for any new functionality +β€’ Ensure all tests pass before submitting a PR +β€’ Keep test coverage above 80% + +πŸ“‹ Pull Request Checklist +β€’ Code follows the style guide +β€’ Tests have been added for new functionality +β€’ Documentation has been updated +β€’ Tests pass locally +β€’ Code compiles without warnings +β€’ Conflicts with the main branch are resolved + +🀝 Code of Conduct + +Please read our Code of Conduct before contributing. + +❓ Need Help? +β€’ Open an issue for questions or problems +β€’ Join our GitHub discussions +β€’ Reach out to the project maintainers + +πŸ“œ License + +By contributing, you agree that your code will be licensed under the same license as the project (MIT). + +βΈ» + +Thank you for contributing to BelZSpeedScan! πŸŽ‰ diff --git a/LICENSE b/LICENSE index fc73b50..71e9e81 100644 --- a/LICENSE +++ b/LICENSE @@ -1,201 +1,21 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2023 JetBrains s.r.o. and and respective authors and developers. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +MIT License + +Copyright (c) 2025 Ismoy + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index c441745..1f5c1de 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,36 @@ # [BelZSpeedScan](https://github.com/ismoy/BelZSpeedScan) ### A Cross-Platform QR Code and Barcode Scanning Library, using MLKIT for decoding. -BelZSpeedScan is a lightweight and easy-to-use library for scanning QR codes and barcodes. It supports both Kotlin Multiplatform (KMP) and native Android development, providing a consistent API across platforms. This allows you to use the same scanning logic in your shared KMP code and seamlessly integrate it into your Android application. - - -[![Buy Me a Coffee](https://img.buymeacoffee.com/button-api/?text=Buy%20Me%20a%20Coffee&emoji=β˜•&slug=ismoy&button_colour=FFDD00&font_colour=000000&font_family=Arial&outline_colour=000000&coffee_colour=ffffff)](https://www.buymeacoffee.com/Ismoy) - +[![Contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg)](CONTRIBUTING.md) [![Maven Central](https://img.shields.io/maven-central/v/io.github.ismoy/kmpswipe.svg)](https://search.maven.org/artifact/io.github.ismoy/kmpswipe) [![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![API](https://img.shields.io/badge/API-21%2B-brightgreen.svg)](https://android-arsenal.com/api?level=21) - [![Kotlin](https://img.shields.io/badge/Kotlin-1.9.0-blue.svg?logo=kotlin)](https://kotlinlang.org) [![Compose](https://img.shields.io/badge/Compose-1.5.0-green.svg?logo=jetpackcompose)](https://developer.android.com/jetpack/compose) [![Platform](https://img.shields.io/badge/Platform-Android%20|%20iOS-orange.svg)](https://kotlinlang.org/docs/multiplatform.html) - [![KMP](https://img.shields.io/badge/KMP-Kotlin%20Multiplatform-7F52FF.svg)](https://kotlinlang.org/docs/multiplatform.html) [![Swipe](https://img.shields.io/badge/UI-Swipe%20Gestures-red.svg)](https://github.com/ismoy/kmpswipe) [![UX](https://img.shields.io/badge/UX-Haptic%20Feedback-blueviolet.svg)](https://github.com/ismoy/kmpswipe) -# Demonstrations +![Issues](https://img.shields.io/github/issues/ismoy/BelZSpeedScan) + +BelZSpeedScan is a lightweight and easy-to-use library for scanning QR codes and barcodes. It supports both Kotlin Multiplatform (KMP) and native Android development, providing a consistent API across platforms. This allows you to use the same scanning logic in your shared KMP code and seamlessly integrate it into your Android application. + +## 🌟 Features + +- πŸ“± Cross-platform support (Android & iOS) +- πŸš€ High-performance scanning using MLKit +- 🎨 Customizable UI components +- πŸ”’ Security alerts for suspicious codes +- πŸ”Š Audio feedback on successful scans +- 🎯 Multiple barcode formats support +- ⚑ Real-time scanning +- πŸ› οΈ Easy integration with KMP projects +## πŸ“± Demonstrations | Android | iOS | |---------|-----| | ![Android](https://github.com/ismoy/DemoBelzSpeedScan/blob/main/demoCamera_compressed.gif) | ![Demo](https://github.com/ismoy/BelZSpeedScan/blob/main/images/iosDemo%20(1).gif) | - -## Installation +## πŸš€ Quick Start ### Kotlin Multiplatform (KMP) @@ -53,9 +60,50 @@ dependencies { // ... other dependencies } ``` -## How to Use -The core functionality of BelZSpeedScan is accessed through the App function (or similar entry point in your KMP project). This function requires a context parameter, which in Android would typically be your MainActivity's context. -# Use in your KMP +## πŸ“– Documentation + +For detailed documentation and examples, please visit our [documentation site](https://github.com/ismoy/BelZSpeedScan/wiki). + +## 🀝 Contributing + +We love your input! We want to make contributing to BelZSpeedScan as easy and transparent as possible, whether it's: + +- Reporting a bug +- Discussing the current state of the code +- Submitting a fix +- Proposing new features +- Becoming a maintainer + +Please read our [Contributing Guide](CONTRIBUTING.md) for details on our code of conduct and the process for submitting pull requests. + +## πŸ“‹ Roadmap + +Check out our [Roadmap](ROADMAP.md) to see what's coming next and how you can help! + +## πŸ› Known Issues + +Please report any bugs or issues you find in the [issues section](https://github.com/ismoy/BelZSpeedScan/issues). + +## πŸ“„ License + +This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. + +## πŸ™ Acknowledgments + +- Thanks to all our contributors +- Special thanks to the MLKit team for their amazing work +- The Kotlin Multiplatform community for their support + +## πŸ“ž Contact + +- GitHub Issues: [Create an issue](https://github.com/ismoy/BelZSpeedScan/issues) +- Email: belizairesmoy72@gmail.com + +## ⭐ Show your support + +Give a ⭐️ if this project helped you! + +# Use in your KMP/CMP #### App.kt ```kotlin import io.github.ismoy.belzspeedscan.domain.CodeScanner // Import CodeScanner diff --git a/ROADMAP.md b/ROADMAP.md new file mode 100644 index 0000000..7b1d915 --- /dev/null +++ b/ROADMAP.md @@ -0,0 +1,81 @@ +# 🚧 BelZSpeedScan Roadmap + +This document defines the strategic goals to transform **BelZSpeedScan** into a universal scanning solution for all mobile and web platforms, using a single shared codebase with Kotlin Multiplatform (KMP) and Compose Multiplatform (CMP). + +--- + +## 🟒 Short Term (1–3 months) + +### πŸ”§ Technical Improvements +- [ ] Refactor core logic into `commonMain` to enhance portability +- [ ] Modularize camera renderer and decoder logic +- [ ] Abstract native interfaces for external bindings (e.g., React Native, Flutter) + +### πŸ–ΌοΈ UI/UX via Compose Multiplatform +- [ ] Support Compose Multiplatform UI (Desktop and Web - beta) +- [ ] Support automatic dark/light mode switching +- [ ] Customizable overlay via composable UI props + +### πŸ“– Documentation & Community +- [ ] Provide full example projects (KMP/CMP) for Android, iOS, Desktop +- [ ] Improve integration guides step-by-step +- [ ] Provide ready-to-use template with KMP + JetBrains Compose setup + +--- + +## πŸš€ Medium Term (3–6 months) + +### 🧩 Cross-Framework Integrations +- [ ] NPM compatibility via Kotlin/JS for React Native +- [ ] Create bridge/wrapper for React Native usage with documentation +- [ ] Experimental Flutter support (via platform channels + host app support) + +### πŸ” New Features +- [ ] Multi-code simultaneous scanning +- [ ] Continuous scanning mode (loop-based) +- [ ] Per-platform custom sound feedback +- [ ] Auto-detection of code type (QR, EAN, etc.) + +### πŸ§ͺ Testing & Quality +- [ ] Cross-platform automated testing (Android, iOS, Desktop) +- [ ] CI/CD setup for publishing multiplatform artifacts (Maven, NPM) +- [ ] Visual debug mode with bounding boxes and scan overlays + +--- + +## 🌐 Long Term (6–12 months) + +### 🌍 Platform Expansion +- [ ] Web compatibility (via Kotlin/JS + WebAssembly + WebRTC) +- [ ] Wearable support (Wear OS, watchOS) +- [ ] SDK/API for third-party integration (Maven/NPM plugins) + +### πŸ“¦ Distribution & Tooling +- [ ] Official NPM release as `@belz/scan` +- [ ] Plugin for JetBrains Marketplace +- [ ] Compatibility with other Multiplatform libraries via Gradle modules + +### πŸ‘₯ Community & Ecosystem +- [ ] Simplified contribution workflow (templates, linters, CI helpers) +- [ ] Community events and hackathons +- [ ] Establish a small team of core maintainers + +### 🧩 Optional Future Additions +- [ ] External camera support (USB cameras, browser camera APIs) +- [ ] Integration with OCR libraries (text recognition) +- [ ] AI-assisted scan correction (blur/shadow detection) + +--- + +## 🀝 How to Contribute + +1. Check [issues labeled `help wanted`](https://github.com/ismoy/BelZSpeedScan/issues) +2. Read the [Contributing Guide](CONTRIBUTING.md) +3. Join the [GitHub Discussions](https://github.com/ismoy/BelZSpeedScan/discussions/) + +--- + +## πŸ“ Final Notes + +- This roadmap is a living document and may evolve based on community feedback and technical progress. +- Stability and ease of integration in modern mobile frameworks are always the top priority.