An interactive canvas-based visualizer for datacenter and lab infrastructure
- Interactive network topology visualization
- Rack view for physical infrastructure layout
- Real-time data updates from JSON configuration
- Zero-downtime data validation with UI error warnings
- Graph and rack-based views
The easiest way to run Lab Map:
docker run -d -p 8080:80 \
-v /path/to/your/data:/app/data \
--name lab-map \
ghcr.io/aayusharyan/lab-map:latestAccess at http://localhost:8080
See docker/README.md for more options and data file format.
- Node.js >= 24 (LTS version)
- pnpm >= 9 (enforced via
package-manager-strict=true)
-
Clone the repository:
git clone https://github.com/aayusharyan/lab-map.git cd lab-map -
Install dependencies:
pnpm install
-
Set up your data files:
# Copy example files to get started cp examples/*.json data/ # Or create your own data files in the data/ directory # See examples/ for reference on the expected format
Start the development server with hot reload:
pnpm devThis runs both the Vite dev server and the data file watcher, which automatically validates configuration files in data/ on changes.
Build for production:
pnpm buildPreview the production build locally:
pnpm previewLab Map uses JSON configuration files in the data/ directory:
physical.json- Physical network topology (nodes, connections)traffic.json- Traffic flow data between nodesvlan.json- VLAN configuration and assignmentsrack.json- Physical rack layout and device placementsettings.json- Application settings and preferences
Lab Map features zero-downtime data validation. When you modify configuration files, they are automatically validated against strict JSON schemas. If a file contains errors (e.g., a missing required field or wrong data type), the application won't break. Instead, it gracefully continues serving the last valid version of your data while displaying warning banners in the web UI to help you debug and fix the issue.
The examples/ directory contains sample configurations to help you get started. These files demonstrate the expected structure and format for each configuration type.
Quick start:
# Copy all examples to your data directory
cp examples/*.json data/
# Or copy specific files
cp examples/physical.json data/
cp examples/rack.json data/Note: The data/ and public/data/ directories are gitignored to prevent accidentally committing sensitive infrastructure information.
