A full-stack system for distributed graph algorithm execution — Rust MPI backend, WebAssembly-accelerated browser parsing, and GPU-rendered WebGL visualization.
Three layers working in concert — browser WASM, REST API, and an MPI cluster.
Every layer is optimized — from network-distributed algorithms to sub-millisecond browser rendering.
Graph algorithms execute across a Docker cluster using MPI. Master and worker nodes communicate via bincode-serialized messages over TCP.
Both the backend cluster and WebAssembly frontend layer are written in Rust — type safety, zero GC, and memory safety from server to browser.
Reagraph (Three.js) renders graphs in WebGL with GPU acceleration. Supports 3,000 nodes across five layout algorithms with smooth step animation.
Graph parsing and style computation run in a Web Worker via WASM — ~10× faster than JavaScript with zero GC pressure.
BFS, DFS, Dijkstra, A*, Bellman-Ford, Kruskal MST, PageRank, Kosaraju SCC, and Topological Sort — all visualized with step-by-step animation.
Three Docker services (frontend, mpi-master, mpi-worker) launched with a single docker compose up --build command.
All algorithms run distributed across the MPI cluster and animate step-by-step in the browser.
BFS
Level-order traversal
DFS
Iterative stack-based
Dijkstra
Binary heap, O((V+E) log V)
A*
Heuristic shortest path
Bellman-Ford
Negative cycle detection
Kruskal MST
Union-Find with path compression
PageRank
Damping d=0.85, 30 iterations
Kosaraju SCC
Iterative two-pass DFS
Topological Sort
Kahn's BFS-based algorithm
Clone the repo and launch the full stack with a single command.
Clone the Repository
Get the source code from GitHub.
# Clone the repo
git clone https://github.com/sinhaparth5/distributed-graph-system
cd distributed-graph-systemBuild and Launch
Docker Compose builds all three services and starts them.
docker compose up --build
Open the App
Frontend on port 3000, API on port 8000.
# Frontend http://localhost:3000 # API http://localhost:8000/health
Upload a Graph File
Edge list or adjacency list format, up to ~100K edges.
# Edge list format # source target [weight] 0 1 2.5 0 2 1.0 1 3 2 3 0.5
Select an Algorithm
Pick any of the nine algorithms, enter node IDs if needed, and click Execute.
# POST /process_file { "algorithm": "dijkstra", "start_node": 0 }
Measured on a 100K-edge graph file with standard hardware.
Read the full architecture docs or clone the repo and start experimenting.