First off, thank you for considering contributing to this project! 🌟
Before creating bug reports, please check existing issues to avoid duplicates. When you create a bug report, include as many details as possible:
- Use a clear and descriptive title
- Describe the exact steps to reproduce the problem
- Provide specific examples to demonstrate the steps
- Describe the behavior you observed and what you expected
- Include screenshots or animated GIFs if relevant
- Mention your browser, OS, and hardware specs
Enhancement suggestions are tracked as GitHub issues. When creating an enhancement suggestion:
- Use a clear and descriptive title
- Provide a detailed description of the suggested enhancement
- Explain why this enhancement would be useful
- List any alternative solutions you've considered
- Fork the repo and create your branch from
main - Make your changes following our coding standards
- Test your changes thoroughly
- Update documentation if needed
- Ensure the build passes:
npm run build - Ensure type checking passes:
npm run typecheck - Create a Pull Request with a clear description
# Clone your fork
git clone https://github.com/YOUR_USERNAME/mediapipe-for-fun.git
cd mediapipe-for-fun
# Install dependencies
npm install
# Start development server
npm run dev- Use TypeScript strict mode (already configured)
- Provide type annotations for public APIs
- Avoid
anytypes - useunknownif truly needed - Document complex type definitions
- Use clear, descriptive variable and function names
- Write comments for complex logic
- Keep functions small and focused (Single Responsibility Principle)
- Use async/await instead of promise chains
- Prefer const over let, never use var
- One class/component per file
- Group related types in
types/directories - Keep utilities pure and testable
- Separate concerns (UI, business logic, rendering)
- Use object pooling for frequently created objects
- Prefer GPU operations over CPU when possible
- Profile before optimizing (don't guess)
- Consider mobile/lower-end devices
- Add JSDoc comments to public APIs
- Update README.md for user-facing changes
- Document architectural decisions in code comments
- Keep design docs (docs/) up to date
Write clear commit messages:
feat: add gravitational wave effect
fix: correct hand tracking jitter at high FPS
docs: update performance benchmarks
refactor: simplify particle pooling logic
perf: optimize shader compilation
Prefixes:
feat: New featurefix: Bug fixdocs: Documentation onlystyle: Code style (formatting, no logic change)refactor: Code change that neither fixes a bug nor adds a featureperf: Performance improvementtest: Adding or updating testschore: Maintenance tasks
- Maintainers will review your PR
- Address any feedback or requested changes
- Once approved, your PR will be merged
- Your contribution will be acknowledged in releases
- Be respectful and constructive
- Help others when you can
- Share your knowledge
- Celebrate improvements, no matter how small
Feel free to open an issue with the question label or reach out to the maintainers.
Thank you for contributing! 🎉✨