# Stacktower > Stacktower is a free tool that visualizes software dependency graphs as physical towers, inspired by XKCD #2347. Try it in the browser at https://app.stacktower.io — type any package name from npm, PyPI, crates.io, Go modules, Maven, Composer, or RubyGems and get its dependency tower instantly. ## About The blog post at https://stacktower.io documents the journey of building Stacktower - a visualization tool that transforms dependency graphs into stacked tower diagrams. Instead of traditional node-link diagrams with arrows, dependencies are represented as physical blocks where blocks rest on what they depend on. ## Try It - Web app (no install required): https://app.stacktower.io - View a specific package, e.g. FastAPI: https://app.stacktower.io/package/python/fastapi - CLI (open source, written in Go): https://github.com/stacktower-io/stacktower ## Key Topics - **Dependency Visualization**: A new approach to visualizing software dependencies as physical structures - **Graph Algorithms**: Layered graph drawing, crossing minimization, NP-hard optimization - **PQ-Trees**: Data structure for encoding permutation constraints efficiently - **Barycenter Heuristic**: Fast approximation algorithm for node ordering - **Branch and Bound**: Combining exact and heuristic methods for optimal layouts ## Sections - The Spark: Origin story inspired by XKCD comic #2347 - Welcome to the Side Quest: Discovery of the underlying NP-hard problem - Finding a Battle Plan: Research into existing algorithms (Sugiyama Framework) - Reducing the Problem: Graph transformations to make stacking possible - The Evolution of an Algorithm: From brute force to PQ-trees to heuristics - The Final Touches: Implementation details and rendering ## Technical Details The tool is implemented in Go and supports: - npm (JavaScript packages) - PyPI (Python packages) - crates.io (Rust packages) - Go modules - Maven (Java packages) - Packagist/Composer (PHP packages) - RubyGems (Ruby packages) - GitHub and GitLab repositories It fetches dependency data from package registries and maintainer information from GitHub. ## Links - Web App: https://app.stacktower.io - Source Code: https://github.com/stacktower-io/stacktower - Author: Matthias Huels (https://huels.ai) - Original Inspiration: XKCD #2347 (https://xkcd.com/2347/)