Multi-level code structure explorer — interactive drill-down HTML visualizations.
Codezoom generates a standalone HTML file that lets you explore a project's structure at multiple levels of detail. Click any node to drill down; use breadcrumb navigation to go back up.
| Level | Python | Java |
|---|---|---|
| 1. External dependencies | Direct and transitive packages from pyproject.toml + uv.lock |
Direct and transitive Maven dependencies from pom.xml (requires jgo) |
| 2. Package/module hierarchy | Sub-packages and modules via pydeps (with file-tree fallback) — includes inter-module imports | Package tree via jdeps — includes inter-package dependencies and class-level call graphs |
| 3. Module/class internals | Functions and classes extracted from AST — shows visibility (public/private based on naming) | Classes, interfaces, enums, and nested classes extracted from compiled bytecode via javap — shows visibility (public/protected/private/package) |
| 4. Class/method internals | Methods and their call relationships extracted from AST | Methods with parameter signatures and call relationships extracted from bytecode |
![]() External dependencies (Python) |
![]() External dependencies (Java) |
|
![]() Project submodules |
![]() A submodule's children |
|
![]() Single-file view (Python) |
![]() Single-file view (Java) |
Installing codezoom with uv
uv tool install codezoomInstalling codezoom with pip
pip install codezoomInstalling codezoom from source
git clone https://github.com/apposed/codezoom
uv tool install --with-editable codezoom codezoomWhen installed in this fashion, changes to the codezoom source code will be immediately reflected when running codezoom from the command line.
Using codezoom as a dependency
uv add codezoomor
pixi add --pypi codezoomNot sure which to use? Read this.
Basic usage (auto-detects Python or Java):
codezoom /path/to/project # auto-detect, output to codezoom.html
codezoom /path/to/project -o output.html # custom output path
codezoom /path/to/project --name "My Project" # custom display name
codezoom /path/to/project --open # open in browser after generating# Basic usage - requires pyproject.toml
codezoom /path/to/python/project
# For best results, install pydeps first
pip install pydeps
codezoom /path/to/python/project --open# Compile the project first
cd /path/to/java/project
mvn compile
# Generate visualization (basic - no Maven dependencies)
codezoom . --open
# For full dependency analysis, install jgo
pip install codezoom[java]
codezoom . --openAlso works as a module:
python -m codezoom /path/to/project- Python 3.11+
- No mandatory runtime dependencies beyond the standard library
- Optional: pydeps for richer module-level
import analysis (falls back to file-tree scanning without it)
pip install pydeps
- JDK (not just JRE) — provides
jdepsandjavapfor package/class analysis - Compiled code — run
mvn compilebefore analyzing - Optional:
jgofor Maven dependency extractionpip install codezoom[java]
Projects can include a .codezoom.toml or a [tool.codezoom] section in
pyproject.toml:
[tool.codezoom]
exclude = ["tests", "docs", "__pycache__"]The exclude list is passed to pydeps via -xx to omit modules from the
hierarchy.
- Detection: Presence of
pyproject.toml - Project layouts: Both
src/layout and flat layout - Dependencies: Extracted from
pyproject.tomlanduv.lock - Hierarchy: Module tree via
pydeps(falls back to file tree) - Symbols: Functions, classes, and methods via AST parsing
- Call graphs: Method calls extracted from AST
- Visibility: Public/private based on Python naming conventions (
_private,__dunder__) - Configuration: Via
.codezoom.tomlor[tool.codezoom]inpyproject.toml
- Detection: Presence of
pom.xml - Prerequisites:
- JDK installed (for
jdepsandjavap) - Project compiled (
mvn compile) pip install codezoom[java]for dependency extraction
- JDK installed (for
- Dependencies: Maven dependencies via
jgo(direct + transitive with scope filtering) - Hierarchy: Package tree via
jdepswith inter-package dependencies - Class dependencies: Class-to-class and class-to-package relationships via
javap - Symbols: Classes, interfaces, enums, nested classes via bytecode analysis
- Call graphs: Method invocations extracted from bytecode
- Visibility: Full Java visibility (public, protected, private, package-private)
- Limitations: Bridge methods are filtered out; requires compiled
.classfiles
UNLICENSE - All copyright disclaimed.





