We appreciate your interest in contributing to Vaani. This guide will help you navigate the contribution process effectively.
-
Check Existing Issues:
- Search through the GitHub Issues
-
Create a Detailed Bug Report:
- Provide:
- Exact steps to reproduce
- Relevant error logs or screenshots
- Provide:
Vaani uses Git submodules to manage interconnected components. This means each submodule is a separate Git repository nested within the main project.
-
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/submodule
b. Create a Separate Branch:
git checkout -b feature/your-submodule-feature
c. 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
- 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
-
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
-
Code Style:
- Follow Flutter's style guide
- Use
dart format
andflutter analyze
dart format . flutter analyze
-
Testing:
- Write unit and widget tests
- Ensure tests pass for both the main app and submodules
flutter test
-
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
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
- Be respectful and inclusive
- Constructive feedback is welcome
- Collaborate and support fellow contributors
Happy Contributing! 🌟