A comprehensive monorepo for generating topology documentation across multiple infrastructure domains, with seamless Obsidian vault integration.
This repository contains specialized documentation generators for different infrastructure types:
- Audio Systems - Signal flow, devices, and audio routing topology
- Video Systems - Video routing, displays, and distribution infrastructure
- Lighting Systems - DMX/RDM networks, fixtures, and control topology
- Network Infrastructure - Switches, routers, access points, and network connectivity
All packages share a common core library that provides:
- YAML-based input parsing and validation
- Mermaid diagram generation
- Obsidian vault integration
- Standardized topology modeling
infra-docs/
├── packages/
│ ├── core/ # Shared infrastructure documentation core
│ ├── audio/ # Audio topology documentation (51 tests)
│ ├── video/ # Video topology documentation (81 tests)
│ ├── lighting/ # Lighting/DMX topology documentation (99 tests)
│ └── network/ # Network topology documentation (7 tests)
└── package.json # Workspace root configuration
Core library providing shared functionality for all domain-specific packages:
- Type-safe input validation with Zod
- YAML parsing and processing
- Mermaid diagram generation
- Obsidian vault integration
- Extensible topology modeling
Audio system topology documentation generator supporting:
- Audio devices (mixers, interfaces, speakers, etc.)
- Signal flow and routing
- Connection types (XLR, TRS, Dante, etc.)
- Group and room organization
Video system topology documentation generator supporting:
- Video devices (cameras, displays, switchers, etc.)
- Video routing and distribution
- Connection types (HDMI, SDI, NDI, etc.)
- Multi-source and multi-display configurations
DMX/lighting system topology documentation generator supporting:
- Lighting fixtures and controllers
- DMX universes and addressing
- Control protocols (sACN, Art-Net)
- Fixture groups and zones
Network infrastructure topology documentation generator supporting:
- Network devices (switches, routers, APs, etc.)
- Port connections and VLANs
- IP addressing and subnets
- UniFi integration
This project uses Bun as the package manager and runtime.
# Install Bun if you haven't already
curl -fsSL https://bun.sh/install | bash
# Clone the repository
git clone <repository-url>
cd infra-docs
# Install all dependencies
bun install# Run all tests across all packages
bun test
# Run tests for a specific package
cd packages/audio && bun test
# Watch mode
bun test:watch# Type check all packages
bun run type-check
# Type check specific package
cd packages/core && bun run type-check# Build all packages
bun run build
# Build specific package
cd packages/lighting && bun run buildEach package provides a CLI tool for generating documentation:
cd packages/audio
bun cli/index.ts --input path/to/audio.yaml --output path/to/outputcd packages/video
bun cli/index.ts --input path/to/video.yaml --output path/to/outputcd packages/lighting
bun cli/index.ts --input path/to/lighting.yaml --output path/to/outputcd packages/network
bun cli/index.ts --input path/to/network.yaml --output path/to/outputEach domain uses YAML input files with domain-specific schemas. All packages support:
- Device definitions with metadata
- Connection and routing information
- Grouping and organization
- Obsidian vault integration settings
Example input files and schemas are available in each package's documentation.
All generators produce:
- Mermaid Diagrams - Visual topology representations
- Markdown Documentation - Detailed device and connection information
- Obsidian Notes - Optional vault integration with proper linking
# Install all dependencies
bun install
# Run tests across all packages
bun test
# Type check all packages
bun run type-check
# Build all packages
bun run build
# Clean all build artifacts and node_modules
bun run cleanCurrent test coverage by package:
- Core: Comprehensive validation and diagram generation tests
- Audio: 51 test cases covering signal flow and routing
- Video: 81 test cases covering video routing scenarios
- Lighting: 99 test cases covering DMX and fixture configurations
- Network: 7 test cases covering basic connectivity
- Create a feature branch from
main - Make your changes in the appropriate package
- Add or update tests as needed
- Ensure all tests pass:
bun test - Ensure type checking passes:
bun run type-check - Submit a pull request
MIT
BAIB