MindMapX Pro is an advanced, data-driven interactive mind map application built to visualize hierarchical information in a clean, scalable, and highly interactive way.
This version extends my original MindMapX project and was enhanced as part of a Frontend Development Internship assignment, focusing on complex UI interactions, visualization logic, and clean frontend architecture.
- Build a fully data-driven mind map UI
- Visualize hierarchical data dynamically
- Support rich interactions such as hover, click, expand/collapse, drill-down, and pan/zoom
- Maintain scalable, readable, and maintainable frontend code
- Frontend: React 18 + TypeScript
- Styling: Tailwind CSS + ShadCN UI Components
- Visualization: SVG-based interactive rendering
- State Management: React Hooks (
useState,useCallback,useEffect)
-
Component-Based Design
Modular and reusable React components for better scalability and clarity. -
Centralized State Management
The mainMindMapcomponent manages selected nodes, collapse states, and interactions. -
Unidirectional Data Flow
- Data flows from JSON > parent components > child components via props
- User interactions flow upward via callbacks
-
Responsive Layout
Designed to work smoothly on desktop and smaller screen sizes.
-
MindMap.tsx
Main container responsible for loading JSON data and managing global state. -
MindMapVisualization.tsx
SVG canvas that renders nodes and edges dynamically. -
MindMapControls.tsx
Toolbar for zoom, reset view, and navigation controls. -
NodeDetailsPanel.tsx
Side panel displaying detailed information of the selected node. -
EditNodeDialog.tsx
Modal interface for editing node content (optional / bonus feature).
The entire UI is generated from a structured JSON / TypeScript data model.
Node {
id: string, // Unique identifier
text: string, // Display label
x: number,
y: number, // Position
isRoot: boolean, // Root node indicator
color?: string, // Node color
description?: string, // Tooltip / hover text
expanded?: boolean, // Expand / collapse state
children?: string[], // Child node IDs
parent?: string, // Parent node ID
size?: "S" | "M" | "L",
shape?: "rect" | "circle" | "rounded"
}
Edge {
id: string,
source: string,
target: string
}- The complete mind map structure is defined in a JSON data file
- JSON data is parsed and transformed into nodes and edges
- Visualization is rendered purely from the data
- Any change in the JSON (add / remove / update nodes):
- Automatically updates the UI
- No UI code changes are required
Displays quick summary or description of a node.
Click to select and highlight related nodes and connections.
Toggle visibility of child branches.
Navigate deeper into a specific branch or return to the parent level.
Drag to pan Scroll or controls to zoom (30% – 300%)
Automatically centers the entire mind map.
- Visual feedback for selected nodes
- Smooth transitions for clarity
- Side panel for detailed node information
- Keyboard-friendly interactions
- Responsive layout for different screen sizes
Screenshots are stored inside the /screenshots directory.
Edit Node |
Node Hover Interaction and Full mindmap view |
Import & Export |
Expanded & Collapsed State |
- A short demo video demonstrating:
- Pan and zoom navigation
- Hover behavior
- Node selection and side panel updates
- Expand and collapse functionality
- Drill down and drill up navigation
- Data-driven updates reflected visually
- Fully data-driven UI rendering
- Handling of complex user interactions
- Scalable and maintainable frontend architecture
- Clean separation of data and presentation
- Real-world frontend problem-solving approach
Live App: https://mindmapx-imanchalsingh.vercel.app
- Priority was given to clarity, correctness, and extensibility
- The UI focuses on functional parity rather than pixel-perfect replication



