4.6 KiB
Contributing to Vaani
Welcome Contributors! 🚀
We appreciate your interest in contributing to Vaani. This guide will help you navigate the contribution process effectively.
How to Contribute
Reporting Bugs 🐞
-
Check Existing Issues:
- Search through the GitHub Issues
-
Create a Detailed Bug Report:
- Provide:
- Exact steps to reproduce
- Relevant error logs or screenshots
- Provide:
Submodule Contribution Workflow 🧩
Understanding Vaani's Submodule Structure
Vaani uses Git submodules to manage interconnected components. This means each submodule is a separate Git repository nested within the main project.
Working with Submodules
-
Identifying Submodules:
- List all submodules in the project
git submodule status -
Initializing Submodules:
# Ensure all submodules are initialized git submodule update --init --recursive -
Contributing to a Specific Submodule:
a. Navigate to Submodule Directory:
cd path/to/submoduleb. Create a Separate Branch:
git checkout -b feature/your-submodule-featurec. Make and Commit Changes:
# Stage changes git add . # Commit with descriptive message git commit -m "feat(submodule): describe specific change"d. Push Submodule Changes:
git push origin feature/your-submodule-feature -
Updating Submodule References: After making changes to a submodule:
# From the main repository root git add path/to/submodule git commit -m "Update submodule reference to latest changes" -
Pulling Latest Submodule Changes:
# Update all submodules git submodule update --recursive --remote # Or update a specific submodule git submodule update --remote path/to/specific/submodule
Submodule Contribution Best Practices
- Always work in a feature branch within the submodule
- Ensure submodule changes do not break the main application
- Write tests for submodule-specific changes
- Update documentation if the submodule's interface changes
- Create a pull request for the submodule first, then update the main project's submodule reference
Development Workflow
Setting Up the Development Environment
-
Prerequisites:
- Git
- Flutter SDK
- Recommended IDE: VS Code
-
Repository Setup:
- Fork the repo
- Clone the forked repository to your local machine
# Fork the main repository on GitHub git clone --recursive https://github.com/[YOUR_USERNAME]/Vaani.git cd Vaani # Initialize and update submodules git submodule update --init --recursive # Install dependencies for the main app and submodules flutter pub get
Coding Standards
-
Code Style:
- Follow Flutter's style guide
- Use
dart formatandflutter analyze
dart format . flutter analyze -
Testing:
- Write unit and widget tests
- Ensure tests pass for both the main app and submodules
flutter test
Pull Request Process
-
Branch Naming:
- Use descriptive branch names
- Prefix with feature/, bugfix/, or docs/
git checkout -b feature/add-accessibility-support -
Commit Messages:
- Use clear, concise descriptions
- Reference issue numbers when applicable
- Follow conventional commits format:
<type>(scope): <description>
-
Pull Request Guidelines:
- Clearly describe the purpose of your changes
- Include screenshots for visual changes
- Specify if changes affect specific submodules
- Ensure all CI checks pass
Signing the app
once the keystore is created, you can sign the app with the keystore.
but for github action you need to make a base64 encoded string of the keystore.
# convert keystore to base64
cat android/key.properties | base64 > key.base64
# convert keystore to base64
cat android/upload.jks | base64 > keystore.base64
Communication
Code of Conduct
- Be respectful and inclusive
- Constructive feedback is welcome
- Collaborate and support fellow contributors
Happy Contributing! 🌟