Getting Started
Before you start contributing:- Read the documentation: Familiarize yourself with the project
- Set up your environment: Follow the Development Setup guide
- Run the project: Ensure everything works with Running Locally
- Understand the code: Review Code Style and Component Guidelines
How to Contribute
There are many ways to contribute to Air Tracker:Reporting Bugs
If you find a bug:- Check existing issues: Search for similar issues first
- Provide details: Include steps to reproduce, expected behavior, and actual behavior
- Include environment info: OS, browser version, Node.js version
- Add screenshots: If applicable
Suggesting Features
To suggest a new feature:- Check existing requests: Avoid duplicates
- Explain the use case: Why is this feature valuable?
- Provide examples: Show how it would work
- Consider alternatives: Are there existing solutions?
Contributing Code
Follow these steps to contribute code:See Branch Naming for conventions.
See Commit Messages for conventions.
Branch Naming
Use descriptive branch names with prefixes:Branch Prefixes
feature/- New featuresfix/- Bug fixesrefactor/- Code refactoringdocs/- Documentation updatestest/- Test additions or updateschore/- Maintenance tasks
Examples
Naming Guidelines
- Use lowercase
- Use hyphens, not spaces or underscores
- Be descriptive but concise
- Reference issue number if applicable:
fix/123-memory-leak
Commit Messages
Follow the Conventional Commits specification.Format
Types
- feat: New feature
- fix: Bug fix
- docs: Documentation changes
- style: Code style changes (formatting, no logic change)
- refactor: Code refactoring
- test: Adding or updating tests
- chore: Maintenance tasks (dependencies, config)
- perf: Performance improvements
Examples
Commit Message Guidelines
- Use imperative mood: “add” not “added” or “adds”
- Keep subject line under 72 characters
- Capitalize the subject line
- Don’t end subject with a period
- Separate subject from body with blank line
- Wrap body at 72 characters
- Explain what and why, not how
Pull Request Process
PR Title
Use the same format as commit messages:PR Description
Include:- Summary: What does this PR do?
- Motivation: Why is this change needed?
- Changes: What was changed?
- Testing: How was this tested?
- Screenshots: If UI changes
- Related Issues: Link to issues
PR Template Example
PR Checklist
Before submitting, ensure:- Code follows style guidelines
- All tests pass:
npm test - Linter passes:
npm run lint - New code has tests
- Documentation is updated
- Commit messages follow conventions
- PR title follows conventions
- PR description is complete
Code Review Guidelines
For Contributors
When receiving feedback:- Be responsive: Reply to comments promptly
- Be open: Consider suggestions with an open mind
- Ask questions: If feedback is unclear
- Make changes: Address all requested changes
- Test again: After making changes
- Update PR: Push new commits or force-push if rebasing
For Reviewers
When reviewing:- Be respectful: Provide constructive feedback
- Be specific: Point to exact lines
- Explain why: Don’t just say what’s wrong
- Suggest solutions: Provide examples
- Approve when ready: Once all concerns are addressed
Development Workflow
Keep Your Fork Updated
Regularly sync with the main repository:Rebase Before Merging
Rebase your feature branch before submitting PR:Handle Merge Conflicts
If conflicts occur:- Rebase on latest main
- Resolve conflicts locally
- Test after resolving
- Force push to your branch
Code Quality Standards
Required Checks
All PRs must pass:- Linting: ESLint with Angular rules
- Type checking: TypeScript strict mode
- Tests: All unit tests
- Build: Production build succeeds
Recommended Practices
- Write tests first: Test-driven development
- Keep PRs small: Easier to review
- One concern per PR: Single responsibility
- Update docs: Keep documentation current
- Add comments: Explain complex logic
Testing Requirements
Test Coverage
Maintain test coverage:- Statements: 80%+
- Branches: 75%+
- Functions: 80%+
- Lines: 80%+
Test Types
- Unit tests: For all new components and services
- Integration tests: For feature interactions
- Manual testing: On different browsers and devices
Documentation
When to Update Docs
Update documentation when:- Adding new features
- Changing APIs
- Modifying configuration
- Updating dependencies
- Adding new patterns
Documentation Standards
- Use clear, concise language
- Include code examples
- Add screenshots for UI changes
- Update all affected pages
- Check for broken links
Getting Help
Resources
- Documentation: Read the full development docs
- Issues: Search existing issues
- Discussions: Join project discussions
- Code: Review existing code for patterns
Ask Questions
Don’t hesitate to ask:- Open an issue for clarification
- Comment on existing issues
- Reach out to maintainers
License
By contributing, you agree that your contributions will be licensed under the same license as the project.Recognition
Contributors are recognized:- In release notes
- In the contributors list
- In commit history
Next Steps
- Review development setup
- Read code style guidelines
- Explore component guidelines
- Check out testing guide
