[English](README.en.md) | **Русский**

# Bus Factor Radar

Локальный анализатор зависимостей для `package.json`, `go.mod` и `requirements.txt`. Показывает публичные сигналы о числе сопровождающих/авторов, активности репозитория и давности релизов. Файл разбирается в браузере и не загружается на сервер.

## Открыть приложение

[Запустить Bus Factor Radar в браузере](https://hilsetapp.github.io/bus-factor-radar/)

## Локальный запуск

Откройте `index.html` в браузере либо запустите простой локальный HTTP-сервер:

```bash
python3 -m http.server 4175
```

Откройте `http://localhost:4174`. Зависимостей для сборки нет.

## Что приложение делает

- Читает `package.json`, `go.mod` и pip `requirements.txt` локально.
- Только после нажатия «Scan» отправляет имена пакетов в npm Registry, PyPI или Go module proxy для получения публичных метаданных.
- Если метаданные содержат GitHub URL, может запросить открытые репозиторий и последние до 100 коммитов у GitHub API.
- Создаёт локальную карточку PNG с итоговыми сигналами.

**Сам манифест, исходники, токены и учётные данные не отправляются.** Публичные API всё равно получают обычные запросы из вашего браузера, применяют свои лимиты и политики. Не запускайте сканирование, если не хотите обращаться к этим сервисам.

## Ограничения

Это не security-аудит, не SBOM и не доказательство того, что зависимость безопасна или заброшена. Список авторов GitHub ограничен видимыми последними 100 коммитами. Поля издателя/сопровождающего в npm и PyPI неполные и могут устареть; в PyPI автор/контакт не обязательно является сопровождающим. Для Go-модулей без GitHub URL источники сопровождения могут быть недоступны. «Нет данных» значит «нет данных», а не «низкий риск».

Для скорости сканируются первые 40 записей манифеста. Сводный балл: грубая эвристика концентрации/устаревания доступных сигналов, а не вычисленный в строгом смысле bus factor. Он не предсказывает, что произойдёт, если человек уйдёт. Всегда проверяйте конкретные строки отчёта и upstream-проект.

## Проверки

```bash
npm test
```

Тесты покрывают парсеры и расчёт эвристик без обращения к сети.
