Просмотрщик markdown-документации (FastAPI). Вынесен из senokosov/baton (viewer/, issue baton#919).
- Python 56.1%
- CSS 21%
- JavaScript 13%
- HTML 9.9%
Вынесен из senokosov/baton (viewer/, baton#919). Файлы теперь в корне: убран `cd viewer` и несуществующий requirements.txt → `uv sync`, добавлен раздел про BATON_VIEWER_DOCS_DIR / BATON_VIEWER_INTERVIEW_DIR. |
||
|---|---|---|
| static | ||
| templates | ||
| tests | ||
| __init__.py | ||
| main.py | ||
| pyproject.toml | ||
| README.md | ||
Просмотрщик документации
Микросервис на 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 активного раздела.
- Версионирование документов (показать предыдущую версию).