Thank you for your interest in contributing to ShareConnect! This document provides guidelines and information for contributors.
- Android Studio: Arctic Fox or later (2020.3.1+)
- JDK 17: Required for Android development
- Git: Version control system
-
Clone the repository
git clone https://github.com/milos85vasic/ShareConnect.git cd ShareConnect -
Initialize submodules
git submodule update --init --recursive
-
Open in Android Studio
- Import the project as a Gradle project
- Wait for Gradle sync to complete
- Build and run any connector app
-
Firebase Setup (Optional)
- Create Firebase projects for each connector
- Download
google-services.jsonfiles - Place them in respective app directories
- Check GitHub Issues for open tasks
- Look for issues labeled
good first issueorhelp wanted - Comment on the issue to indicate you're working on it
git checkout -b feature/your-feature-name
# or
git checkout -b fix/issue-number-description- Follow the existing code style and conventions
- Write tests for new functionality
- Update documentation as needed
- Ensure all tests pass
git add .
git commit -m "Brief description of changes
- Detailed explanation of what was changed
- Why the change was necessary
- Any breaking changes or migration notes"git push origin your-branch-nameThen create a Pull Request on GitHub with a clear description.
ShareConnect/
├── Connectors/ # Individual connector applications
│ ├── ShareConnector/ # Main app with sync capabilities
│ ├── qBitConnector/ # qBittorrent client
│ ├── TransmissionConnect/ # Transmission client
│ └── ... # Other connectors
├── Toolkit/ # Shared libraries and modules
│ ├── Main/ # Core functionality
│ ├── Analytics/ # Analytics and tracking
│ ├── SecurityAccess/ # Authentication and security
│ └── Search/ # Unified search functionality
├── DesignSystem/ # UI components and theming
├── Asinka/ # Synchronization framework
├── Tests/ # Testing utilities
└── docs/ # Documentation
- Use
valovervarwhen possible - Prefer immutable data structures
- Use meaningful variable and function names
- Follow Kotlin naming conventions (PascalCase for classes, camelCase for functions)
- Use Material Design 3 components
- Follow Android architecture patterns (MVVM, Repository)
- Handle lifecycle properly
- Use coroutines for asynchronous operations
- Group imports: standard library, third-party, local
- Remove unused imports
- Use wildcard imports sparingly
./gradlew :ConnectorName:testDebugUnitTest./gradlew :ConnectorName:connectedDebugAndroidTest./run_ai_qa_tests.sh./run_all_tests.sh-
Create the connector structure
mkdir Connectors/NewConnector mkdir Connectors/NewConnector/NewConnectorApp
-
Set up build.gradle
- Copy from an existing connector
- Update package name and dependencies
- Configure signing and Firebase
-
Implement core functionality
- Create API client for the service
- Implement data models
- Add UI components
- Integrate with sync framework
-
Add to main build
- Update
settings.gradleto include the new module - Add to CI/CD pipeline matrix
- Update
- Use the bug report template
- Include steps to reproduce
- Provide device information and Android version
- Attach logs and screenshots
- Check if the feature already exists
- Describe the use case clearly
- Explain why it's needed
- Consider implementation complexity
- DO NOT create public issues for security vulnerabilities
- Email security@shareconnect.dev with details
- Allow time for investigation before public disclosure
- Use KDoc for public APIs
- Document complex logic and edge cases
- Keep comments up to date
- Update README files for new features
- Provide usage examples
- Document configuration options
- Treat all contributors with respect
- Constructive criticism is welcome
- Disagreements should be handled professionally
- Use clear and concise language
- Provide context for your suggestions
- Be patient with new contributors
- Review code objectively
- Suggest improvements constructively
- Acknowledge good work
By contributing to ShareConnect, you agree that your contributions will be licensed under the same license as the project (see LICENSE file).
Contributors will be recognized in:
- GitHub repository contributors list
- CHANGELOG.md for significant contributions
- Project documentation
Thank you for contributing to ShareConnect! 🎉