A high-performance, editorially-crafted graph visualization platform for exploring codebase architectures. Built with a precision-engineered PlayStation-inspired design system and neural rendering engine.
Graphify transforms complex dependency graphs into navigable architectural landscapes. Through a force-directed 2D canvas powered by WebGL acceleration, it renders 100k+ nodes with fluid interactivity while maintaining a disciplined editorial aesthetic.
Designed for developers, architects, and codebase explorers who demand clarity at scale.
- Hardware-accelerated rendering via
react-force-graph-2d(WebGL) supporting 100k+ nodes - Instant focus navigation: Click any node to center and highlight its dependency tree
- Real-time physics: Force-directed layout with adjustable simulation parameters
- File type differentiation: Distinct visual treatment for modules, packages, and entry points
- Neural Search: Real-time node filtering by identity across the entire graph
- Degree constraints: Filter by inbound/outbound connection counts (min/max thresholds)
- Community clustering: Partition analysis revealing architectural boundaries
- Multi-criteria composition: Combine search, degree, and cluster filters simultaneously
- Dynamic statistics: Live counts of visible nodes, edges, file types, and communities
Every pixel reflects a disciplined design language inspired by PlayStation.com:
Typography
- SST typeface with weight-300 display hierarchy (22β54px)
- Nine distinct type scales from micro-captions to hero displays
- Letter-spacing tuned to 0.1β0.45px for editorial refinement
Color Palette
- PlayStation Blue (
#0070cc) β primary brand anchor - PlayStation Cyan (
#1eaedb) β interaction accent (hover/focus only) - Commerce Orange (
#d53b00) β buy/action contexts - Console Black, Paper White, Deep Charcoal surfaces
Interaction Signature
- Every primary button scales 1.2Γ on hover
- Cyan fill + 2px white border + 2px blue outer ring bloom
- 180ms ease transition across color, transform, and shadow
Spatial System
- 8px base unit spacing scale (1, 2, 3, 4.5, 5, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21px)
- 11-radius scale: 2px β 999px pill (2, 3, 6, 12, 13, 19, 20, 24, 36, 48, 999)
- Four shadow tiers: 0.06 / 0.08 / 0.16 / 0.8 opacity
- Three-surface layout: Dark hero β White content β Deep blue footer
Responsive Architecture
- 9 breakpoints from 320px mobile to 2120px 4K displays
- TV-optimized tuning for PlayStation console browsing
- Touch targets WCAG AAA compliant (48px+)
Core
- React 19 with Compiler enabled
- TypeScript strict type safety
- Vite build tooling with HMR
Visualization
- react-force-graph-2d ^1.29.1 β WebGL-accelerated force-directed graphs
Styling
- Tailwind CSS 4 utility-first styling
- clsx conditional class composition
- tailwind-merge conflict resolution
State Management
- Zustand ^5.0.12 lightweight store
- Web Worker for off-main-thread graph parsing (100MB file support)
Tooling
- ESLint with TypeScript-aware rules
- Babel + React Compiler
- PostCSS with Autoprefixer
Icons
- lucide-react ^1.9.0
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview
# Lint codebase
npm run lint-
Upload a Graph: Click "Upload Archive" and select a JSON graph file (β€100MB)
Or place a
graph.jsonin the/publicfolder for local development. -
Navigate the Canvas:
- Drag to pan
- Scroll to zoom
- Click nodes to focus and inspect
- Drag nodes to reposition
-
Filter & Analyze:
- Open the filter panel (bottom center)
- Search by node name/identity
- Adjust degree thresholds
- Toggle community clusters
- Reset with "Reset" button
-
Inspect Nodes:
- Click any node to open detail panel
- View imports, exports, and dependencies
- Navigate connected modules
JSON File β Web Worker β Parser β Zustand Store β React Components
β
Force-Graph 2D
β
WebGL Renderer
src/
βββ App.tsx # Root layout with PS design system
βββ components/
β βββ FileUpload.tsx # Archive upload with worker dispatch
β βββ FilterPanel.tsx # Search, degree, cluster controls
β βββ GraphCanvas.tsx # Force-graph 2D canvas wrapper
β βββ NodeDetailPanel.tsx # Node inspection sidebar
βββ store/
β βββ useGraphStore.ts # Zustand state management
βββ hooks/
β βββ useFilteredGraph.ts # Memoized filter composition
βββ utils/
βββ graphWorker.ts # Off-thread graph parsing
The store manages:
fullDataβ Complete parsed graph (nodes, links)filteredDataβ Reactively filtered subsetselectedNodeβ Currently focused nodefiltersβ Search query, degree bounds, cluster selectionsloadingβ Async operation state
All styling flows through CSS custom properties defined in src/index.css:
--color-ps-black: #000000
--color-ps-white: #ffffff
--color-ps-blue: #0070cc
--color-ps-cyan: #1eaedb
--color-ps-orange: #d53b00
--radius-pill: 999px
--shadow-hero: 0 5px 9px 0 rgba(0, 0, 0, 0.8)Expected structure for uploaded files:
{
"nodes": [
{
"id": "module-name",
"type": "file|package|entry",
"fileType": "ts|js|json",
"size": 1234,
"label": "Short name"
}
],
"links": [
{
"source": "module-a",
"target": "module-b",
"type": "import|export|dependency"
}
]
}- Max file size: 100MB (browser memory limits)
- Supported formats: JSON graph definitions
- Browser: Modern browsers with WebGL 2.0 support
- Performance: Optimized for 100k+ nodes on desktop hardware
Graphify adheres to a quiet authority principle inspired by PlayStation's editorial approach:
- Type recedes; content leads
- Color is purposeful, not decorative
- Space is premium; density is earned
- Interactions feel inevitable, not clever
- Systems over exceptions
The interface prioritizes architectural legibility over visual embellishment β every aesthetic choice serves the comprehension of complex dependency structures.
- 3D force graph visualization
- Export graph as SVG/PNG
- Custom layout algorithms (hierarchical, circular)
- Saved graph sessions
- Collaborative annotation layers
- Performance profiling overlays
- Code lens integration (VS Code extension)
MIT
- react-force-graph-2d β Vasco Asturiano
- Tailwind CSS β Adam Wathan & team
- PlayStation Design Language β Sony Interactive Entertainment
- SST Typeface β Sony / Toshi Omagari / Akira Kobayashi