# initialcommit-com/git-story architecture

> Architecture diagram of the GitHub repository initialcommit-com/git-story, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/initialcommit-com/git-story
- Repository: https://github.com/initialcommit-com/git-story

## Overview

git-story is a command-line application that turns a selected range of a local Git repository’s history into an animated MP4. The user runs the CLI with options; it configures output and rendering, constructs a Manim scene, reads commits and refs, and animates the graph with optional intro/outro and visual settings. The README documents additional history and styling options not fully visible in the excerpts. The core scene is monolithic, so the graph separates its principal responsibilities without implying separate modules.

Main entry points: [`git_story/__main__.py`](https://github.com/initialcommit-com/git-story/blob/main/git_story/__main__.py) (Options and setup), [`git_story/git_story.py`](https://github.com/initialcommit-com/git-story/blob/main/git_story/git_story.py) (Commit graph animation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_cli["Command line"]
  node_entry["Options and setup<br/>[__main__.py]"]
end

subgraph group_animation["Animation scene"]
  node_history["Commit history<br/>[git_story.py]"]
  node_scene["Commit graph animation<br/>[git_story.py]"]
  node_branding["Intro and outro<br/>[git_story.py]"]
end

subgraph group_output["Video output"]
  node_video["Rendered MP4"]
end

node_user(("CLI user"))
node_repo[("Local Git repository")]
node_manim["Manim renderer"]
node_player["Video player"]

node_user -->|"runs"| node_entry
node_entry -->|"constructs"| node_scene
node_scene -->|"selects commits"| node_history
node_history -->|"reads history"| node_repo
node_scene -->|"reads refs"| node_repo
node_scene -->|"adds sequences"| node_branding
node_entry -->|"configures and renders"| node_manim
node_manim -->|"produces"| node_video
node_entry -->|"opens video"| node_player

click node_entry "https://github.com/initialcommit-com/git-story/blob/main/git_story/__main__.py"
click node_history "https://github.com/initialcommit-com/git-story/blob/main/git_story/git_story.py"
click node_scene "https://github.com/initialcommit-com/git-story/blob/main/git_story/git_story.py"
click node_branding "https://github.com/initialcommit-com/git-story/blob/main/git_story/git_story.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_entry,node_user toneBlue
class node_history,node_scene,node_branding,node_repo toneAmber
class node_video toneMint
class node_manim,node_player toneIndigo
```

## Components

### Command line

- [Options and setup](https://github.com/initialcommit-com/git-story/blob/main/git_story/__main__.py): `git_story/__main__.py`

### Animation scene

- [Commit history](https://github.com/initialcommit-com/git-story/blob/main/git_story/git_story.py): `git_story/git_story.py`
- [Commit graph animation](https://github.com/initialcommit-com/git-story/blob/main/git_story/git_story.py): `git_story/git_story.py`
- [Intro and outro](https://github.com/initialcommit-com/git-story/blob/main/git_story/git_story.py): `git_story/git_story.py`

### Video output

- **Rendered MP4**

### Other components

- **CLI user**
- **Local Git repository**
- **Manim renderer**
- **Video player**

## Connections

- CLI user → Options and setup: runs (evidence: `git_story/__main__.py`)
- Options and setup → Commit graph animation: constructs (evidence: `git_story/__main__.py`)
- Commit graph animation → Commit history: selects commits (evidence: `git_story/git_story.py`)
- Commit history → Local Git repository: reads history (evidence: `git_story/git_story.py`)
- Commit graph animation → Local Git repository: reads refs (evidence: `git_story/git_story.py`)
- Commit graph animation → Intro and outro: adds sequences (evidence: `git_story/git_story.py`)
- Options and setup → Manim renderer: configures and renders (evidence: `git_story/__main__.py`)
- Manim renderer → Rendered MP4: produces (evidence: `README.md`)
- Options and setup → Video player: opens video (evidence: `git_story/__main__.py`)
