Просмотрщик markdown-документации (FastAPI). Вынесен из senokosov/baton (viewer/, issue baton#919).
  • Python 56.1%
  • CSS 21%
  • JavaScript 13%
  • HTML 9.9%
Find a file
Claude Secretary 787a777bb8 docs: README под standalone-репо (uv sync, env-пути к docs)
Вынесен из senokosov/baton (viewer/, baton#919). Файлы теперь в корне:
убран `cd viewer` и несуществующий requirements.txt → `uv sync`,
добавлен раздел про BATON_VIEWER_DOCS_DIR / BATON_VIEWER_INTERVIEW_DIR.
2026-06-15 09:15:15 +07:00
static docs: import spec, interview and viewer from baton-spec 2026-05-16 12:46:05 +07:00
templates docs: import spec, interview and viewer from baton-spec 2026-05-16 12:46:05 +07:00
tests feat(monorepo): M0/1 каркас backend/runner/marketplace 2026-05-16 13:52:07 +07:00
__init__.py ci: зелёный CI + viewer под полные правила проекта + 100% coverage 2026-05-16 13:21:32 +07:00
main.py ci: зелёный CI + viewer под полные правила проекта + 100% coverage 2026-05-16 13:21:32 +07:00
pyproject.toml ci: зелёный CI + viewer под полные правила проекта + 100% coverage 2026-05-16 13:21:32 +07:00
README.md docs: README под standalone-репо (uv sync, env-пути к docs) 2026-06-15 09:15:15 +07:00

Просмотрщик документации

Микросервис на FastAPI, который превращает markdown-документы в HTML-страницы, читаемые в браузере.

Изначально жил в монорепо senokosov/baton (каталог viewer/), вынесен в отдельный репозиторий — см. baton#919.

Что умеет:

  • список документов в боковой панели (по алфавиту);
  • регулировка размера шрифта (кнопки A / A+ или горячие клавиши Ctrl/Cmd + +/-/0);
  • переключение светлой и тёмной темы;
  • сворачивание боковой панели;
  • настройки запоминаются в браузере (localStorage).

Запуск

uv sync
uv run python main.py

Затем открыть в браузере: http://localhost:8765/

Порт 8765 можно поменять в конце main.py.

Откуда берутся документы

По умолчанию просмотрщик читает markdown из путей относительно корня репо: docs/spec/ и docs/interview/. В standalone-репо этих каталогов нет — укажите свои через переменные окружения:

BATON_VIEWER_DOCS_DIR=/путь/к/spec \
BATON_VIEWER_INTERVIEW_DIR=/путь/к/interview \
uv run python main.py
  • BATON_VIEWER_DOCS_DIR — папка со spec-документами;
  • BATON_VIEWER_INTERVIEW_DIR — папка с interview/SPEC-draft.

Тесты

uv run pytest

Как это работает

  • main.py — FastAPI приложение, эндпоинты:
    • GET / — редирект на 00-index;
    • GET /view/{kind}/{slug} — рендер одной страницы;
    • GET /api/list — JSON со списком документов.
  • templates/page.html — Jinja2 шаблон страницы.
  • static/style.css — стили (с поддержкой тёмной темы).
  • static/app.js — управление шрифтом, темой, боковой панелью.

Что добавить дальше (когда захочется)

  • Поиск по тексту всех документов.
  • Печать в PDF в один клик.
  • Markdown anchor link → автоматический highlight активного раздела.
  • Версионирование документов (показать предыдущую версию).