First off, thank you for considering contributing to SWIRL! It's people like you that make SWIRL such a great tool.
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code.
Before creating bug reports, please check the issue list as you might find out that you don't need to create one. When you are creating a bug report, please include as many details as possible:
- Use a clear and descriptive title
- Describe the exact steps to reproduce the problem
- Provide specific examples
- Describe the behavior you observed and what you expected
- Include screenshots if possible
- Include your environment details (Flutter version, device, OS)
Enhancement suggestions are tracked as GitHub issues. When creating an enhancement suggestion, please include:
- 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
- Fill in the required template
- Follow the Flutter style guide
- Include tests when adding new features
- Update documentation as needed
- End all files with a newline
git clone https://github.com/yourusername/swirl.git
cd swirl/swirlgit checkout -b feature/amazing-feature- Write clean, readable code
- Follow existing code style
- Add tests for new functionality
- Update documentation
flutter test
flutter analyzegit add .
git commit -m "feat: add amazing feature"Use conventional commit messages:
feat:- New featurefix:- Bug fixdocs:- Documentation changesstyle:- Code style changes (formatting)refactor:- Code refactoringtest:- Adding testschore:- Maintenance tasks
git push origin feature/amazing-feature- Use a clear title and description
- Reference any related issues
- Include screenshots for UI changes
- Ensure all tests pass
- Follow the Effective Dart style guide
- Use
flutter formatbefore committing - Maximum line length: 80 characters
- Use meaningful variable names
- Add comments for complex logic
lib/
├── core/ # Core utilities, theme, constants
├── features/ # Feature modules (one per screen/function)
├── data/ # Models, repositories, services
└── shared/ # Shared widgets
- Keep widgets small and focused
- Extract reusable components
- Use const constructors when possible
- Prefer composition over inheritance
- Use Riverpod for state management
- Keep providers in the feature they belong to
- Use code generation for providers when appropriate
- Write unit tests for business logic
- Write widget tests for UI components
- Write integration tests for critical flows
- Aim for >80% code coverage
- Update README.md if needed
- Document public APIs
- Add inline comments for complex logic
- Update CHANGELOG.md
- CI/CD checks must pass
- Code review by at least one maintainer
- All feedback addressed
- No merge conflicts
- Branch up to date with main
Feel free to:
- Open a discussion on GitHub
- Ask in our Discord server
- Email us at dev@swirlapp.com
Thank you for contributing! 🎉