Thank you for considering contributing to EasyTransfer! We welcome contributions from the community. Please follow these guidelines to ensure a smooth contribution process.
-
Fork the repository on GitHub.
-
Clone your forked repository to your local machine:
git clone https://github.com/YOUR_USERNAME/EasyTransfer.git cd EasyTransfer -
Install dependencies for both client and server:
# Client cd client npm install # Server cd ../server npm install
-
Create a new branch for your feature or bugfix:
git checkout -b feat/your-feature-name
# Start the client (in /client directory)
npm run dev
# Start the server (in /server directory)
npm run devBefore submitting changes, ensure your code meets quality standards:
# Lint your code
npm run lint
# Format your code
npm run format
# Run tests
npm test
# Build the project
npm run build-
Follow the project's coding standards:
- Use TypeScript for type safety
- Follow existing code patterns and conventions
- Keep functions small and focused
- Write clear, self-documenting code
-
Write semantic commit messages following Conventional Commits:
<type>(<scope>): <description> [optional body] [optional footer]Types:
feat,fix,docs,style,refactor,perf,test,build,ci,choreExamples:
feat(client): add support for drag-and-drop file upload fix(server): resolve WebRTC connection timeout docs(readme): update installation instructions test(client): add unit tests for FileChunkManager
-
Write tests for new features or bug fixes:
- Add unit tests in the appropriate test file
- Ensure all tests pass before submitting
- Aim for comprehensive test coverage
-
Test your changes thoroughly:
- Test WebRTC connections on different networks
- Verify file transfers work correctly
- Check UI responsiveness
- Test edge cases and error conditions
-
Push your changes to your forked repository:
git push origin feat/your-feature-name
-
Open a pull request on the original repository.
-
Provide a clear description:
- Explain what changes you made and why
- Reference any related issues (e.g., "Fixes #123")
- Include screenshots for UI changes
- List any breaking changes
-
Ensure CI checks pass:
- All tests must pass
- Code must be properly linted and formatted
- Build must succeed
-
Respond to review feedback:
- Address reviewer comments promptly
- Make requested changes
- Re-request review after updates
- Maintainers will review your PR as soon as possible
- Reviews may request changes to improve code quality
- Once approved, a maintainer will merge your PR
- Your contribution will be acknowledged in the release notes
We welcome various types of contributions:
- 🐛 Bug fixes: Fix issues reported in GitHub Issues
- ✨ New features: Add new functionality (discuss in an issue first)
- 📝 Documentation: Improve README, guides, or code comments
- 🧪 Tests: Add or improve test coverage
- 🎨 UI/UX improvements: Enhance user interface or experience
- ⚡ Performance: Optimize code for better performance
- 🔒 Security: Fix security vulnerabilities
- Check the Project Wiki for documentation
- Review AGENTS.md for development guidelines
- Ask questions in GitHub Issues
- Read existing code to understand patterns
- Be respectful and inclusive
- Provide constructive feedback
- Focus on what is best for the project
- Show empathy towards other contributors
Thank you for contributing to EasyTransfer! 🚀