FlowForge is a modern, modular, and infinite-canvas pipeline builder designed for the VectorShift Technical Assessment. It allows users to visually design Directed Acyclic Graphs (DAGs) with a sleek, floating UI and real-time backend validation.
- BaseNode Abstraction: Built a robust, reusable component architecture (
BaseNode.js) that allows for rapid scaling of node types without code duplication. - Custom Nodes: Includes 9+ node types (LLM, Input, Output, Text, Email, API, etc.) derived from a single abstraction.
- Variable Extraction: Text nodes automatically parse inputs for
{{ variable }}syntax using Regex. - Dynamic Handles: Instantly generates reactive handles on the left side of the node when variables are detected.
- Auto-Resizing: Text areas dynamically adjust height based on content for a seamless UX.
- FastAPI Powered: A lightweight Python backend handles graph processing.
- DAG Validation: Implements Kahnβs Algorithm (O(V+E)) to detect cycles and validate that the pipeline is a Directed Acyclic Graph.
- Real-time Analytics: Calculates node/edge counts and graph validity instantly.
- Glassmorphism: A custom "Floating Dock" toolbar and notification system designed to maximize the canvas workspace.
- Draggable Architecture: Fully interactive drag-and-drop system using React Flow.
- Frontend: React.js, React Flow, Zustand (State Management)
- Backend: Python, FastAPI, Uvicorn, Pydantic
- Styling: Pure CSS3 (Gradients, Glassmorphism, Animations)
Follow these steps to run FlowForge locally.
git clone [https://github.com/Ayush1Deshmukh/FlowForge.git](https://github.com/Ayush1Deshmukh/FlowForge.git)
cd FlowForge- Backend Setup (Python) Navigate to the backend folder and start the server.
cd backend
python3 -m venv venv # Create virtual environment
source venv/bin/activate # Activate env (Windows: venv\Scripts\activate)
pip install fastapi uvicorn pydantic python-multipart
uvicorn main:app --reload # Server running at [http://127.0.0.1:8000](http://127.0.0.1:8000)- Frontend Setup (React) Open a new terminal, navigate to the frontend, and start the app.
cd frontend
npm install
npm start # App running at http://localhost:3000π Project Architecture
βββ frontend/
β βββ src/
β β βββ nodes/ # π§ BaseNode abstraction & individual node logic
β β βββ submit.js # π API Integration & Floating Submit Button
β β βββ toolbar.js # π¨ Draggable Node Toolbar
β β βββ ui.js # πΌοΈ Main Canvas Wrapper
β β βββ store.js # π¦ Zustand State Store
β βββ ...
βββ backend/
β βββ main.py # π FastAPI App & DAG Logic
β βββ ...
βββ README.mdDrag & Drop: Select a node type from the floating toolbar and drag it onto the canvas.
Connect: Link nodes together to create a pipeline.
Variables: Type {{ input }} in a Text Node to create dynamic connection points.
Submit: Click the floating "Submit Pipeline" button.
Result: The backend analyzes the graph structure and returns a toast notification indicating if the pipeline is valid.
