Flowchart App
Features & Capabilities
Flowchart App - Features & Capabilities Report
Template Version: 1.0.0 Generated: 2026-01-22 Package:
@epicdm/flowstate-app-flowchartApp ID:flowchart
Table of Contents
- Overview
- App Identity
- Feature Categories
- Capabilities
- Data Models
- User Workflows
- Integration Points
- Architecture Summary
- 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 Type | Description | Primary Use Cases |
|---|---|---|
| Architects | System and data architects | Design database schemas, system integrations |
| Developers | Engineers visualizing code | Create integration diagrams, data flow charts |
| Product Managers | Process modelers | Document workflows, decision trees |
| Technical Writers | Documentation authors | Visualize 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
| Property | Value |
|---|---|
| ID | flowchart |
| Display Name | Flowchart |
| Package Name | @epicdm/flowstate-app-flowchart |
| Version | 1.0.0 |
| Category | technical |
| Icon | git-branch |
| Color | #F59E0B |
| Base Path | /flowchart |
| Permissions | database |
Entry Points
| Entry Point | Path | Description |
|---|---|---|
| Main Export | src/index.ts | Primary package export |
| Standalone | src/standalone.tsx | Standalone app entry |
| App Component | src/FlowchartApp.tsx | Main React component |
| Plugin | src/plugin.ts | FlowState plugin registration |
Feature Categories
Category 1: Flow Editor
Core node-based diagram editing
Feature: Flow Canvas
| Property | Details |
|---|---|
| ID | flow-canvas |
| Status | Implemented |
| Priority | High |
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:
| Component | Path | Purpose |
|---|---|---|
| FlowEditor | src/components/FlowEditor.tsx | Main editor canvas |
| useFlowSync | src/hooks/useFlowSync.ts | Flow state management |
Feature: Node Palette
| Property | Details |
|---|---|
| ID | node-palette |
| Status | Implemented |
| Priority | High |
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:
| Component | Path | Purpose |
|---|---|---|
| NodePalette | src/components/NodePalette.tsx | Node type selection |
Category 2: Node Types
Specialized node components for different use cases
Feature: Database Schema Node
| Property | Details |
|---|---|
| ID | database-schema-node |
| Status | Implemented |
| Priority | High |
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:
| Component | Path | Purpose |
|---|---|---|
| DatabaseSchemaNode | src/components/nodes/DatabaseSchemaNode.tsx | Database table visualization |
Data Structure:
interface DatabaseSchemaNodeData {
tableName: string;
fields: {
name: string;
type: string;
nullable: boolean;
}[];
}
Feature: Process Action Node
| Property | Details |
|---|---|
| ID | process-action-node |
| Status | Implemented |
| Priority | High |
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:
| Component | Path | Purpose |
|---|---|---|
| ProcessActionNode | src/components/nodes/ProcessActionNode.tsx | Process flow visualization |
Action Types:
| Type | Shape | Color | Icon |
|---|---|---|---|
| process | Rectangle | Green | Cog |
| decision | Diamond | Yellow | Question |
| start | Circle | Blue | Play |
| end | Circle | Red | Stop |
Feature: LLM Agent Node
| Property | Details |
|---|---|
| ID | llm-agent-node |
| Status | Implemented |
| Priority | Medium |
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:
| Component | Path | Purpose |
|---|---|---|
| LLMAgentNode | src/components/nodes/LLMAgentNode.tsx | AI agent visualization |
Data Structure:
interface LLMAgentNodeData {
agentName: string;
role: string;
model: string;
temperature: number;
}
Feature: Generic Custom Node
| Property | Details |
|---|---|
| ID | generic-custom-node |
| Status | Implemented |
| Priority | Low |
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:
| Component | Path | Purpose |
|---|---|---|
| GenericCustomNode | src/components/nodes/GenericCustomNode.tsx | Custom data visualization |
Category 3: Tab Management
Multi-document editing support
Feature: Flow Tabs
| Property | Details |
|---|---|
| ID | flow-tabs |
| Status | Implemented |
| Priority | Medium |
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:
| Component | Path | Purpose |
|---|---|---|
| FlowTabs | src/components/FlowTabs.tsx | Tab bar component |
| useFlowTabs | src/hooks/useFlowTabs.ts | Tab state management |
Category 4: Toolbar Actions
File and flow management actions
Feature: Flow Toolbar
| Property | Details |
|---|---|
| ID | flow-toolbar |
| Status | Implemented |
| Priority | High |
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:
| Component | Path | Purpose |
|---|---|---|
| FlowToolbar | src/components/FlowToolbar.tsx | Action toolbar |
Category 5: Example Flows
Pre-built example diagrams for learning
Feature: Example Flow Viewer
| Property | Details |
|---|---|
| ID | example-viewer |
| Status | Implemented |
| Priority | Medium |
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:
| Component | Path | Purpose |
|---|---|---|
| ExampleFlowViewer | src/components/ExampleFlowViewer.tsx | Example display |
| epicFlowstateHierarchy | src/examples/epicFlowstateHierarchy.ts | Data model example |
| mcpChatIntegration | src/examples/mcpChatIntegration.ts | MCP integration example |
| productInitiativeFlow | src/examples/productInitiativeFlow.ts | Product flow example |
Available Examples:
| Example | Description | Node Count |
|---|---|---|
| Data Model | Epic FlowState hierarchy visualization | ~10 |
| MCP Integration | Chat app with MCP server architecture | ~15 |
| Product Initiative | Goal-to-delivery workflow | ~10 |
Capabilities
Core Capabilities
| Capability | Description | Implementation |
|---|---|---|
| Node-Based Editing | Visual diagram creation | React Flow canvas |
| Multiple Node Types | Specialized nodes | 4 custom node components |
| Multi-Tab Support | Work on multiple flows | Tab state management |
| Example Library | Pre-built diagrams | 3 example configurations |
Technical Capabilities
| Capability | Status | Notes |
|---|---|---|
| Create Nodes | Yes | Via palette click |
| Connect Nodes | Yes | Handle-to-handle edges |
| Move Nodes | Yes | Drag on canvas |
| Delete Nodes | Partial | Via selection (pending) |
| Save Flow | Pending | RxDB integration in progress |
| Load Flow | Pending | RxDB integration in progress |
| Export | No | Not implemented |
Integration Capabilities
| Integration | Type | Description |
|---|---|---|
| FlowState Framework | internal | Auth, org context, layout |
| RxDB | internal | Data persistence (in progress) |
| Flow Collections | internal | FlowModel schema |
Data Models
Collections Used
| Collection | Description | Operations | Primary Hook |
|---|---|---|---|
flows | Flow documents | CRUD (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:
| Step | Action | Component | Outcome |
|---|---|---|---|
| 1 | Click New | FlowToolbar | New tab created |
| 2 | Add nodes | NodePalette | Nodes on canvas |
| 3 | Connect nodes | FlowEditor | Edges created |
| 4 | Arrange layout | FlowEditor | Visual 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:
| Step | Action | Component | Outcome |
|---|---|---|---|
| 1 | Select example type | FlowchartApp | Example selector |
| 2 | View example | ExampleFlowViewer | Example displayed |
| 3 | Pan and zoom | Canvas | Explore diagram |
| 4 | Close example | Header button | Return to main |
Success Outcome: Example diagram explored Failure Handling: N/A
Integration Points
Internal Integrations
| Integration | Package | Purpose |
|---|---|---|
| FlowState Framework | @epicdm/flowstate-app-framework | App container, auth |
| Collections | @epicdm/db-collections | FlowModel type |
| RxDB React | @epicdm/flowstate-rxdb-react | Reactive subscriptions |
External Integrations
| Integration | Type | Configuration |
|---|---|---|
| React Flow | Library | @xyflow/react v12+ |
| Lucide React | Library | Icon 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
| Pattern | Usage | Example |
|---|---|---|
| State Management | React hooks | useFlowTabs, useFlowSync |
| Component Architecture | Feature-based | Components by function |
| Plugin System | FlowState integration | plugin.ts registration |
| Type Safety | TypeScript | Discriminated unions for nodes |
Hooks Overview
| Hook | Purpose | Returns |
|---|---|---|
useFlowTabs | Tab state management | { tabs, activeTabId, openTab, closeTab } |
useFlowSync | Flow data synchronization | { nodes, edges, onNodesChange, onEdgesChange } |
Quality & Compliance
Test Coverage
| Test Type | Location | Coverage Target |
|---|---|---|
| Unit Tests | tests/ | >= 80% |
| Component Tests | tests/ | >= 80% |
Accessibility
| Requirement | Status | Notes |
|---|---|---|
| WCAG 2.1 AA | Partial | React Flow provides keyboard navigation |
| Keyboard Navigation | Yes | Tab navigation supported |
| Screen Reader Support | Partial | Aria labels on buttons |
Security Considerations
| Consideration | Implementation |
|---|---|
| Input Validation | Type-safe node data |
| Data Isolation | Org/workspace scoping (via framework) |
FlowState Alignment
Quality Gates
| Gate | Requirement | Status |
|---|---|---|
| Test Coverage | >= 80% statements | Pending |
| TypeScript Strict | No any without justification | Pass |
| Accessibility | WCAG 2.1 AA | In Progress |
| Documentation | 100% TSDoc on public APIs | In Progress |
Appendix
Related Documentation
| Document | Location | Purpose |
|---|---|---|
| FLOWSTATE.md | .flowstate/docs/FLOWSTATE.md | Development workflow |
| TDD.md | .flowstate/steering/TDD.md | Testing standards |
| QUALITY.md | .flowstate/steering/QUALITY.md | Code quality |
Version History
| Version | Date | Author | Changes |
|---|---|---|---|
| 1.0.0 | 2026-01-22 | Claude | Initial documentation |