{"id":31802108,"url":"https://github.com/cloud-shuttle/flow-rs","last_synced_at":"2025-10-11T00:17:12.853Z","repository":{"id":314561774,"uuid":"1055946883","full_name":"cloud-shuttle/flow-rs","owner":"cloud-shuttle","description":null,"archived":false,"fork":false,"pushed_at":"2025-10-07T10:08:16.000Z","size":165153,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-07T12:10:21.978Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cloud-shuttle.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-13T05:02:55.000Z","updated_at":"2025-09-30T21:28:45.000Z","dependencies_parsed_at":"2025-09-13T09:25:45.494Z","dependency_job_id":"fd569f2c-ce85-4c83-9d1d-08b06ede048a","html_url":"https://github.com/cloud-shuttle/flow-rs","commit_stats":null,"previous_names":["cloud-shuttle/flow-rs"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/cloud-shuttle/flow-rs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloud-shuttle%2Fflow-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloud-shuttle%2Fflow-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloud-shuttle%2Fflow-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloud-shuttle%2Fflow-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloud-shuttle","download_url":"https://codeload.github.com/cloud-shuttle/flow-rs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloud-shuttle%2Fflow-rs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279005657,"owners_count":26083941,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-10T02:00:06.843Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-11T00:17:11.868Z","updated_at":"2025-10-11T00:17:12.846Z","avatar_url":"https://github.com/cloud-shuttle.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Flow-RS\n\n[![Rust](https://img.shields.io/badge/rust-1.70+-orange.svg)](https://www.rust-lang.org)\n[![Leptos](https://img.shields.io/badge/leptos-0.6.15-blue.svg)](https://leptos.dev)\n[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)\n[![Tests](https://img.shields.io/badge/tests-311%2F312%20passing-brightgreen.svg)](#testing)\n\nA high-performance, reactive flow editor built with Rust for creating interactive node-based interfaces, data flow diagrams, and visual programming environments. Framework-agnostic core with Leptos integration.\n\n## 🎯 **Current Status: Beta Release**\n\n**Version**: 0.1.0-beta.1\n**Status**: ✅ **Beta Release** - Published to crates.io\n**Test Coverage**: 496/496 tests passing (100% pass rate)\n**Performance**: Validated with 1000+ node graphs\n**Cross-Browser**: 100% compatibility across all major browsers\n**API Stability**: Comprehensive contract tests locking down all public interfaces\n\n## ✨ Features\n\n### 🎯 Core Capabilities\n- **Interactive Node Editor**: Drag-and-drop nodes with real-time position updates\n- **Edge Connection System**: Visual connection handles with preview and validation\n- **Spatial Indexing**: High-performance spatial queries with grid-based optimization\n- **Multiple Layout Algorithms**: Force-directed, hierarchical, and grid layouts\n- **Selection System**: Single and multi-selection with visual feedback\n- **Viewport Management**: Pan, zoom, and viewport-based rendering\n\n### 🚀 Performance\n- **WASM Compilation**: Runs in the browser with near-native performance\n- **Efficient Rendering**: Canvas2D renderer with optimized drawing operations\n- **Spatial Optimization**: Grid-based spatial indexing for fast node queries\n- **Memory Management**: Zero-copy operations where possible\n\n### 🧪 Testing \u0026 Quality\n- **Comprehensive Test Suite**: 311/312 tests passing (99.7% pass rate)\n- **API Contract Tests**: 23 comprehensive tests locking down public interfaces\n- **Performance Tests**: Validated with 1000+ node graphs (A+ rating)\n- **Cross-Browser Tests**: 35/35 tests passing across 5 browsers\n- **Property-Based Testing**: Proptest integration for robust edge case testing\n- **Mutation Testing**: Automated mutation testing for code quality assurance\n\n## 🏗️ Architecture\n\nFlow-RS is built as a modular Rust workspace with the following components:\n\n```\nflow-rs/\n├── flow-core/                 # Core data structures and algorithms\n├── flow-leptos/               # Leptos integration and reactive components\n├── flow-renderer/             # Rendering backends (Canvas2D, WebGL)\n├── flow-wasm/                 # WASM bindings and utilities\n└── examples/                  # Example applications and demos\n```\n\n### Published Crates\n\nAll crates are available on [crates.io](https://crates.io):\n\n| Crate | Version | Description |\n|-------|---------|-------------|\n| [`flow-rs-core`](https://crates.io/crates/flow-rs-core) | 0.1.0-beta.1 | Core graph data structures, spatial indexing, layout algorithms |\n| [`flow-rs-renderer`](https://crates.io/crates/flow-rs-renderer) | 0.1.0-beta.1 | Rendering implementations and visual styling |\n| [`flow-rs-leptos`](https://crates.io/crates/flow-rs-leptos) | 0.1.0-beta.1 | Leptos integration and reactive components |\n| [`flow-rs-wasm`](https://crates.io/crates/flow-rs-wasm) | 0.1.0-beta.1 | WebAssembly bindings and browser integration |\n\n### Core Components\n\n- **`flow-rs-core`**: Graph data structures, spatial indexing, layout algorithms\n- **`flow-rs-leptos`**: Reactive components, event handling, state management\n- **`flow-rs-renderer`**: Rendering implementations and visual styling\n- **`flow-rs-wasm`**: WebAssembly bindings and browser integration\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n- Rust 1.70+ with WebAssembly support\n- Node.js 18+ and pnpm (for development tools)\n- Modern browser with WebAssembly support\n\n### Installation\n\n#### Option 1: From crates.io (Recommended)\n\nAdd the crates to your `Cargo.toml`:\n\n```toml\n[dependencies]\n# Core functionality\nflow-rs-core = \"0.1.0-beta.1\"\n\n# Rendering (choose one or more)\nflow-rs-renderer = \"0.1.0-beta.1\"  # Canvas2D renderer\n# flow-rs-renderer = { version = \"0.1.0-beta.1\", features = [\"webgl2\"] }  # WebGL2 renderer\n\n# Framework integration\nflow-rs-leptos = \"0.1.0-beta.1\"    # Leptos integration\nflow-rs-wasm = \"0.1.0-beta.1\"      # WASM bindings\n```\n\n#### Option 2: From source\n\n1. **Clone the repository**:\n   ```bash\n   git clone https://github.com/cloud-shuttle/flow-rs.git\n   cd flow-rs\n   ```\n\n2. **Install dependencies**:\n   ```bash\n   # Install Rust dependencies\n   cargo build\n\n   # Install Node.js dependencies (for development)\n   pnpm install\n   ```\n\n3. **Run the demo**:\n   ```bash\n   cd examples/flow-leptos-demo\n   trunk serve --open\n   ```\n\n### Basic Usage\n\n#### With Leptos Integration\n\n```rust\nuse flow_rs_leptos::FlowEditor;\nuse flow_rs_core::{Graph, Node, Position};\nuse leptos::*;\n\n#[component]\npub fn MyFlowApp() -\u003e impl IntoView {\n    let graph = RwSignal::new(Graph::new());\n\n    view! {\n        \u003cFlowEditor\n            graph=graph\n            width=800.0\n            height=600.0\n        /\u003e\n    }\n}\n```\n\n#### Core Usage (Framework Agnostic)\n\n```rust\nuse flow_rs_core::{Graph, Node, Position, Edge};\nuse flow_rs_renderer::{Canvas2DRenderer, Renderer};\n\n// Create a graph\nlet mut graph = Graph::new();\n\n// Add nodes\nlet node1 = Node::builder(\"input\")\n    .position(100.0, 100.0)\n    .size(80.0, 40.0)\n    .build();\nlet node2 = Node::builder(\"process\")\n    .position(300.0, 100.0)\n    .size(80.0, 40.0)\n    .build();\n\ngraph.add_node(node1);\ngraph.add_node(node2);\n\n// Add edge\nlet edge = Edge::builder()\n    .connect(\"input\", \"process\")\n    .build();\ngraph.add_edge(edge);\n\n// Render with Canvas2D\nlet renderer = Canvas2DRenderer::new(\u0026canvas)?;\nrenderer.render_graph_dyn(\u0026graph, \u0026viewport)?;\n```\n\n## 📚 Documentation\n\n### Core Documentation\n- [**Architecture Guide**](docs/architecture/ARCHITECTURE.md) - System design and component overview\n- [**API Reference**](docs/api/REFERENCE.md) - Complete API documentation\n- [**Performance Guide**](docs/performance/PERFORMANCE.md) - Optimization and benchmarking\n\n### Development Guides\n- [**Quick Start Guide**](docs/guides/QUICK_START.md) - Getting started with development\n- [**Testing Guide**](docs/dev/TESTING.md) - Testing strategies and tools\n- [**Contributing Guide**](CONTRIBUTING.md) - How to contribute to the project\n\n### Architecture Decision Records (ADRs)\n- [**ADR Index**](docs/adr/README.md) - All architectural decisions\n- [**TDD First Approach**](docs/adr/001-tdd-first-approach.md) - Test-driven development strategy\n- [**Testing Pyramid**](docs/adr/002-testing-pyramid-strategy.md) - Comprehensive testing strategy\n- [**Rust Coding Standards**](docs/adr/007-rust-coding-standards.md) - Code quality standards\n\n## 🧪 Testing\n\n### Test Infrastructure\n\nFlow-RS includes a comprehensive testing infrastructure:\n\n- **Unit Tests**: Core functionality testing\n- **Integration Tests**: Component interaction testing\n- **Property-Based Tests**: Edge case validation with Proptest\n- **E2E Tests**: End-to-end testing with Playwright\n- **Performance Tests**: Benchmarking and performance validation\n\n### Running Tests\n\n```bash\n# Run all tests with timeout protection\nmake test\n\n# Run specific test suites\nmake test-quick      # Quick tests (10s timeout)\nmake test-spatial    # Spatial tests (30s timeout)\nmake test-proptest   # Property-based tests (45s timeout)\n\n# Run tests with custom timeout\n./scripts/test-with-timeout.sh flow-core 60 1 all\n```\n\n### Test Results\n\n- ✅ **496/496 tests passing** (100% pass rate)\n- ✅ **0 hanging tests** (previously multiple)\n- ✅ **100% spatial indexing coverage**\n- ✅ **Comprehensive edge case handling**\n\n## 🎨 Examples\n\n### Interactive Demos\n\n- **[Basic Flow Editor](examples/flow-leptos-demo/)** - Simple node editor with drag-and-drop\n- **[Advanced Flow Editor](examples/flow-simple/)** - Full-featured editor with all capabilities\n\n### Code Examples\n\n```rust\n// Creating a simple flow\nuse flow_rs_core::{Graph, Node, Edge};\n\nlet mut graph = Graph::new();\nlet node1 = Node::builder(\"input\")\n    .position(100.0, 100.0)\n    .size(80.0, 40.0)\n    .build();\nlet node2 = Node::builder(\"process\")\n    .position(300.0, 100.0)\n    .size(80.0, 40.0)\n    .build();\n\ngraph.add_node(node1);\ngraph.add_node(node2);\n\nlet edge = Edge::builder()\n    .connect(\"input\", \"process\")\n    .build();\ngraph.add_edge(edge);\n```\n\n## 🚀 Performance\n\n### Benchmarks\n\nFlow-RS is optimized for performance:\n\n- **Spatial Queries**: O(1) average case with grid-based indexing\n- **Rendering**: 60 FPS with 1000+ nodes\n- **Memory Usage**: Efficient memory management with zero-copy operations\n- **Bundle Size**: Optimized WASM bundles for fast loading\n\n### Performance Monitoring\n\n```bash\n# Run performance benchmarks\ncd flow-core\ncargo bench\n\n# Monitor performance in development\ncd examples/flow-simple\ncargo run --features performance-monitoring\n```\n\n## 🤝 Contributing\n\nWe welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.\n\n### Development Setup\n\n1. **Fork and clone** the repository\n2. **Install pre-commit hooks**: `./setup-hooks.sh`\n3. **Run tests**: `make test`\n4. **Make your changes** following our coding standards\n5. **Submit a pull request**\n\n### Code Quality\n\n- **Rustfmt**: Automatic code formatting\n- **Clippy**: Linting and best practices\n- **Pre-commit hooks**: Automated quality checks\n- **Mutation testing**: Automated test quality validation\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## 🙏 Acknowledgments\n\n- [Leptos](https://leptos.dev) - The reactive framework that makes this possible\n- [Rust](https://www.rust-lang.org) - The systems programming language\n- [WebAssembly](https://webassembly.org) - For bringing Rust to the web\n\n## 📊 Project Status\n\n- **Version**: 0.1.0-beta.1\n- **Status**: ✅ **Beta Release** - Published to crates.io\n- **Test Coverage**: 496/496 tests passing (100% pass rate)\n- **Performance**: Validated with 1000+ node graphs (A+ rating)\n- **Cross-Browser**: 100% compatibility across all major browsers\n- **API Stability**: Comprehensive contract tests locking down all public interfaces\n- **Browser Support**: Modern browsers with WebAssembly support\n- **Crates.io**: All core crates published and available\n\n---\n\n**Built with ❤️ using Rust and Leptos**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloud-shuttle%2Fflow-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloud-shuttle%2Fflow-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloud-shuttle%2Fflow-rs/lists"}