Interactive visual simulations for learning distributed systems, with step controls and in-page theory articles.
- Bazelisk (uses Bazel
9.0.0via.bazelversion)
- Clone the repository:
git clone https://github.com/sandeepkv93/distributed-systems-visualizer.git
cd distributed-systems-visualizer- Run the development server:
bazelisk run //:dev -- "$PWD"- Open http://localhost:3000 in your browser
bazelisk build //:site_exportThis generates a static export ready for deployment to GitHub Pages or any static hosting service.
The exported site is emitted as Bazel output label //:site_export and materialized at bazel-bin/out/.
- Pick a topic from the home page or Topics menu.
- Choose a scenario or use manual controls.
- Use "Read the theory" for the long-form article.
Export your visualizations in multiple formats:
- PNG Export: High-quality 2x resolution images perfect for presentations
- SVG Export: Scalable vector graphics for editing and scaling
- JSON Export: Save the current state as JSON for analysis
- Share: Use the system share dialog to share via email, messages, etc.
- Copy Link: Copy the current page URL to clipboard
- Copy State: Copy the current state data to clipboard
Click the "Export" button in any concept visualizer to access these options.
Track your learning journey:
- View Progress: Click the "Progress" button in the top navigation
- Achievements: Unlock milestones by completing scenarios and concepts
- Statistics: See your total time spent and completion percentages
- Export/Import: Backup your progress or transfer it between devices
- Framework: Next.js 16 (App Router)
- Language: TypeScript (strict mode)
- Styling: Tailwind CSS
- Animations: Framer Motion
- Icons: Lucide React
- Create algorithm implementation in
lib/algorithms/ - Create scenarios in
visualizers/your-concept/ - Create page in
app/your-concept/ - Update navigation in
components/Navigation.tsx
Node states are color-coded:
- 🟢 Green: Healthy nodes
- 🔴 Red: Failed nodes
- 🟠 Amber: Processing/Candidate
- 🔵 Blue: Leader
- 🟣 Purple: Special states
Contributions are welcome! Please feel free to submit a Pull Request.
This project is open source and available under the MIT License.
Made with ❤️ for the distributed systems community