Thank you for your interest in contributing to ExecScript! We welcome contributions from the community and are excited to see what you build.
This project and everyone participating in it is governed by our commitment to:
- Be respectful — Treat everyone with respect. Healthy debate is encouraged, but harassment is not tolerated.
- Be constructive — Provide constructive feedback and be open to receiving it.
- Be inclusive — Welcome newcomers and help them learn. Use inclusive language.
- Focus on what's best — Prioritize the community and users of the project.
DO NOT file a public issue for security vulnerabilities.
Instead, please:
- Email security@dayofgeek.com with details
- Include steps to reproduce (if applicable)
- Allow time for the issue to be addressed before public disclosure
See SECURITY.md for more details.
- Flutter SDK 3.x or higher
- Dart SDK (comes with Flutter)
- Android Studio or Xcode (for mobile builds)
- Git
-
Fork and clone the repository:
git clone https://github.com/YOUR_USERNAME/execscript.git cd execscript -
Install dependencies:
flutter pub get
-
Generate code (if needed):
flutter pub run build_runner build --delete-conflicting-outputs
-
Run tests to ensure everything works:
flutter test -
Run the app:
flutter run
-
Create a branch for your feature or bug fix:
git checkout -b feature/your-feature-name # or git checkout -b fix/issue-description -
Make your changes following our coding standards.
-
Add tests for new functionality or bug fixes.
-
Ensure all tests pass:
flutter test -
Update documentation if necessary (README, comments, etc.)
-
Commit your changes with a clear commit message:
git commit -m "feat: add feature X" -
Push to your fork:
git push origin feature/your-feature-name
-
Open a Pull Request against the
mainbranch.
- Follow existing patterns — Look at how similar features are implemented and follow the same patterns.
- Write clean, readable code — Code is read more often than it's written.
- Keep functions small and focused — Single responsibility principle.
- Add comments — Explain "why" not "what" (code explains what).
- Use meaningful names — Variables, functions, and classes should be descriptive.
- Follow the Effective Dart style guide
- Use
flutter analyzeto catch issues - Format code with
dart format . - Maximum line length: 80 characters
- Use trailing commas for better diffs
lib/
├── core/ # Constants, utilities, theme
├── data/ # Models and repositories
├── presentation/ # UI screens and widgets
│ ├── screens/
│ ├── widgets/
│ ├── providers/
│ └── forms/
└── services/ # Business logic and SSH services
- Unit tests for all business logic
- Widget tests for UI components
- Integration tests for critical user flows
- Aim for 80%+ test coverage for new code
We follow Conventional Commits:
type(scope): description
[optional body]
[optional footer]
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, semicolons, etc.)refactor: Code refactoringtest: Adding or updating testschore: Build process or auxiliary tool changes
feat(terminal): add support for 256 color themes
fix(ssh): handle connection timeout gracefully
docs(readme): update installation instructions
test(execution): add tests for background job status
All submissions require review before merging:
- At least one maintainer approval required
- All CI checks must pass
- No merge conflicts
- Follows coding standards
Reviewers will:
- Check for correctness and edge cases
- Verify test coverage
- Ensure code follows project patterns
- Suggest improvements when applicable
When filing a bug report, please include:
- Clear description of the bug
- Steps to reproduce the issue
- Expected behavior vs actual behavior
- Device information (OS, version, device model)
- Screenshots if applicable
- Logs if available (redact sensitive info)
Use the bug report template when creating issues.
We love new ideas! When requesting a feature:
- Describe the problem you're trying to solve
- Explain your proposed solution
- Consider alternatives you've thought about
- Note if you're willing to implement it
Use the feature request template when creating issues.
By contributing to ExecScript, you agree that your contributions will be licensed under the GNU General Public License v3.0.
Your contributions help make ExecScript better for everyone. We appreciate your time and effort!
Questions? Reach out via:
- GitHub Discussions
- Email: contribute@dayofgeek.com