Thank you for your interest in contributing to FlowScope! This document provides guidelines and instructions for setting up your development environment and contributing to the project.
- Rust (latest stable) - Install via rustup
- Node.js >= 18.0.0
- Yarn >= 1.22.0
- wasm-pack - Install via
cargo install wasm-pack
- Clone the repository:
git clone https://github.com/pondpilot/flowscope.git
cd flowscope- Install dependencies:
yarn install- Build the project:
just build- Run tests:
just testFlowScope is organized as a monorepo with the following structure:
crates/- Rust workspaceflowscope-core/- Core lineage engineflowscope-wasm/- WASM bindingsflowscope-cli/- CLI wrapperflowscope-export/- Export helpers
packages/- NPM workspacecore/- TypeScript wrapper (@pondpilot/flowscope-core)react/- React components (@pondpilot/flowscope-react)
app/- Demo Vite applicationvscode/- VS Code extension + webview UIdocs/- Documentation
- Create a new branch:
git checkout -b feature/your-feature-name- Make your changes
- Run tests:
just test- Run linters:
just check- Format code:
just fmt- Keep docs in sync:
# See docs/README.md for canonical references.just dev- Follow standard Rust conventions
- Run
cargo fmtbefore committing - Run
cargo clippyand address warnings
- Use strict TypeScript
- Single quotes for strings
- Trailing commas in multiline structures
- Run
just fmtbefore committing
- Dialect semantic specs in
crates/flowscope-core/specs/dialect-semantics/are compiled intocrates/flowscope-core/src/generated/bybuild.rs. - API schema snapshots live in
docs/api_schema.jsonand can be refreshed withjust update-schema.
- Write unit tests for all new functionality
- Ensure all tests pass before submitting a PR
- Add integration tests for complex features
- Test fixtures should be added to
crates/flowscope-core/tests/fixtures/
- Update documentation for any new features
- Add tests for your changes
- Ensure all tests pass
- Update CHANGELOG.md if applicable
- Submit PR with a clear description of changes
- Address review feedback
When reporting issues, please include:
- FlowScope version
- Operating system
- Node.js and Rust versions
- Steps to reproduce
- Expected vs actual behavior
- Any error messages or logs
By contributing to FlowScope, you agree that your contributions will be licensed under the Apache 2.0 License.
Feel free to open an issue for questions or join our discussions!