Thank you for your interest in contributing to Metarr! This document provides guidelines for human contributors.
For AI assistants: See CLAUDE.md for AI-specific workflow rules.
Be respectful: Treat all contributors with respect. No harassment, discrimination, or toxic behavior.
Be constructive: Provide helpful feedback. Focus on the code, not the person.
Be collaborative: Work together to solve problems. Ask questions, share knowledge.
# Fork the repository on GitHub
# Then clone your fork
git clone https://github.com/YOUR_USERNAME/Metarr.git
cd Metarr
# Add upstream remote
git remote add upstream https://github.com/jsaddiction/Metarr.git# Install dependencies
npm install
# Create environment file
cp .env.example .env
# Edit .env with your settings (optional for development)
# Start development servers
npm run dev:all # Backend (port 3000) + Frontend (port 3001)# Always branch from master
git checkout master
git pull upstream master
# Create feature branch
git checkout -b feature/your-feature-nameComplete workflow: See docs/development/WORKFLOW.md
- Make changes - Edit code, add features, fix bugs
- Test changes - Run tests (
npm test), test in browser - Lint code -
npm run lint(fixes auto-apply) - Type check -
npm run typecheck - Build -
npm run build && npm run build:frontend - Commit - Small, focused commits with clear messages
- Push - Push to your fork
- Pull request - Create PR on GitHub
Before every commit:
- Code quality: TypeScript errors resolved, ESLint passing
- Tests: All tests pass (
npm test) - Build: Both builds succeed
- Documentation: Relevant docs updated
- Manual testing: Changes verified in browser
See WORKFLOW.md for complete checklist.
Use conventional commits:
type(scope): subject
body (optional)
Types:
feat: New featurefix: Bug fixdocs: Documentation changesrefactor: Code refactoring (no behavior change)test: Test additions or modificationschore: Build process, tooling, dependencies
Examples:
feat(enrichment): add Fanart.tv provider integration
fix(scan): resolve race condition in NFO parsing
docs(reference): add asset scoring algorithm details
See: docs/development/WORKFLOW.md for complete git standards.
Tests are mandatory for:
- New business logic functions
- New API endpoints
- Database operations
- Complex algorithms (scoring, matching, parsing)
npm test # Run all tests once
npm run test:watch # Watch mode for developmentPlace tests adjacent to source files:
src/services/assetScoring.ts
src/services/assetScoring.test.ts
See: docs/development/TESTING.md for complete testing guidelines.
When to update docs:
- New features: Update relevant phase/architecture docs
- API changes: Update docs/architecture/API.md
- Database changes: Update docs/architecture/DATABASE.md
- Configuration changes: Update relevant concepts or architecture doc
Documentation standards: See docs/development/DOCUMENTATION_RULES.md
- Base branch: Always target
master - Title: Clear, descriptive title
- Description: Explain what changed and why
- Link issues: Reference related issues (
Fixes #123)
Ensure your PR includes:
- Clear description of changes
- Tests for new functionality
- Documentation updates
- No breaking changes (or clearly documented)
- All CI checks passing
- Maintainers will review your PR
- Address feedback promptly
- Keep discussion focused and professional
- Be patient - reviews take time
# Update your fork
git checkout master
git pull upstream master
git push origin master
# Delete feature branch
git branch -d feature/your-feature-name
git push origin --delete feature/your-feature-nameTypeScript/JavaScript:
- Use TypeScript for all new code
- Strict type checking enabled
- No
anytypes (useunknownif needed) - ESLint configuration enforced
React Components:
- Functional components with hooks
- TypeScript interfaces for props
- Organized by feature/domain
See: docs/development/CODING_STANDARDS.md
High Priority:
- Jellyfin player integration
- Plex player integration
- MusicBrainz provider integration
- Test coverage improvements
Documentation:
- Screenshots and examples
- Tutorial videos
- Troubleshooting guides
Frontend:
- UI/UX improvements
- Accessibility enhancements
- Mobile responsiveness
Backend:
- Performance optimizations
- Error handling improvements
- Additional provider integrations
- Bug reports: GitHub Issues
- Feature requests: GitHub Discussions
- Questions: GitHub Discussions
By contributing to Metarr, you agree that your contributions will be licensed under the MIT License.