Thank you for considering contributing to HyperFrame! This document provides guidelines and instructions for contributing to this project.
HyperFrame aims to provide Flutter developers with the fastest, most efficient mobile development environment possible by leveraging native desktop performance with device frame simulation.
Core Principles:
- Performance First - Every feature should maintain blazing-fast speed
- Developer Experience - Simple, intuitive, and delightful to use
- Cross-Platform - Work seamlessly across macOS, Windows, and Linux
- Zero Overhead - No performance impact on production builds
-
Fork the repository
git clone https://github.com/aeTunga/HyperFrame.git cd HyperFrame -
Install dependencies
flutter pub get
-
Run the app
flutter run -d macos
-
Run tests
flutter test
- Flutter 3.10.3 or higher
- Dart 3.10.3 or higher
- macOS 10.14+ (for macOS development)
- Windows 10+ or Linux Ubuntu 20.04+ (for those platforms)
Before creating a bug report, please:
- Check existing issues to avoid duplicates
- Use the latest version of HyperFrame
- Verify the bug is reproducible
Bug Report Template:
**Description:**
A clear description of the bug
**Steps to Reproduce:**
1. Step one
2. Step two
3. Step three
**Expected Behavior:**
What you expected to happen
**Actual Behavior:**
What actually happened
**Environment:**
- HyperFrame version:
- Flutter version:
- OS: (macOS/Windows/Linux + version)
- Device being simulated:
**Screenshots/Logs:**
If applicable, add screenshots or error logsEnhancement suggestions are welcome! Please:
- Check existing issues for similar suggestions
- Provide clear use cases for the enhancement
- Explain why it would benefit HyperFrame users
Enhancement Template:
**Feature Description:**
Clear description of the proposed feature
**Use Case:**
Why is this feature needed?
**Proposed Implementation:**
How would you implement this?
**Alternatives Considered:**
What other approaches did you consider?- Create an issue first to discuss the change
- Fork the repository and create a feature branch
- Follow code style guidelines (see below)
- Write tests for new functionality
- Update documentation as needed
-
Create a feature branch
git checkout -b feature/your-feature-name
-
Make your changes
- Write clean, maintainable code
- Follow Flutter best practices
- Add comments for complex logic
-
Test your changes
flutter test flutter analyze -
Commit your changes
git commit -m "feat: add amazing feature"Use conventional commit messages:
feat:- New featurefix:- Bug fixdocs:- Documentation changesstyle:- Code style changesrefactor:- Code refactoringtest:- Test additions/changeschore:- Maintenance tasks
-
Push to your fork
git push origin feature/your-feature-name
-
Open a Pull Request
- Provide clear description of changes
- Reference related issues
- Add screenshots for UI changes
Follow the official Dart Style Guide:
- Use 2 spaces for indentation
- Maximum line length: 80 characters (flexible for readability)
- Use trailing commas for better diffs
- Use
constconstructors where possible
// 1. Dart imports
import 'dart:io';
// 2. Flutter imports
import 'package:flutter/material.dart';
// 3. Package imports
import 'package:provider/provider.dart';
// 4. Relative imports
import '../widgets/my_widget.dart';- StatelessWidget for static UI
- StatefulWidget only when state is needed
- Extract complex widgets into separate files
- Use
constconstructors liberally
/// Widget documentation
///
/// Describes what the widget does
class MyWidget extends StatelessWidget {
const MyWidget({
super.key,
required this.title,
});
final String title;
@override
Widget build(BuildContext context) {
return Container(
padding: const EdgeInsets.all(16),
child: Text(title),
);
}
}- Unit tests for business logic
- Widget tests for UI components
- Integration tests for critical flows
import 'package:flutter_test/flutter_test.dart';
import 'package:hyperframe/widgets/my_widget.dart';
void main() {
group('MyWidget', () {
testWidgets('displays title correctly', (tester) async {
await tester.pumpWidget(
const MaterialApp(
home: MyWidget(title: 'Test'),
),
);
expect(find.text('Test'), findsOneWidget);
});
});
}# Run all tests
flutter test
# Run with coverage
flutter test --coverage
# Run specific test
flutter test test/widget_test.dart- Add doc comments (
///) for public APIs - Include usage examples for complex features
- Explain why, not just what
When adding features:
- Update feature list
- Add usage examples
- Update screenshots if UI changes
All PRs go through code review:
-
Automated checks must pass:
flutter analyze(no errors)flutter test(all tests pass)- Code style compliance
-
Manual review checks:
- Code quality and readability
- Test coverage
- Documentation completeness
- Performance impact
-
Approval required from maintainers
- Follow Material 3 design principles
- Use theme colors from
ColorScheme - Maintain consistency with existing UI
- Support screen readers
- Ensure sufficient color contrast
- Add semantic labels
- Avoid unnecessary rebuilds
- Use
constconstructors - Profile performance for heavy operations
Contributors will be:
- Listed in GitHub contributors
- Mentioned in release notes
- Added to CONTRIBUTORS.md (for significant contributions)
By contributing, you agree that your contributions will be licensed under the MIT License.
- General questions: GitHub Discussions
- Bug reports: GitHub Issues
Your contributions make HyperFrame better for everyone. Thank you for taking the time to contribute!
Happy coding! 🚀