# Contributing to Flow-Like Thank you for your interest in contributing to **Flow-Like**! Whether you're fixing a bug, writing a new node, improving docs, or just asking a good question — you're helping build a better workflow engine. ## 🚀 Quick Start ```bash # 1. Fork & clone git clone https://github.com/your-username/flow-like.git cd flow-like # 2. Install prerequisites # - mise: https://mise.jdx.dev/getting-started.html # - Tauri prerequisites: https://tauri.app/start/prerequisites/ # - Protobuf compiler: https://protobuf.dev/installation/ # 3. Install toolchains & dependencies mise trust && mise install # installs Rust, Bun, Node, Python, uv bun install # 4. Run in dev mode mise run dev:desktop:mac:arm # macOS Apple Silicon mise run dev:desktop:mac:intel # macOS Intel mise run dev:desktop:win:x64 # Windows x64 mise run dev:desktop:linux:x64 # Linux x64 ``` > **Full setup guide →** [docs.flow-like.com/contributing/getting-started](https://docs.flow-like.com/contributing/getting-started/) --- ## 🗂 Project Structure Flow-Like is a Rust + TypeScript monorepo. Here's the lay of the land: ``` flow-like/ ├── apps/ │ ├── desktop/ # Tauri desktop app (TypeScript + React) │ └── web/ # Web app (Next.js) ├── packages/ │ ├── flow-like/ # Core Rust engine (DAG scheduler, execution runtime) │ ├── flow-like-types/ # Shared type definitions │ ├── flow-like-nodes/ # Built-in node implementations ← easiest place to contribute │ ├── flow-like-ui/ # Shared React components │ └── ... ├── tools/ # Build tooling & scripts └── tests/ # Integration tests ``` > **Not sure where to start?** The `packages/flow-like-nodes/` crate is the easiest entry point — each node is a self-contained unit with clear input/output types. --- ## 🎯 Where to Contribute | Area | Difficulty | Description | |------|-----------|-------------| | **New Nodes** | 🟢 Easy | Add integrations, data transforms, or utility nodes | | **Bug Fixes** | 🟢–🟡 | Fix reported issues — check the [issue tracker](https://github.com/Rheosoph/flow-like/issues) | | **Documentation** | 🟢 Easy | Tutorials, guides, API docs, README improvements | | **UI/UX** | 🟡 Medium | Improve the visual editor, add themes, polish interactions | | **Core Engine** | 🔴 Advanced | DAG scheduler, execution runtime, type system | | **Testing** | 🟢–🟡 | Add test coverage for existing features | **→ [Browse `good first issue` labels](https://github.com/Rheosoph/flow-like/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)** **→ [Browse `help wanted` labels](https://github.com/Rheosoph/flow-like/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22)** --- ## 🔧 Development Workflow ### 1. Create a branch ```bash git checkout -b feature/your-feature-name # features git checkout -b fix/issue-description # bug fixes ``` ### 2. Make your changes **Auto-fix everything:** ```bash mise run fix # runs cargo clippy --fix, cargo fmt, and bunx biome check --write ``` **Rust code:** - `cargo clippy` and `cargo test` are intentionally fast: they cover the shared AST/contracts default set. Use `cargo clippy-core` / `cargo test-core` when changing core, or `cargo clippy-all` / `cargo test-all` before a broad PR. - Resolve warnings in every target you changed - Follow existing code style and naming conventions **TypeScript code:** - Run `bunx biome check .` for linting and formatting - Follow existing component patterns in `packages/flow-like-ui/` ### 3. Commit with a clear message ```bash git commit -m "feat: add Discord webhook node" git commit -m "fix: resolve DAG cycle detection edge case" git commit -m "docs: add tutorial for creating custom nodes" ``` We loosely follow [Conventional Commits](https://www.conventionalcommits.org/) — prefixes like `feat:`, `fix:`, `docs:`, `refactor:`, `test:` help keep the changelog readable. ### 4. Push & open a PR ```bash git push origin feature/your-feature-name ``` Then open a Pull Request against the `dev` branch. In your PR description: - Describe **what** changed and **why** - Link related issues (e.g., `Closes #42`) - Include screenshots or GIFs for UI changes --- ## 📐 Code Guidelines ### Rust - Write clear, idiomatic Rust — prefer `Result` over panics - Add doc comments (`///`) to public types and functions - Include tests for new features or bug fixes - Keep dependencies minimal — check if existing crates already cover your need ### TypeScript / React - Use TypeScript strictly — avoid `any` unless absolutely necessary - Follow the existing component patterns (shadcn/ui + Tailwind) - Keep components small and composable ### General - Don't introduce new linters or formatters — we use Clippy (Rust) and Biome (TS) - If a change touches public APIs, update the relevant documentation - If you're unsure about an approach, open a [Discussion](https://github.com/Rheosoph/flow-like/discussions) first --- ## 🐛 Reporting Bugs Open an issue with: - **Clear title** describing the problem - **Steps to reproduce** — the more specific, the better - **Expected vs actual behavior** - **Environment** — OS, app version (from Settings), desktop or web - **Screenshots or screen recordings** if it's a visual issue --- ## 💡 Suggesting Features We love feature ideas! Before opening an issue: 1. Search [existing issues](https://github.com/Rheosoph/flow-like/issues) and [Discussions](https://github.com/Rheosoph/flow-like/discussions) to avoid duplicates 2. Describe the **problem** you're trying to solve (not just the solution) 3. Include mockups or examples if possible --- ## 🔐 Security Issues For security vulnerabilities, please **do not open a public issue**. Report privately to [security@great-co.de](mailto:security@great-co.de). See [SECURITY.md](./SECURITY.md) for details. --- ## 🤝 Code of Conduct By participating, you agree to our [Code of Conduct](./CODE_OF_CONDUCT.md). Be respectful, constructive, and welcoming. --- ## 💬 Getting Help Stuck? Have questions? - **[Discord](https://discord.com/invite/mdBA9kMjFJ)** — fastest way to get help - **[GitHub Discussions](https://github.com/Rheosoph/flow-like/discussions)** — longer-form questions and ideas - **[Documentation](https://docs.flow-like.com)** — guides and API reference --- ## 🙌 Thank You Every contribution matters — from a typo fix to a new node to a thoughtful bug report. Flow-Like is better because of contributors like you.