First off, thank you for considering contributing to MyTaskly! 🎉
It's people like you that make MyTaskly such a great tool. We welcome contributions from developers of all skill levels, whether you're fixing a typo, reporting a bug, or implementing a major feature.
- Code of Conduct
- How Can I Contribute?
- Development Setup
- Coding Standards
- Commit Message Guidelines
- Testing Guidelines
- Documentation
- Community
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code. Please be respectful, inclusive, and considerate of others.
- Be respectful: Treat everyone with respect and kindness
- Be inclusive: Welcome newcomers and help them get started
- Be constructive: Provide helpful feedback and suggestions
- Be professional: Keep discussions focused on the project
- Be patient: Remember that we're all learning
- Harassment, discrimination, or offensive comments
- Personal attacks or trolling
- Publishing others' private information
- Spam or off-topic content
Before creating a bug report, please check the existing issues to see if the problem has already been reported.
- Use a clear and descriptive title
- Describe the exact steps to reproduce the problem
- Provide specific examples with screenshots or videos if possible
- Describe the behavior you observed and what you expected
- Include details about your environment:
- OS version (iOS/Android/Windows/macOS/Linux)
- App version
- Device model
- React Native/Expo version
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '...'
3. Scroll down to '...'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Environment:**
- Device: [e.g. iPhone 14, Pixel 7]
- OS: [e.g. iOS 16.3, Android 13]
- App Version: [e.g. 1.0.0]
**Additional context**
Add any other context about the problem here.We love to hear ideas for new features! Before creating an enhancement suggestion:
- Check the roadmap to see if it's already planned
- Check existing feature requests
**Is your feature request related to a problem?**
A clear description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear description of what you want to happen.
**Describe alternatives you've considered**
Any alternative solutions or features you've considered.
**Additional context**
Add any other context, mockups, or screenshots about the feature request.
**Would you be willing to implement this feature?**
Let us know if you'd like to work on this!Unsure where to begin? Look for issues labeled:
good first issue- Small, beginner-friendly taskshelp wanted- Issues where we need community helpdocumentation- Documentation improvements
- Fork the repository and create your branch from
main - Make your changes following our coding standards
- Test your changes thoroughly
- Update documentation if needed
- Write a clear commit message following our guidelines
- Submit a pull request
## Description
Brief description of what this PR does.
## Type of Change
- [ ] Bug fix (non-breaking change that fixes an issue)
- [ ] New feature (non-breaking change that adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] Documentation update
- [ ] Code refactoring
- [ ] Performance improvement
## Related Issues
Closes #(issue number)
## Testing
Describe how you tested your changes:
- [ ] iOS
- [ ] Android
- [ ] Web
## Screenshots (if applicable)
Add screenshots to demonstrate the changes.
## Checklist
- [ ] My code follows the project's coding standards
- [ ] I have performed a self-review of my code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have updated the documentation accordingly
- [ ] My changes generate no new warnings
- [ ] I have tested my changes on iOS/Android/Web- Node.js 18+ and npm/yarn
- Git
- For iOS: macOS with Xcode 14+
- For Android: Android Studio with SDK 33+
-
Clone your fork:
git clone https://github.com/YOUR_USERNAME/MyTaskly-app.git cd MyTaskly-app -
Add upstream remote:
git remote add upstream https://github.com/Gabry848/MyTaskly-app.git
-
Install dependencies:
npm install
-
Configure environment: Create a
.envfile based on.env.example(you'll need to add your own API keys) -
Start development server:
npm start
-
Create a feature branch:
git checkout -b feature/amazing-new-feature
git fetch upstream
git checkout main
git merge upstream/main- Use TypeScript for all new files
- Define proper types and interfaces
- Avoid using
any- useunknownor specific types instead - Use type inference where possible
We use ESLint and Prettier for code formatting:
# Check for linting errors
npm run lint
# Auto-fix linting issues
npm run lint --fix- Components: PascalCase (e.g.,
TaskCard.tsx) - Functions: camelCase (e.g.,
handleTaskComplete) - Constants: UPPER_SNAKE_CASE (e.g.,
API_BASE_URL) - Types/Interfaces: PascalCase with descriptive names (e.g.,
TaskItemProps) - Files: kebab-case for utilities (e.g.,
date-utils.ts), PascalCase for components
// 1. Imports
import React from 'react';
import { View, Text } from 'react-native';
// 2. Types
interface MyComponentProps {
title: string;
onPress: () => void;
}
// 3. Component
const MyComponent: React.FC<MyComponentProps> = ({ title, onPress }) => {
// 4. Hooks
const [state, setState] = useState();
// 5. Functions
const handlePress = () => {
// ...
};
// 6. Render
return (
<View>
<Text>{title}</Text>
</View>
);
};
// 7. Styles
const styles = StyleSheet.create({
// ...
});
// 8. Export
export default MyComponent;- Keep components small and focused - One component, one responsibility
- Use functional components with hooks instead of class components
- Extract reusable logic into custom hooks
- Memoize expensive computations with
useMemo - Optimize re-renders with
React.memowhen needed - Handle errors gracefully with try-catch blocks
- Add meaningful comments for complex logic
- Write self-documenting code with descriptive variable names
We follow the Conventional Commits specification:
<type>(<scope>): <subject>
<body>
<footer>
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, no logic change)refactor: Code refactoringperf: Performance improvementstest: Adding or updating testschore: Maintenance tasksci: CI/CD changes
feat(tasks): add task priority levels
- Added priority dropdown in task creation
- Updated task card to show priority indicator
- Added sorting by priority in task list
Closes #123fix(voice-chat): improve VAD sensitivity
Adjusted VAD thresholds to reduce false positives
and improve voice detection reliability.
Fixes #456# Run all tests
npm test
# Run tests in watch mode
npm test -- --watch
# Run tests with coverage
npm test -- --coverage- Write tests for all new features
- Update tests when modifying existing features
- Aim for meaningful test coverage, not just high percentages
- Test edge cases and error scenarios
describe('MyComponent', () => {
it('should render correctly', () => {
// Test implementation
});
it('should handle user interaction', () => {
// Test implementation
});
it('should handle errors gracefully', () => {
// Test implementation
});
});- Update README.md if you change functionality
- Update CHANGELOG.md following the existing format
- Add JSDoc comments for public APIs and complex functions
- Create/update inline comments for complex logic
- Update type definitions when modifying interfaces
/**
* Creates a new task with the provided details
* @param title - The task title
* @param description - Optional task description
* @param dueDate - Due date for the task
* @returns The created task object
* @throws {Error} If task creation fails
*/
async function createTask(
title: string,
description?: string,
dueDate?: Date
): Promise<Task> {
// Implementation
}- GitHub Discussions: Ask questions and share ideas
- GitHub Issues: Report bugs and request features
- Pull Requests: Get feedback on your contributions
Contributors will be acknowledged in:
- The project README
- Release notes
- The contributors list on GitHub
- Solves a real problem - Addresses an actual need or bug
- Well-tested - Includes tests and has been manually tested
- Well-documented - Clear code and updated documentation
- Follows conventions - Adheres to our coding standards
- Minimal scope - Focused on one thing, not multiple unrelated changes
- Backward compatible - Doesn't break existing functionality
Your contributions make MyTaskly better for everyone. Whether you're fixing a typo, reporting a bug, or implementing a major feature, we appreciate your time and effort.
If you have any questions about contributing, feel free to open an issue or reach out to @Gabry848.
Happy coding! 🚀
This contributing guide is itself open to contributions. If you find ways to improve it, please submit a pull request!