Thank you for your interest in contributing! This guide will help you get started with contributing to Forge.
Add features, fix bugs, improve performance, or refactor code.
Improve docs, write tutorials, translate content, or create guides.
Report bugs with detailed reproduction steps and logs.
Suggest new features or improvements to existing functionality.
Create UI mockups, improve UX, or design new themes.
Write tests, perform manual testing, or help with QA.
# On GitHub, click the "Fork" button
# Then clone your fork
git clone https://github.com/YOUR_USERNAME/Dyplom.git
cd Dyplom
# Install Flutter (if not already installed)
# Follow: https://flutter.dev/docs/get-started/install
# Install dependencies
flutter pub get
# Run the app
flutter run
For testing Firebase features:
google-services.json / GoogleService-Info.plistflutterfire configure if available# Create a feature branch
git checkout -b feature/your-feature-name
# Or for bug fixes
git checkout -b fix/bug-description
We follow the official Dart Style Guide. Key points:
camelCase for variable and function namesPascalCase for class namessnake_case for library and file namesfinal over var when possible# Format your code before committing
flutter format .
# Or format specific file
flutter format lib/screens/your_screen.dart
# Run the linter
flutter analyze
# Fix lint issues when possible
dart fix --apply
// ✅ Good
class WorkoutService extends ChangeNotifier {
final List _workouts = [];
List get workouts => List.unmodifiable(_workouts);
Future addWorkout(Workout workout) async {
_workouts.add(workout);
await _saveToStorage();
notifyListeners();
}
}
// ❌ Bad
class workout_service extends ChangeNotifier {
var workouts = [];
addWorkout(workout) {
workouts.add(workout);
notifyListeners();
}
}
Use conventional commits format:
type(scope): subject
body (optional)
footer (optional)
feat(analytics): add body weight tracking to progress charts
fix(calendar): remove duplicate workout dialog on date click
docs(formulas): add detailed explanation of strength coefficient
refactor(services): extract data persistence logic to separate class
test(analytics): add unit tests for volume calculations
fix(calendar): resolve #123flutter format . and flutter analyze# Commit your changes
git add .
git commit -m "feat(scope): your change description"
# Push to your fork
git push origin feature/your-feature-name
# Open a pull request on GitHub
## Description
Brief description of changes
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation update
## Testing
How to test these changes
## Screenshots (if applicable)
Add screenshots for UI changes
## Checklist
- [ ] Code follows style guide
- [ ] Self-review completed
- [ ] Comments added for complex code
- [ ] Documentation updated
- [ ] Tests added/updated
- [ ] No new warnings generated
# Run all tests
flutter test
# Run specific test file
flutter test test/services/progress_analytics_service_test.dart
# Run with coverage
flutter test --coverage
import 'package:flutter_test/flutter_test.dart';
void main() {
group('ProgressAnalyticsService', () {
late ProgressAnalyticsService service;
setUp(() {
service = ProgressAnalyticsService();
});
test('calculates strength coefficient correctly', () {
// Arrange
final histories = createTestHistories();
// Act
final result = service.analyzeOverallStrength(histories);
// Assert
expect(result.currentTotalStrength, 150.0);
});
});
}
testWidgets('displays workout calendar', (tester) async {
// Build widget
await tester.pumpWidget(
MaterialApp(home: FullCalendarScreen()),
);
// Verify
expect(find.text('Workout Calendar'), findsOneWidget);
expect(find.byType(TableCalendar), findsOneWidget);
});
Aim for:
Include the following information:
**Describe the bug**
A clear description of the bug
**To Reproduce**
Steps to reproduce:
1. Go to '...'
2. Click on '...'
3. See error
**Expected behavior**
What should happen
**Screenshots**
If applicable
**Environment:**
- Device: [e.g. Pixel 6]
- OS: [e.g. Android 13]
- App Version: [e.g. 1.0.0]
**Additional context**
Any other relevant information
**Feature Description**
Clear description of the feature
**Problem It Solves**
What problem does this solve?
**Proposed Solution**
How would you implement this?
**Alternatives Considered**
Other ways to solve this
**Additional Context**
Mockups, examples, etc.
If you're stuck:
All contributors will be recognized in:
By contributing to Forge, you agree that your contributions will be licensed under the same license as the project.
All contributions must be your own work or properly attributed.
Thank you for taking the time to contribute to Forge! Your efforts help make this project better for everyone in the strength training community.