First off, thanks for taking the time to contribute! ❤️
Contributions are always welcome, no matter how large or small. Before contributing, please read the Code of Conduct and follow the directions in this guide.
- Introduction
- Code of Conduct
- Getting Started
- Areas for Contribution
- Branching Strategy
- Code Style and Standards
- Testing Guidelines
- Documentation Updates
- Submitting Issues
- Pull Request Guidelines
- Commit Message Format
- Project Structure
- Acknowledgments
- License
Welcome to BridgeLearn! We're excited that you're interested in contributing. This document provides guidelines and instructions for contributing to the project. Our goal is to create an inclusive, collaborative learning platform that helps students master bridge concepts effectively.
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to make participation in our project and our 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, or sexual identity and orientation.
Examples of behaviour that contributes to a positive environment for our community include:
- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologising to those affected by our mistakes, and learning from the experience
- Focusing on what is best not just for us as individuals, but for the overall community
Examples of unacceptable behaviour include:
- The use of sexualised language or imagery, and sexual attention or advances
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or email address, without their explicit permission
- Other conduct which could reasonably be considered inappropriate in a professional setting
Project maintainers are responsible for clarifying and enforcing our standards of acceptable behaviour and will take appropriate and fair corrective action in response to any instances of unacceptable behaviour.
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 to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviours that they deem inappropriate, threatening, offensive, or harmful.
This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.
Instances of abusive, harassing, or otherwise unacceptable behaviour may be reported to the community leaders responsible for enforcement at @pratheekv39. All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the reporter of any incident.
This Code of Conduct is adapted from the Contributor Covenant, version 1.4 and 2.0.
- Android Studio Hedgehog | 2023.1.1
- Kotlin 1.9.0
- Minimum SDK: 24
- Target SDK: 34
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR-USERNAME/BridgeLearn_App.git- Add upstream remote:
git remote add upstream https://github.com/pratheekv39/BridgeLearn_App.git- Create a new branch for your feature:
git checkout -b feature/your-feature-name- Open project in Android Studio
- Sync Gradle files
- Run on emulator or physical device
We welcome contributions in these areas:
- Learn Module
- Content creation
- Interactive exercises
- Progress tracking
- Quiz System
- Question bank expansion
- Assessment algorithms
- Performance analytics
- Community Features
- Discussion forums
- Peer learning tools
- Accessibility
- UI/UX improvements
- Screen reader compatibility
- Language support
Use the following branch naming conventions:
feature/[feature-name]- For new featuresfix/[bug-name]- For bug fixesdocs/[document-name]- For documentationtest/[test-name]- For testing improvements
- Use camelCase for variables and functions.
- Use PascalCase for class names.
- Maintain proper indentation with 4 spaces.
- Avoid hardcoding values; use constants or configuration files instead.
- Organize the code into packages based on features (e.g., ui, data, viewmodel).
- If Jetpack Compose is used, adhere to Jetpack Compose best practices for UI development.
- Use linting tools like Ktlint or Detekt to ensure consistency.
- Use JUnit for unit testing.
- Use MockK for mocking dependencies.
- Use Espresso for UI testing in Android projects.
- Make sure to write tests for:
- Business logic (unit tests).
- API calls or database interactions (integration tests).
- User workflows (UI tests).
- Write clear and descriptive test names.
- Add instructions to run tests using:
./gradlew testDebugUnitTest./gradlew connectedAndroidTest - Set a goal for 80%+ code coverage where possible.
- Ensure contributors update README.md for new features or modules they work on.
- Add or update inline comments in the code for better clarity.
- Update the CHANGELOG.md file for any new features, enhancements, or bug fixes.
- Example for README.md updates:
Feature Name: A brief description of the feature and how to use it.
Setup Changes: Steps required to configure or use the feature.
When creating an issue:
- Use the provided issue template
- Include clear reproduction steps
- Specify environment details
- Add relevant labels
- Include screenshots if applicable
We actively welcome your PRs. However, before working on changes, you must ensure that you are assigned to an existing issue and link your work to the issue in your PR template.
-
Ensure that your changes are made in a new branch.
-
Run and check your changes locally. Ensure that everything works as it should.
-
Ensure that you address one issue in one PR.
If you work on multiple issues, work on them separately and create one PR to address each issue. -
Completing the PR template. Make sure you fill in all sections and that you have:
- A valid title. The PR title must begin with
feature:,fix:, or anything related to your changes. - A related issue. Link the issue number that you worked on and add a keyword of "Closes", "Fixes", or "Resolves" in front of it. For example: Closes #123, Fixes #234, etc.
- A valid title. The PR title must begin with
-
Do NOT delete any section of the PR template.
If a section is irrelevant to your changes, please explain or respond with "N/A".
-
Ensure that all checks are passed.
If you see any GitHub action bots or checks that failed after you submit your PR template, you need to read each one and understand why it failed. Then, you must address and fix it until all of them pass. -
Do NOT DM maintainers or tag them in the comments to review your PR.
Maintainers are always notified whenever there is an incoming PR. If you haven't received a review within a week, please tag them in the PR comments to ask for an estimated review time. -
Keep your branch up to date while waiting for review and resolve any merge conflicts in your terminal.
-
Response and address the reviewer's feedback.
- the issue is not assigned to the contributor who opened the PR.
- no issue is linked to the PR.
- PR template is incomplete, or any section in the template is deleted.
- changes are made directly in the default (
main) branch.
- Use
feat:for new features. - Use
fix: for bug fixes. - Use
docs: for documentation changes. - Use
test: for adding/updating tests. - Use
style: for formatting-only changes.
Examples:
feat: Add GST calculation module
fix: Resolve crash on EMI calculation
docs: Update README for setup instructions
app/
├── src/
│ ├── main/
│ │ ├── java/pratheekv39/bridgelearn/io/
│ │ │ ├── ui/
│ │ │ │ ├── home/
│ │ │ │ ├── learn/
│ │ │ │ ├── quiz/
│ │ │ │ ├── community/
│ │ │ │ └── profile/
│ │ │ ├── data/
│ │ │ ├── domain/
│ │ │ └── di/
│ │ └── res/
│ └── test/
└── build.gradle.kts
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.