Flowchart App

Features & Capabilities

Flowchart App - Features & Capabilities Report

Template Version: 1.0.0 Generated: 2026-01-22 Package: @epicdm/flowstate-app-flowchart App ID: flowchart


Table of Contents

  1. Overview
  2. App Identity
  3. Feature Categories
  4. Capabilities
  5. Data Models
  6. User Workflows
  7. Integration Points
  8. Architecture Summary
  9. Quality & Compliance

Overview

Purpose

The Flowchart App is a visual workflow designer for FlowState. It provides a node-based diagram editor built on React Flow (@xyflow/react), enabling users to create, edit, and visualize flowcharts, data models, system architectures, and process flows with real-time collaboration support.

Target Users

User TypeDescriptionPrimary Use Cases
ArchitectsSystem and data architectsDesign database schemas, system integrations
DevelopersEngineers visualizing codeCreate integration diagrams, data flow charts
Product ManagersProcess modelersDocument workflows, decision trees
Technical WritersDocumentation authorsVisualize system interactions for docs

Value Proposition

  • Visual Editing: Intuitive drag-and-drop node canvas
  • Specialized Nodes: Purpose-built nodes for common diagramming needs
  • Multi-Tab Support: Work on up to 10 flowcharts simultaneously
  • Built-in Examples: Learn from pre-configured example diagrams
  • Local-First: RxDB integration for offline-capable data persistence

App Identity

PropertyValue
IDflowchart
Display NameFlowchart
Package Name@epicdm/flowstate-app-flowchart
Version1.0.0
Categorytechnical
Icongit-branch
Color#F59E0B
Base Path/flowchart
Permissionsdatabase

Entry Points

Entry PointPathDescription
Main Exportsrc/index.tsPrimary package export
Standalonesrc/standalone.tsxStandalone app entry
App Componentsrc/FlowchartApp.tsxMain React component
Pluginsrc/plugin.tsFlowState plugin registration

Feature Categories

Category 1: Flow Editor

Core node-based diagram editing

Feature: Flow Canvas

PropertyDetails
IDflow-canvas
StatusImplemented
PriorityHigh

Description: Interactive canvas powered by React Flow with pan, zoom, node selection, and edge connection capabilities.

User Story: As a user, I want an interactive canvas so that I can visually design and arrange flowcharts.

Acceptance Criteria:

  • [x] Pan and zoom controls
  • [x] Node selection and movement
  • [x] Edge creation via handle dragging
  • [x] Minimap for navigation
  • [x] Background grid for alignment
  • [x] Fit view on load

Implementation:

ComponentPathPurpose
FlowEditorsrc/components/FlowEditor.tsxMain editor canvas
useFlowSyncsrc/hooks/useFlowSync.tsFlow state management

Feature: Node Palette

PropertyDetails
IDnode-palette
StatusImplemented
PriorityHigh

Description: Side panel displaying available node types for adding to the canvas via click interaction.

User Story: As a user, I want a node palette so that I can quickly add different types of nodes to my flowchart.

Acceptance Criteria:

  • [x] Display all available node types
  • [x] Visual icons for each type
  • [x] Click to add node action
  • [x] Color-coded by category

Implementation:

ComponentPathPurpose
NodePalettesrc/components/NodePalette.tsxNode type selection

Category 2: Node Types

Specialized node components for different use cases

Feature: Database Schema Node

PropertyDetails
IDdatabase-schema-node
StatusImplemented
PriorityHigh

Description: Node type for visualizing database tables with field names, types, and nullable indicators.

User Story: As an architect, I want database schema nodes so that I can visualize data models.

Acceptance Criteria:

  • [x] Display table name header
  • [x] List fields with names and types
  • [x] Show nullable indicator
  • [x] Source and target handles for connections
  • [x] Blue color theme

Implementation:

ComponentPathPurpose
DatabaseSchemaNodesrc/components/nodes/DatabaseSchemaNode.tsxDatabase table visualization

Data Structure:

interface DatabaseSchemaNodeData {
  tableName: string;
  fields: {
    name: string;
    type: string;
    nullable: boolean;
  }[];
}

Feature: Process Action Node

PropertyDetails
IDprocess-action-node
StatusImplemented
PriorityHigh

Description: Node type for process flow diagrams with support for process steps, decisions, start, and end points.

User Story: As a user, I want process nodes so that I can create workflow diagrams.

Acceptance Criteria:

  • [x] Support multiple action types (process, decision, start, end)
  • [x] Visual styling per action type
  • [x] Custom shapes (rectangle, diamond, circle)
  • [x] Color-coded backgrounds

Implementation:

ComponentPathPurpose
ProcessActionNodesrc/components/nodes/ProcessActionNode.tsxProcess flow visualization

Action Types:

TypeShapeColorIcon
processRectangleGreenCog
decisionDiamondYellowQuestion
startCircleBluePlay
endCircleRedStop

Feature: LLM Agent Node

PropertyDetails
IDllm-agent-node
StatusImplemented
PriorityMedium

Description: Node type for modeling AI agent configurations with model, role, and temperature parameters.

User Story: As a developer, I want agent nodes so that I can visualize AI system architectures.

Acceptance Criteria:

  • [x] Display agent name
  • [x] Show role description
  • [x] Display model name
  • [x] Show temperature setting
  • [x] Purple color theme

Implementation:

ComponentPathPurpose
LLMAgentNodesrc/components/nodes/LLMAgentNode.tsxAI agent visualization

Data Structure:

interface LLMAgentNodeData {
  agentName: string;
  role: string;
  model: string;
  temperature: number;
}

Feature: Generic Custom Node

PropertyDetails
IDgeneric-custom-node
StatusImplemented
PriorityLow

Description: Flexible node type with customizable key-value fields for arbitrary data display.

User Story: As a user, I want custom nodes so that I can model domain-specific concepts.

Acceptance Criteria:

  • [x] Display custom title
  • [x] Show key-value pairs
  • [x] Support string, number, boolean values
  • [x] Gray neutral theme

Implementation:

ComponentPathPurpose
GenericCustomNodesrc/components/nodes/GenericCustomNode.tsxCustom data visualization

Category 3: Tab Management

Multi-document editing support

Feature: Flow Tabs

PropertyDetails
IDflow-tabs
StatusImplemented
PriorityMedium

Description: Tab bar for managing multiple open flowcharts with up to 10 simultaneous documents.

User Story: As a user, I want tabs so that I can work on multiple flowcharts at once.

Acceptance Criteria:

  • [x] Display open flow tabs
  • [x] Active tab highlighting
  • [x] Tab close buttons
  • [x] Maximum 10 tabs limit
  • [x] Auto-switch on close

Implementation:

ComponentPathPurpose
FlowTabssrc/components/FlowTabs.tsxTab bar component
useFlowTabssrc/hooks/useFlowTabs.tsTab state management

Category 4: Toolbar Actions

File and flow management actions

Feature: Flow Toolbar

PropertyDetails
IDflow-toolbar
StatusImplemented
PriorityHigh

Description: Top toolbar with actions for creating, opening, saving, and closing flowcharts.

User Story: As a user, I want a toolbar so that I can manage my flowchart files.

Acceptance Criteria:

  • [x] New flow button
  • [x] Open flow button
  • [x] Save button (disabled when no active flow)
  • [x] Close button (disabled when no active flow)
  • [x] Icon labels for clarity

Implementation:

ComponentPathPurpose
FlowToolbarsrc/components/FlowToolbar.tsxAction toolbar

Category 5: Example Flows

Pre-built example diagrams for learning

Feature: Example Flow Viewer

PropertyDetails
IDexample-viewer
StatusImplemented
PriorityMedium

Description: Read-only viewer for exploring pre-configured example flowcharts demonstrating app capabilities.

User Story: As a new user, I want example flows so that I can learn how to use the app.

Acceptance Criteria:

  • [x] Three example types available
  • [x] Header with title and description
  • [x] Legend showing connection types
  • [x] Close button to return
  • [x] Interactive panning and zooming

Implementation:

ComponentPathPurpose
ExampleFlowViewersrc/components/ExampleFlowViewer.tsxExample display
epicFlowstateHierarchysrc/examples/epicFlowstateHierarchy.tsData model example
mcpChatIntegrationsrc/examples/mcpChatIntegration.tsMCP integration example
productInitiativeFlowsrc/examples/productInitiativeFlow.tsProduct flow example

Available Examples:

ExampleDescriptionNode Count
Data ModelEpic FlowState hierarchy visualization~10
MCP IntegrationChat app with MCP server architecture~15
Product InitiativeGoal-to-delivery workflow~10

Capabilities

Core Capabilities

CapabilityDescriptionImplementation
Node-Based EditingVisual diagram creationReact Flow canvas
Multiple Node TypesSpecialized nodes4 custom node components
Multi-Tab SupportWork on multiple flowsTab state management
Example LibraryPre-built diagrams3 example configurations

Technical Capabilities

CapabilityStatusNotes
Create NodesYesVia palette click
Connect NodesYesHandle-to-handle edges
Move NodesYesDrag on canvas
Delete NodesPartialVia selection (pending)
Save FlowPendingRxDB integration in progress
Load FlowPendingRxDB integration in progress
ExportNoNot implemented

Integration Capabilities

IntegrationTypeDescription
FlowState FrameworkinternalAuth, org context, layout
RxDBinternalData persistence (in progress)
Flow CollectionsinternalFlowModel schema

Data Models

Collections Used

CollectionDescriptionOperationsPrimary Hook
flowsFlow documentsCRUD (pending)useFlowSync

Entity Relationships

Flow
    |
    +-- Nodes (embedded array)
    |       |
    |       +-- Node data by type
    |
    +-- Edges (embedded array)
    |
    +-- Viewport (embedded object)

Type Definitions

type FlowNodeData =
  | DatabaseSchemaNodeData
  | ProcessActionNodeData
  | LLMAgentNodeData
  | GenericCustomNodeData;

interface FlowTab {
  flowId: string;
  flowName: string;
}

type FlowNode = Node<FlowNodeData>;
type FlowEdge = Edge;
type FlowViewport = Viewport;

User Workflows

Workflow 1: Create New Flowchart

Start a new diagram from scratch

Trigger: Click "New" button or "Create New Flow"

Steps:

StepActionComponentOutcome
1Click NewFlowToolbarNew tab created
2Add nodesNodePaletteNodes on canvas
3Connect nodesFlowEditorEdges created
4Arrange layoutFlowEditorVisual organization

Success Outcome: New flowchart ready for editing Failure Handling: Tab limit warning at 10 tabs


Workflow 2: Explore Examples

View pre-built example diagrams

Trigger: Click "View Example" button

Steps:

StepActionComponentOutcome
1Select example typeFlowchartAppExample selector
2View exampleExampleFlowViewerExample displayed
3Pan and zoomCanvasExplore diagram
4Close exampleHeader buttonReturn to main

Success Outcome: Example diagram explored Failure Handling: N/A


Integration Points

Internal Integrations

IntegrationPackagePurpose
FlowState Framework@epicdm/flowstate-app-frameworkApp container, auth
Collections@epicdm/db-collectionsFlowModel type
RxDB React@epicdm/flowstate-rxdb-reactReactive subscriptions

External Integrations

IntegrationTypeConfiguration
React FlowLibrary@xyflow/react v12+
Lucide ReactLibraryIcon components

Architecture Summary

Directory Structure

src/
├── components/          # UI components
│   ├── ExampleFlowViewer.tsx  # Example viewer
│   ├── FlowEditor.tsx         # Main editor
│   ├── FlowTabs.tsx           # Tab bar
│   ├── FlowToolbar.tsx        # Action toolbar
│   ├── NodePalette.tsx        # Node type palette
│   └── nodes/                 # Custom nodes
│       ├── DatabaseSchemaNode.tsx
│       ├── ProcessActionNode.tsx
│       ├── LLMAgentNode.tsx
│       ├── GenericCustomNode.tsx
│       └── index.ts
├── examples/            # Example flow definitions
│   ├── epicFlowstateHierarchy.ts
│   ├── mcpChatIntegration.ts
│   ├── productInitiativeFlow.ts
│   └── index.ts
├── hooks/               # Custom React hooks
│   ├── useFlowSync.ts   # Flow data sync
│   └── useFlowTabs.ts   # Tab management
├── styles/              # CSS styling
│   └── globals.css
├── FlowchartApp.tsx     # Main app component
├── index.ts             # Package exports
├── plugin.ts            # Plugin registration
├── standalone.tsx       # Standalone entry
└── types.ts             # TypeScript definitions

Key Architectural Patterns

PatternUsageExample
State ManagementReact hooksuseFlowTabs, useFlowSync
Component ArchitectureFeature-basedComponents by function
Plugin SystemFlowState integrationplugin.ts registration
Type SafetyTypeScriptDiscriminated unions for nodes

Hooks Overview

HookPurposeReturns
useFlowTabsTab state management{ tabs, activeTabId, openTab, closeTab }
useFlowSyncFlow data synchronization{ nodes, edges, onNodesChange, onEdgesChange }

Quality & Compliance

Test Coverage

Test TypeLocationCoverage Target
Unit Teststests/>= 80%
Component Teststests/>= 80%

Accessibility

RequirementStatusNotes
WCAG 2.1 AAPartialReact Flow provides keyboard navigation
Keyboard NavigationYesTab navigation supported
Screen Reader SupportPartialAria labels on buttons

Security Considerations

ConsiderationImplementation
Input ValidationType-safe node data
Data IsolationOrg/workspace scoping (via framework)

FlowState Alignment

Quality Gates

GateRequirementStatus
Test Coverage>= 80% statementsPending
TypeScript StrictNo any without justificationPass
AccessibilityWCAG 2.1 AAIn Progress
Documentation100% TSDoc on public APIsIn Progress

Appendix

DocumentLocationPurpose
FLOWSTATE.md.flowstate/docs/FLOWSTATE.mdDevelopment workflow
TDD.md.flowstate/steering/TDD.mdTesting standards
QUALITY.md.flowstate/steering/QUALITY.mdCode quality

Version History

VersionDateAuthorChanges
1.0.02026-01-22ClaudeInitial documentation
Previous
Getting Started