Contributing Guide
Thank you for your interest in contributing to DesterLib! This guide will help you get started with contributing to the project.
🎯 Quick Start
Section titled “🎯 Quick Start”New to DesterLib? Here’s the fastest way to start contributing:
- Fork the repository on GitHub
- Clone your fork locally
- Create a branch for your changes
- Make your changes and commit with
pnpm commit - Add a changeset with
pnpm changeset(if needed) - Push to your fork and create a Pull Request
🚀 For Community Contributors
Section titled “🚀 For Community Contributors”If you don’t have write access to the repository, follow the fork workflow:
1. Fork & Clone
Section titled “1. Fork & Clone”# Fork the repo on GitHub, then:git clone https://github.com/YOUR-USERNAME/desterlib.gitcd desterlib
# Add upstream remotegit remote add upstream https://github.com/DesterLib/desterlib.git2. Sync with Upstream
Section titled “2. Sync with Upstream”Before starting new work, always sync:
git fetch upstreamgit checkout maingit merge upstream/maingit push origin main3. Create Feature Branch
Section titled “3. Create Feature Branch”# Create branch from maingit checkout maingit checkout -b feat/your-feature-name4. Make Changes & Commit
Section titled “4. Make Changes & Commit”# Make your changes, then:pnpm commit# Follow the interactive prompts5. Add Changeset (if needed)
Section titled “5. Add Changeset (if needed)”For user-facing changes:
pnpm changeset# Select packages and bump type# Write a clear summarygit add .changeset/git commit -m "chore: add changeset"6. Push to Your Fork
Section titled “6. Push to Your Fork”git push origin feat/your-feature-name7. Create Pull Request
Section titled “7. Create Pull Request”- Go to the DesterLib repository
- Click “Pull requests” → “New pull request”
- Click “compare across forks”
- Select:
- base:
DesterLib/desterlib/main - head:
YOUR-USERNAME/desterlib/feat/your-feature-name
- base:
- Fill out the PR template
- Submit!
👥 For Core Team Members
Section titled “👥 For Core Team Members”If you have write access to the repository:
Workflow
Section titled “Workflow”# Clone the repogit clone https://github.com/DesterLib/desterlib.gitcd desterlib
# Create feature branch from maingit checkout maingit pull origin maingit checkout -b feat/your-feature-name
# Make changes, commit, add changesetpnpm commitpnpm changeset
# Push to origingit push -u origin feat/your-feature-name
# Create PR using script (targets main by default)pnpm pr:createSee the Development Workflow for the complete workflow.
🔍 Finding Issues to Work On
Section titled “🔍 Finding Issues to Work On”Good First Issues
Section titled “Good First Issues”Look for issues labeled:
good first issue- Perfect for newcomershelp wanted- Community help neededdocumentation- Improve docs
Before Starting Work
Section titled “Before Starting Work”- Comment on the issue to let maintainers know you’re interested
- Wait for approval before starting work
- Ask questions if anything is unclear
Don’t see an issue you want? Create one!
📋 Contribution Types
Section titled “📋 Contribution Types”Code Contributions
Section titled “Code Contributions”- ✨ New features - Add functionality
- 🐛 Bug fixes - Fix issues
- ⚡ Performance - Optimize code
- ♻️ Refactoring - Improve code quality
Requirements:
- Follow code style guidelines
- Add tests if possible
- Update documentation
- Create a changeset
Documentation Contributions
Section titled “Documentation Contributions”- 📝 Improve docs - Fix typos, clarify content
- 📖 Add examples - Show how to use features
- 🎓 Tutorials - Create guides
- 🌍 Translations - Help internationalize
Requirements:
- Clear and concise writing
- Accurate information
- Proper formatting
- No changeset needed for docs-only
Testing Contributions
Section titled “Testing Contributions”- ✅ Add tests - Increase coverage
- 🧪 Improve tests - Better assertions
- 🔧 Fix flaky tests - Improve reliability
Requirements:
- Tests pass locally
- Follow existing test patterns
Design Contributions
Section titled “Design Contributions”- 🎨 UI improvements - Better user interface
- 💄 Style updates - Visual enhancements
- 🖼️ Assets - Icons, images, etc.
Requirements:
- Match existing design language
- Responsive design
- Accessibility considerations
✅ Pull Request Checklist
Section titled “✅ Pull Request Checklist”Before submitting your PR, verify:
- Code follows project style (
pnpm lint) - Type checking passes (
pnpm check-types) - Build succeeds (
pnpm build) - Commits follow conventional format (
pnpm commit) - Changeset added (if user-facing changes)
- Documentation updated (if needed)
- PR template filled out completely
- Tests pass (when available)
- No merge conflicts with
main
📝 Commit Message Format
Section titled “📝 Commit Message Format”We use Conventional Commits:
<type>(<scope>): <description>
[optional body]
[optional footer]Examples
Section titled “Examples”feat(api): add user search endpointfix(stream): resolve buffering on Safaridocs: update contributing guiderefactor(database): simplify queriesperf(api): optimize video encodingUsing the Interactive Tool
Section titled “Using the Interactive Tool”pnpm commit# Follow the prompts - it's easy!See Commit Guidelines for details.
🦋 When to Add a Changeset
Section titled “🦋 When to Add a Changeset”✅ Add Changeset For:
Section titled “✅ Add Changeset For:”- New features (minor bump)
- Bug fixes (patch bump)
- Breaking changes (major bump)
- Performance improvements (patch/minor)
- Dependency updates affecting users (patch)
❌ Skip Changeset For:
Section titled “❌ Skip Changeset For:”- Documentation changes
- Internal refactoring (no API changes)
- Test additions/updates
- CI/CD changes
- Code style/formatting
Creating a Changeset
Section titled “Creating a Changeset”pnpm changeset
# Select packages: Usually 'api'# Choose bump type:# - patch (0.0.X) for bug fixes# - minor (0.X.0) for features# - major (X.0.0) for breaking changes# Write clear summary (becomes changelog)See Versioning Guide for more.
🔄 PR Review Process
Section titled “🔄 PR Review Process”1. Automated Checks
Section titled “1. Automated Checks”GitHub Actions will automatically:
- Validate changesets
- Run linters
- Check types
- Verify builds
2. Code Review
Section titled “2. Code Review”Maintainers will:
- Review your code
- Provide feedback
- Request changes (if needed)
- Approve when ready
3. Address Feedback
Section titled “3. Address Feedback”Make requested changes:
# Make changes locallygit add .pnpm commitgit push origin feat/your-feature-name# PR updates automatically4. Merge
Section titled “4. Merge”Once approved:
- Maintainer merges to
main - Your contribution is part of DesterLib!
- Docs automatically deploy to GitHub Pages
- Celebrate! 🎉
🌟 After Your PR is Merged
Section titled “🌟 After Your PR is Merged”Update Your Fork
Section titled “Update Your Fork”git checkout maingit pull upstream maingit push origin mainClean Up
Section titled “Clean Up”# Delete local branchgit branch -d feat/your-feature-name
# Delete remote branchgit push origin --delete feat/your-feature-name📚 Additional Resources
Section titled “📚 Additional Resources”- Development Workflow - Complete development workflow
- Commit Guidelines - Commit message format
- Versioning Guide - Changesets and releases
- Quick Reference - Common commands
- Project Structure - Codebase organization
💬 Getting Help
Section titled “💬 Getting Help”Need assistance?
- 💭 GitHub Discussions - Ask questions
- 🐛 GitHub Issues - Report bugs
- 📖 Full Contributing Guide - Detailed instructions
🎉 Recognition
Section titled “🎉 Recognition”All contributors are recognized in:
- Project README
- Release notes
- GitHub contributors page
Thank you for helping make DesterLib better! ❤️
Code of Conduct
Section titled “Code of Conduct”We are committed to providing a welcoming and inclusive community. Be respectful, patient, and considerate of others.
Expected behavior:
- Be welcoming and inclusive
- Be respectful of differing viewpoints
- Accept constructive criticism gracefully
- Focus on what’s best for the community
Unacceptable behavior:
- Harassment or discriminatory language
- Personal attacks or insults
- Publishing others’ private information
- Other unprofessional conduct
Violations may result in temporary or permanent ban from the project.
License
Section titled “License”By contributing, you agree that your contributions will be licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).
This ensures DesterLib remains free and open source, with all derivatives also remaining open source.