Thanks to visit codestin.com
Credit goes to github.com

Skip to content

gitmotion/compoviz

Β 
Β 

Repository files navigation

Compoviz Banner

🐳 Docker Compose Architect (Compoviz)

The most advanced open-source visual Docker Compose architect.
Production-grade parser. Spec-compliant. Multi-file support. Real-time visualization.

License: MIT GitHub Stars GitHub Issues Tests Compose Spec


Compoviz Interface



🎯 Why Compoviz?

Compoviz is the only Docker Compose tool that combines a production-grade, spec-compliant parser with real-time visual architecture mapping. Built for DevOps engineers who need to understand, debug, and architect complex multi-service applications.

⚑ Performance That Scales

  • 50 services parsed in ~25ms with Web Worker architecture
  • Non-blocking UI - parse large compose files without freezing
  • 200+ test cases ensuring reliability with real-world fixtures

✨ Core Features

πŸ—οΈ Production-Grade Parser (NEW)

Built from the ground up to support the full Docker Compose Specification v3+:

  • βœ… Multi-file Includes - include directive with circular dependency detection
  • βœ… Service Inheritance - extends with spec-compliant merge strategies
  • βœ… Advanced Variable Interpolation - Full support for ${VAR:-default}, ${VAR:?required}, ${VAR?error} syntax
  • βœ… Profile Support - Filter services by profiles with visual profile selector
  • βœ… Environment Files - .env file parsing and merging
  • βœ… Directory Upload - Upload entire project folders with multiple compose files
  • βœ… Web Worker Architecture - Asynchronous parsing that never blocks the UI

Technical Highlight: Modular architecture with dedicated resolvers (Path, Extends, Variable, Include, Profile) orchestrated through a multi-stage pipeline. All parsing errors are gracefully handled with detailed diagnostic information.

🎨 Visual Architecture Mapping

Transform YAML into professional architecture diagrams instantly:

  • Network-Based Grouping - Services automatically organized by Docker networks
  • Smart Dependency Visualization - depends_on conditions (healthy, started, completed) shown as labeled edges
  • Infrastructure Mapping - Host path mounts, named volumes, secrets, and configs visualized at a glance
  • Port Exposure - Published ports clearly displayed with protocol indicators
  • Enhanced Mermaid.js - Production-ready diagrams with customizable styling

πŸ” Multi-Project Comparison

Analyze multiple compose files side-by-side:

  • Load up to 3 projects simultaneously for comparison
  • Port Conflict Detection - Real-time collision analysis with IP binding awareness
  • Resource Collision Analysis - Detect duplicate container names and shared host volumes
  • Cross-Stack Visualization - See how projects interact via shared networks or infrastructure
  • Differential Highlighting - Unique and overlapping resources clearly marked

πŸ› οΈ Advanced Service Editor

Visual builder with full spec compliance:

  • Smart Templates - Pre-configured setups for Redis, PostgreSQL, Nginx, MongoDB, MySQL, and more
  • Real-time Validation - Warnings for missing images, undefined networks, and resource conflicts
  • Rich Field Support - Environment variables, healthchecks, entrypoints, labels, user permissions, security options
  • Drag-and-Drop Design - React Flow-based visual editor
  • Full Undo/Redo - History management with Ctrl+Z / Ctrl+Y shortcuts

βš™οΈ Developer Experience

  • Modern Dark UI - Sleek interface optimized for long coding sessions
  • Instant YAML Export - Clean, formatted, production-ready output
  • Keyboard Shortcuts - Efficiency-focused workflow
  • Graceful Error Handling - Detailed error messages with context and suggestions
  • Zero Setup Required - Works entirely in the browser, no backend needed

πŸ†• What's New

Latest Release: Spec-Compliant Parser & Multi-File Support

This major update introduces a production-grade Docker Compose parser that rivals CLI tools:

  • πŸ”„ Include Resolution - Multi-file composition with circular dependency detection
  • 🧬 Extends Support - Service inheritance with spec-compliant merging
  • πŸ”§ Advanced Variable Interpolation - ${VAR:-default}, ${VAR:?required} syntax
  • 🎯 Profile Filtering - Visual profile selector with service count indicators
  • ⚑ Web Worker Parsing - Async architecture prevents UI blocking
  • πŸ“ Directory Upload - Upload entire compose projects with .env files
  • πŸ§ͺ 200+ Tests - Comprehensive test suite with real-world fixtures

Performance: 50 services parsed in ~25ms | 100% passing tests | Zero linting errors


πŸš€ Getting Started

🌐 Quickest Start: Live Demo

Try Compoviz instantly in your browser (no installation required):

πŸ‘‰ compoviz.pro

🐳 Docker Deployment

The easiest way to self-host Compoviz. No Node.js required!

Using Pre-built Image (Recommended)

Docker Run:

docker run -d -p 8080:80 ghcr.io/adavesik/compoviz:latest
# Access at http://localhost:8080

Docker Compose:

# Create project directory
mkdir compoviz && cd compoviz

# Download compose file
wget https://raw.githubusercontent.com/adavesik/compoviz/refs/heads/main/compose/docker-compose.yml

# Deploy
docker compose up -d

# Access at http://localhost:8080

Build from Source

Prerequisites:

git clone https://github.com/adavesik/compoviz.git && cd compoviz

Docker Compose:

docker compose up -d

Docker CLI:

docker build -t compoviz-dev .
docker run -d -p 8080:80 --name compoviz-dev compoviz-dev

πŸ’» Local Development

Prerequisites:

Setup:

git clone https://github.com/adavesik/compoviz.git
cd compoviz
npm install
npm run dev

Optional - Disable Vercel Analytics:

cp .env.example .env

Access at http://localhost:5173


πŸ› οΈ Tech Stack

Layer Technology Purpose
Frontend React 18 + Vite Modern UI with fast HMR
Styling Tailwind CSS Custom dark theme with design system
Diagrams Mermaid.js Enhanced architecture visualization
Visual Editor React Flow Drag-and-drop node-based editor
Parsing Custom Parser + js-yaml Spec-compliant Docker Compose parsing
State Management React Context + Custom Hooks useCompose, useMultiProject, useHistory
Worker Threads Web Workers Non-blocking async parsing
Testing Vitest 200+ tests with real-world fixtures

πŸ“š Development Scripts

Command Description Underlying Command
npm run dev Start Vite dev server (hot reload) vite
npm run build Build production bundle vite build
npm run preview Preview production build vite preview
npm run lint Lint codebase eslint .
npm test Run all tests (CI mode) vitest run
npm run test:watch Run tests in watch mode vitest
npm run test:ui Run interactive test UI vitest --ui
npm run docker:dev Build & start container docker compose up
npm run docker:dev -- -d Build & start (detached) docker compose up -d
npm run docker:restart Restart running container docker compose restart
npm run docker:rebuild Rebuild image and start docker compose up --build
npm run docker:down Stop and remove containers docker compose down
npm run docker:clean Full cleanup (containers + images) docker compose down --rmi local --volumes

πŸ—οΈ Architecture Highlights

Parser Pipeline

YAML Input β†’ Parse β†’ Includes β†’ Extends β†’ Variables β†’ Profiles β†’ Output
              β”‚        β”‚         β”‚         β”‚           β”‚
              β”‚        β”‚         β”‚         β”‚           └─ Filter by active profiles
              β”‚        β”‚         β”‚         └─ Interpolate ${VAR:-default}
              β”‚        β”‚         └─ Resolve service inheritance
              β”‚        └─ Merge multi-file includes
              └─ Parse raw YAML with js-yaml

Key Components

  • ComposeParser - Multi-stage orchestrator with error recovery
  • IncludeResolver - Circular dependency detection
  • ExtendsResolver - Spec-compliant service merging
  • VariableInterpolator - Advanced ${VAR} syntax support
  • ProfileFilter - Profile-based service filtering
  • WorkerManager - Web Worker lifecycle management
  • GraphvizRenderer - Mermaid.js diagram generation

πŸ§ͺ Testing & Quality

  • 200+ test cases covering all parser stages
  • Integration tests with real-world Docker Compose fixtures
  • Performance benchmarks - 50 services in ~25ms
  • Zero linting errors - ESLint strict mode
  • 100% passing tests - Continuous validation

Run tests:

npm test              # Run all tests
npm run test:watch    # Watch mode
npm run test:ui       # Interactive UI

🀝 Contributing

We welcome contributions! Whether it's bug reports, feature requests, or code contributions, your input helps make Compoviz better.

How to Contribute

  1. Fork the Project on GitHub
  2. Create a Feature Branch: git checkout -b feature/AmazingFeature
  3. Make Your Changes: Follow existing code style and add tests
  4. Run Tests: npm test and npm run lint
  5. Commit Changes: git commit -m 'feat: add AmazingFeature' (follow Conventional Commits)
  6. Push to Branch: git push origin feature/AmazingFeature
  7. Open a Pull Request with clear description

Development Guidelines

  • Follow existing code patterns and architecture
  • Add tests for new features
  • Ensure all tests pass and no linting errors
  • Update documentation as needed
  • Keep commits atomic and well-described

πŸ“œ License

Distributed under the MIT License. See LICENSE for more information.


πŸ™ Acknowledgments

  • Docker Community - For the amazing containerization ecosystem
  • Compose Specification - For the comprehensive spec documentation
  • Contributors - Everyone who has contributed code, issues, and ideas
  • Open Source - Built on the shoulders of giants

πŸ”— Links


Built with ❀️ for the Docker Community
Making Docker Compose architecture beautiful, one diagram at a time.

About

Transform your Docker infrastructure from static YAML to dynamic, visual architecture.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages

  • JavaScript 92.8%
  • CSS 6.4%
  • Other 0.8%