Thanks for your interest in contributing to GymClock! 🏋️
- Fork the repository
- Clone your fork locally
- Create a branch for your feature or fix
- Make your changes
- Test on a real device if possible (geofencing doesn't work well in simulators)
- Submit a Pull Request
- Xcode 15.0+
- iOS 17.0+ device or simulator
- watchOS 10.0+ (for watch features)
- macOS Sonoma 14.0+ (for development)
- Open the project in Xcode
- Select your development team for signing
- Build and run on your target device
- Use SwiftUI for all new views
- Follow Apple's Swift API Design Guidelines
- Use
@MainActorfor UI-related classes - Prefer
async/awaitover completion handlers for new code - Add
#Previewmacros to all views
- Use clear, descriptive commit messages
- Start with a verb: "Add", "Fix", "Update", "Remove"
- Keep the first line under 72 characters
- Reference issues when applicable: "Fix #42: ..."
- Keep PRs focused — one feature or fix per PR
- Include a description of what changed and why
- Add screenshots for UI changes
- Ensure the project builds without warnings
- Bug fixes
- Performance improvements
- New features from the Roadmap
- Documentation improvements
- Test coverage
- Accessibility improvements
- Breaking changes without discussion
- Large refactors without a tracking issue
- Dependencies on third-party libraries (we prefer first-party frameworks)
- Use GitHub Issues
- Include device/OS version
- Steps to reproduce
- Expected vs actual behavior
- Screenshots or logs if applicable
Be respectful, inclusive, and constructive. We're all here to build something cool.
Thanks for helping make GymClock better! 💪