Thank you for your interest in contributing! This document outlines the process and guidelines.
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/audio-metadata.git cd audio-metadata - Create a feature branch from
main:git checkout -b feature/your-feature-name
- Install Dart SDK (3.10.7 or higher): https://dart.dev/get-dart
- Install dependencies:
dart pub get
- Verify setup:
dart test
This project follows Dart conventions:
- Use trailing commas for multi-line function signatures
- Follow linting rules in
analysis_options.yaml - Run before committing:
dart format lib/ test/ dart analyze
This project follows TDD principles:
- Write tests first for all new functionality
- Test organization:
- Unit tests:
test/core/,test/formats/ - Integration tests:
test/regression/ - Streaming tests:
test/streaming/
- Unit tests:
- Test naming:
test('should parse MP3 with ID3v2 tags', () {});
- Run tests:
dart test
- Use clear, descriptive commit messages
- Start with a verb: "Add", "Fix", "Refactor", "Update"
- Reference issues: "Fixes #123"
- Keep commits atomic
Examples:
Add ID3v2.4 frame parsing
Fix encoding detection in FLAC parser
Refactor vorbis comment parsing
- Ensure CI passes
- Push to your fork:
git push origin feature/your-feature-name
- Create PR with:
- Clear title
- Description referencing issues
- List of changes
- Tests added/updated
- All tests pass (
dart test) - Code analysis passes (
dart analyze) - Code formatted (
dart format) - Documentation updated if needed
- Commit messages are clear
- Use GitHub Issues for bugs and feature requests
- Provide reproduction steps
- Include environment details (Dart SDK version, OS)
Thank you for contributing! 🎵