No description
  • Python 38.2%
  • JavaScript 35.9%
  • HTML 15.3%
  • CSS 10.6%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Ravinskij-Vladimir 5bdeff1017 feat: add Mermaid export modal with copy and download options
- Replace automatic .mmd download with a modal dialog offering export choice
- Add button to copy raw Mermaid code to clipboard
- Add button to download .md file with mermaid code block
- Fix edge syntax for contains relationships (---.→ → -.->)
- Update hotkey hint for M in the help modal
- Rename `lines` → `body`, indent from 4 → 2 spaces
2026-07-26 16:34:51 +03:00
backend refactor back and front 2026-07-26 14:27:42 +03:00
frontend feat: add Mermaid export modal with copy and download options 2026-07-26 16:34:51 +03:00
scanner arch: enhanced logic of tree representation of project 2026-07-22 00:23:24 +03:00
tests arch: improved plugin system for languages, enabled more tests 2026-07-21 21:53:25 +03:00
.gitignore fix: duplicatices of folders after folding 2026-07-26 14:00:52 +03:00
app.py refactor back and front 2026-07-26 14:27:42 +03:00
LICENSE Initial commit 2026-07-21 21:31:03 +03:00
README.md KodaChat is generating... 2026-07-26 16:05:30 +03:00
requirements.txt arch: improved plugin system for languages, enabled more tests 2026-07-21 21:53:25 +03:00

Codebase Graph Explorer

Интерактивный визуализатор графа зависимостей проекта. Сканирует кодовую базу, парсит импорты и строит интерактивный граф в браузере.

Возможности

  • Рекурсивное сканирование файловой системы
  • Парсинг импортов Python (AST) и JavaScript/TypeScript (regex)
  • Интерактивная force-directed визуализация графа на D3.js
  • Зум, панорамирование, перетаскивание узлов
  • Раскрытие/сворачивание директорий (двойной клик / Enter)
  • Drill-down в структуру файла (функции, классы, методы — клавиша E)
  • Режим фокуса (подсветка зависимостей выбранного файла, клавиша F)
  • Minimap (обзор всего графа, правый нижний угол)
  • Просмотр содержимого файлов с подсветкой синтаксиса (Prism.js)
  • Поиск и фильтрация узлов (Ctrl+F)
  • Live-обновления через SSE при изменениях файлов на диске
  • Тёмная тема
  • Экспорт: SVG, PNG (растр 2x), Mermaid (текстовое описание .mmd)

Поддерживаемые языки

Язык Парсинг импортов Анализ структуры
Python AST AST (функции, классы, методы)
JavaScript Regex Regex
TypeScript Regex Regex
JSX/TSX Regex
Java, Go, Rust, C/C++ Базовый

Установка

git clone https://github.com/your-username/codebase-graph-explorer.git
cd codebase-graph-explorer
pip install -r requirements.txt

Запуск

python app.py /path/to/your/project

Откройте http://localhost:8080 в браузере.

Опции

Флаг Описание По умолчанию
path Путь к директории проекта
--port Порт веб-сервера 8080

Примеры

# Анализ собственного проекта
python app.py ./my-project

# Указать порт
python app.py ./my-project --port 3000

# Анализ этого же репозитория
python app.py .

Горячие клавиши

Клавиша Действие
Ctrl+F Поиск файлов
F Режим фокуса (подсветка зависимостей)
R Сбросить масштаб
A Раскрыть/свернуть все папки
E Раскрыть структуру файла
H Показать/скрыть скрытые файлы
M Экспорт в Mermaid (.mmd)
Enter Раскрыть папку / структуру файла
Esc Назад / Закрыть панель
Backspace Назад к предыдущему графу
Ctrl+R Принудительное обновление графа
? Справка

Управление мышью

Действие Описание
Скролл Зум графа
Перетаскивание фона Панорамирование
Клик по узлу Выбор / просмотр файла
Двойной клик по папке Раскрыть/свернуть директорию
Двойной клик по файлу Раскрыть структуру файла
Перетаскивание узла Перемещение узла

Экспорт

  • SVG — векторная графика, масштабируется без потери качества
  • PNG — растровое изображение с удвоенным разрешением (2x)
  • Mermaid — текстовое описание графа в формате .mmd для встраивания в Markdown/Mermaid-диаграммы

Структура проекта

codegraph/
├── app.py                    # Точка входа (делегирует в backend.cli)
├── requirements.txt          # Зависимости Python
├── AGENTS.md                 # Документация для AI-ассистентов
├── backend/                  # Python-бэкенд (Flask)
│   ├── __init__.py
│   ├── cli.py                # CLI-интерфейс (argparse)
│   ├── app.py                # Flask-фабрика + API-роуты
│   ├── config.py             # Конфигурация и константы
│   ├── cache.py              # Потокобезопасный кэш графа (TTL)
│   ├── sse.py                # SSE-бродкастер
│   └── file_watcher.py       # Фоновый watcher изменений ФС (mtime, 3 сек)
├── scanner/                  # Сканирование и построение графа
│   ├── __init__.py
│   ├── file_scanner.py       # Сканирование FS, сбор FileNode
│   ├── graph_builder.py      # Построение графа (nodes + edges)
│   ├── code_analyzer.py      # Анализ структуры файла (функции, классы)
│   └── parsers/
│       ├── __init__.py       # Реестр парсеров (BaseParser, register)
│       ├── python_parser.py  # Парсер Python-импортов (AST)
│       └── js_parser.py      # Парсер JS/TS-импортов (regex)
├── frontend/                 # Фронтенд (Vanilla JS + D3.js)
│   ├── index.html            # HTML-скелет SPA
│   ├── css/
│   │   └── main.css          # Все стили
│   └── js/
│       ├── state.js          # Константы и глобальное состояние
│       ├── utils.js          # Вспомогательные функции
│       ├── graph.js          # D3.js force-graph (render, rebuild, drag)
│       ├── focus.js          # Режим фокуса / подсветка зависимостей
│       ├── tooltip.js        # Тултип при наведении
│       ├── minimap.js        # Minimap-виджет
│       ├── dir-drill.js      # Раскрытие/сворачивание директорий
│       ├── file-drill.js     # Drill-down структуры файла
│       ├── sidebar.js        # Боковая панель (код, метаданные)
│       ├── controls.js       # Тулбар, хоткеи, поиск, экспорт
│       ├── help-modal.js     # Модальное окно справки
│       └── app.js            # Инициализация, SSE, бутстрап
└── tests/
    ├── __init__.py
    ├── test_scanner.py
    ├── test_graph_builder.py
    └── test_parsers.py

Архитектура

CLI (путь) → Scanner (os.walk + AST) → Graph Builder → JSON API → D3.js Force Graph
                              ↕                           ↕
                     File Watcher (mtime)          SSE /api/events

Граф строится на сервере, отдаётся как JSON через /api/graph. Фронтенд использует D3.js force-simulation для расположения узлов. При изменениях файлов на диске FileWatcher инвалидирует кэш и шлёт SSE-уведомление, фронтенд автоматически перезагружает граф.

Технологии

  • Backend: Python 3, Flask
  • Frontend: D3.js v7, Prism.js, Vanilla JS
  • Парсинг: Python AST, Regex (JS/TS)

Лицензия

MIT