Thank you for your interest in contributing to RequestFlow! This document provides guidelines and instructions for contributing to the project.
- Code of Conduct
- Getting Started
- Development Setup
- How to Contribute
- Coding Standards
- Pull Request Process
- Reporting Bugs
- Suggesting Enhancements
- Be respectful and inclusive
- Welcome newcomers and help them get started
- Focus on constructive feedback
- Respect differing viewpoints and experiences
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/YOUR-USERNAME/RequestFlow.git cd RequestFlow - Add upstream remote:
git remote add upstream https://github.com/fatehmtd/RequestFlow.git
- Qt 6.7.3+ (with SVG and OpenGL modules)
- C++17 compatible compiler:
- Windows: MinGW 9.0+
- Linux: GCC 11+
- macOS: Clang (Xcode Command Line Tools)
- Git
cd RequestFlowApp
mkdir build
cd build
qmake ..\RequestFlowApp.pro -r "CONFIG+=release"
mingw32-make -j $env:NUMBER_OF_PROCESSORS# Install dependencies (Ubuntu/Debian)
sudo apt-get install qt6-base-dev qt6-svg-dev qt6-declarative-dev \
libgl1-mesa-dev libxkbcommon-dev
cd RequestFlowApp
mkdir -p build && cd build
qmake6 ../RequestFlowApp.pro -r "CONFIG+=release"
make -j$(nproc)# Install Qt via Homebrew or Qt installer
brew install qt@6
cd RequestFlowApp
mkdir -p build && cd build
qmake ../RequestFlowApp.pro -r "CONFIG+=release"
make -j$(sysctl -n hw.ncpu)RequestFlowApp/
├── CoreModel/ # Core data models and business logic
│ ├── model/ # Data structures (Graph, Node, Slot, etc.)
│ └── ...
├── CoreView/ # UI components and visual elements
│ ├── view/ # Node widgets, scene graph, connections
│ ├── nodes/ # SVG icons for nodes
│ └── ...
├── ExecutionEngine/ # HTTP request execution and workflow processing
└── RequestFlow/ # Main application
├── icons/ # Application icons
└── ...
We welcome various types of contributions:
- Bug Fixes: Fix issues reported in the issue tracker
- New Features: Implement new node types, functionality, or tools
- Documentation: Improve README, code comments, or create tutorials
- UI/UX: Enhance the user interface and user experience
- Testing: Add unit tests or integration tests
- Performance: Optimize code for better performance
- Platform Support: Improve cross-platform compatibility
- Check existing issues or create a new one to discuss your contribution
- Create a feature branch:
git checkout -b feature/your-feature-name
- Make your changes with clear, focused commits
- Test your changes thoroughly
- Push to your fork:
git push origin feature/your-feature-name
- Submit a Pull Request from your fork to the main repository
- Use C++17 features where appropriate
- Follow the existing code style and formatting
- Use meaningful variable and function names
- Add comments for complex logic
- Prefer
constcorrectness - Use smart pointers (
std::unique_ptr,std::shared_ptr) for memory management
- Follow Qt naming conventions (camelCase for methods, _underscore prefix for private members)
- Use Qt's signal/slot mechanism for event handling
- Properly manage Qt object ownership and parent-child relationships
- Use
Q_OBJECTmacro for classes that need signals/slots
- Keep classes focused on a single responsibility
- Separate UI logic from business logic
- Use header files (.h) for declarations and source files (.cpp) for implementations
- Include guards or
#pragma oncein headers
class CustomNode : public Node
{
Q_OBJECT
public:
CustomNode(Graph* parent);
~CustomNode();
void setValue(const QString& value);
QString getValue() const;
signals:
void valueChanged(const QString& value);
private:
void updateInternalState();
QString _value;
int _counter;
};-
Update documentation if you're changing functionality
-
Ensure the code builds on your platform without warnings
-
Test your changes - manually test the affected features
-
CI checks must pass - All pull requests run automated builds on:
- Linux (Ubuntu 22.04)
- macOS (latest)
- Windows (latest)
PRs cannot be merged until all CI checks pass.
-
Write a clear PR description:
- What does this PR do?
- Why is this change needed?
- How has it been tested?
- Screenshots (if UI changes)
-
Link related issues using keywords like "Fixes #123"
-
Be responsive to review feedback
Use clear, descriptive titles:
Fix: Crash when deleting connected nodesFeature: Add REST authentication nodeDocs: Update build instructions for macOSRefactor: Simplify message passing logic
When reporting bugs, please include:
- Description: Clear description of the bug
- Steps to Reproduce: Detailed steps to recreate the issue
- Expected Behavior: What should happen
- Actual Behavior: What actually happens
- Environment:
- OS and version
- Qt version
- RequestFlow version
- Compiler used
- Screenshots/Logs: If applicable
- Possible Fix: If you have ideas (optional)
We welcome feature suggestions! Please provide:
- Use Case: Why is this feature needed?
- Proposed Solution: How should it work?
- Alternatives: Other approaches you've considered
- Additional Context: Screenshots, mockups, or examples
If you have questions about contributing:
- Open a GitHub issue with the "question" label
- Contact the maintainer: fateh@requestflow.dev
Contributors will be recognized in:
- GitHub contributors list
- Release notes
- Project documentation (for significant contributions)
Thank you for helping make RequestFlow better!