Thank you for your interest in contributing to MirrorHR! This document provides guidelines and instructions for contributing to our project.
By participating in this project, you agree to abide by our Code of Conduct. Please read it before contributing.
-
Fork the repository
-
Clone your fork:
git clone https://github.com/your-username/MirrorHR.git cd MirrorHR -
Set up the development environment:
-
Install Xcode 15.0+
-
Install Swift 5.9+
-
Install dependencies:
swift package resolve
-
-
Create a new branch for your feature/fix:
git checkout -b feature/your-feature-name
-
Make your changes
-
Test your changes
-
Commit your changes:
git commit -m "Description of your changes" -
Push to your fork:
git push origin feature/your-feature-name
-
Create a Pull Request
- Ensure your PR description clearly describes the problem and solution
- Update the documentation if necessary
- The PR must pass all CI checks
- At least one review is required before merging
- Once approved, the PR will be merged by a maintainer
Please follow our Code Style Guide when making changes. Key points:
- Use SwiftLint for code style enforcement
- Follow Swift API Design Guidelines
- Write clear, descriptive commit messages
- Include comments for complex logic
-
Write unit tests for new features
-
Ensure all tests pass:
swift test -
Run UI tests if applicable
-
Test on both iOS and watchOS
- Update relevant documentation
- Add comments for public APIs
- Update README if necessary
- Follow our Documentation Guidelines
For questions and support:
- Email: helpme@mirrorhr.org
- GitHub Issues: Create an issue
- Documentation: docs/
By contributing, you agree that your contributions will be licensed under the project's MIT License.
- All TODOs in the codebase should be in English, actionable, and reference the
ROADMAP.mdorTODO.mdfor more details. - If you find a TODO that is critical or user-facing, consider moving it to an open issue or documenting it in
TODO.mdorROADMAP.md. - Avoid leaving vague or outdated TODOs in the code. If a TODO is no longer relevant, remove it.
- For more information on open issues and future plans, see the ROADMAP.md and TODO.md files.
We use SwiftLint to help enforce code style and quality. Due to the current project structure and the inclusion of dependencies and build artifacts within the repository, SwiftLint may report violations outside of our own code. For this reason, SwiftLint failures are currently allowed in our CI workflow and do not block merges.
Please focus on fixing style issues only in first-party code.
We plan to improve the project structure and linting configuration over time so that only our own code is checked and required to pass. If you have suggestions or want to help, please open an issue or a pull request.
This repository requires all commits to be signed. This helps maintain security and integrity of the codebase.
-
Configure Git to use SSH for commit signing:
git config --global gpg.format ssh -
Set your SSH key for signing:
git config --global user.signingkey ~/.ssh/id_ed25519.pub -
Configure Git to always sign commits:
git config --global commit.gpgsign true
Alternatively, if you prefer GPG signing, please follow GitHub's documentation on GPG commit signing.
To verify that your commits will be properly signed, make a test commit and check that it shows as "Verified" on GitHub.
If you're having issues with commit signing, please check GitHub's troubleshooting guides or reach out to us at info@fightthestroke.org.