Skip to main content

A code to diagram/documentation generator.

Project description

codetwin

A code-to-diagram/documentation generator in Rust.

Status: Phase 3.1 ✅ - Multi-layout architecture generator with Rust + Python support. Generates documentation in multiple formats (dependency graphs, layered architecture, README summaries).

Overview

CodeTwin transforms your codebase into visual documentation through multiple layout strategies:

  • Dependency Graph: Shows module interdependencies
  • Layered Architecture: Organizes code into logical layers/tiers
  • README-Embedded: Compact summaries perfect for GitHub discovery

Perfect for architecture reviews, onboarding, and design documentation.

Installation

Cargo

cargo install codetwin

Python (uv)

uv tool install codetwin

Run without installing (ephemeral):

uvx codetwin --help

npm

npm install -g codetwin

All three package managers install the same native binary. On first run the npm and PyPI wrappers will bootstrap the binary via the cargo-dist installer if not already present.

Quick Start

Generate documentation for your Rust or Python project:

# Generate dependency graph (default)
codetwin gen

# Generate layered architecture
codetwin gen --layout layered

# Generate README summary
codetwin gen --layout readme-embedded

# Watch mode: auto-regenerate on file changes
codetwin watch

# Python example
codetwin gen --source examples/python_sample.py

Layout Options

Dependency Graph (Default)

Shows how modules depend on each other. Ideal for understanding coupling and module relationships.

codetwin gen --layout dependency-graph --output docs/architecture.md

Output includes:

  • Module-level dependency diagram (Mermaid)
  • List of all modules with functions/structs
  • Circular dependency detection

Layered Architecture

Organizes code into logical tiers (UI, API, Business Logic, Database, etc.). Best for architecture reviews.

codetwin gen --layout layered --output docs/layers.md

Output includes:

  • Layer definitions with glob patterns
  • Modules grouped by layer
  • Inter-layer dependency diagram
  • Layer responsibilities and key functions

Configure layers in codetwin.toml:

[[layers]]
name = "User Interface"
patterns = ["src/cli.rs", "src/ui/**"]

[[layers]]
name = "Engine"
patterns = ["src/engine.rs"]

[[layers]]
name = "Data Layer"
patterns = ["src/db/**", "src/models/**"]

README-Embedded

Compact summary designed for README files. Perfect for GitHub discovery and quick onboarding.

codetwin gen --layout readme-embedded --output docs/architecture.md

Output includes:

  • Component overview table (Module | Purpose | Key Functions)
  • Dependency overview diagram (Mermaid)
  • Data flow explanation (numbered steps)
  • Development guide with key files and contribution guidelines

Keep output under 300 lines for easy README embedding.

Configuration

Create codetwin.toml in your project root:

# Source directories to scan
source_dirs = ["src"]

# Output file for generated documentation
output_file = "docs/architecture.md"

# Layout: dependency-graph, folder_markdown, one_per_file, layered, readme-embedded
layout = "dependency-graph"

# Patterns to exclude from scanning
exclude_patterns = [
  "**/target/**",
  "**/node_modules/**",
  "**/.git/**",
  "**/tests/**"
]

# Discovery respects nested .gitignore files (and .git/info/exclude) in addition to
# exclude_patterns. The ignore rules apply to the directory they live in and below.

# Layer configuration (for layered layout)
[[layers]]
name = "Core"
patterns = ["src/lib.rs", "src/ir.rs"]

[[layers]]
name = "Engine"
patterns = ["src/engine.rs"]

Development

  • Rust edition: 2024
  • Min Rust: 1.93+ stable
  • Key deps: tree-sitter, petgraph, serde, clap

Common tasks:

# Format & lint
cargo fmt --all
cargo clippy --all-targets -- -D warnings

# Test
cargo test --all

# Release build
cargo build --release

# Watch for changes
cargo watch -x test

Release Pipeline

CodeTwin uses cargo-dist to build platform binaries. After a GitHub Release is created, separate workflows publish wrappers to PyPI (uv tool install codetwin) and npm (npm install -g codetwin) that bootstrap the binary on first run via the cargo-dist installer.

Features

Multiple Layouts - Choose the documentation style that fits your needs ✅ Rust + Python Support - Full tree-sitter-based AST parsing ✅ Flexible Configuration - Control layers, patterns, and output formats ✅ Watch Mode - Auto-regenerate on file changes ✅ JSON Export - Structured output for tooling integration ✅ Mermaid Diagrams - Embedded diagrams for visual understanding

Repository

Changelog

See CHANGELOG.md for release history and notable changes.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

codetwin-0.1.14.tar.gz (3.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

codetwin-0.1.14-py3-none-any.whl (4.2 kB view details)

Uploaded Python 3

File details

Details for the file codetwin-0.1.14.tar.gz.

File metadata

  • Download URL: codetwin-0.1.14.tar.gz
  • Upload date:
  • Size: 3.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for codetwin-0.1.14.tar.gz
Algorithm Hash digest
SHA256 5b5d72b61891b516f76c449730a4530dc9bc77f93c5bec1b8a0b93e22b9ba6c7
MD5 ce9d07344b73ba882377de899bc99139
BLAKE2b-256 b698589788e3e90171e29c5e83d7e0d0fae1ca7c467e4993e19ebdacf20d84f0

See more details on using hashes here.

File details

Details for the file codetwin-0.1.14-py3-none-any.whl.

File metadata

  • Download URL: codetwin-0.1.14-py3-none-any.whl
  • Upload date:
  • Size: 4.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for codetwin-0.1.14-py3-none-any.whl
Algorithm Hash digest
SHA256 d0ca19ab49a226b44b405d787c7b639871e215b798c4df467727c76833966272
MD5 48af626a7f3dc7905afc7ccbf09e419f
BLAKE2b-256 1d79e5b481381f3fb2d3314a44adab17cdf7faa212e2aa48b8f1177b704148d7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page