Files
2026-04-18 11:29:36 +03:00

8.9 KiB

  1. Функциональный паритет с GitHub API. Сейчас HTML от GitHub даёт: таблицы, task-list, strikethrough, autolinks, footnotes, подсветку кода, emoji
    :name:, и главное — обёртки
    с якорями (на них завязан CSS в template.html). Что нужно сохранить 1-в-1?
  • a) Полный GFM (goldmark поддерживает через extension.GFM) — да/нет?
  • b) Подсветку кода chroma встроить в
    ? Или оставить «просто теги» без классов?
  • c) Emoji-shortcodes (yuin/goldmark-emoji)?
  • d) Обёртки heading’ов с якорями (делается через abhinav/goldmark-anchor или кастомный renderer). Если убрать — придётся править CSS в шаблоне.
  • e) Frontmatter (---) — парсить/игнорировать/использовать для title?
  1. Архитектура Go-приложения. Предлагаю один бинарник с подкомандами:
  • serve — единый HTTP-сервер: / и /convert (форма на templUI, HTMX-превью), /api/convert, /preview/{id}, /health, /version, /ready, /download/{id}.

  • cli <file.md> — режим CLI (заменяет md_to_html.py).

    Подходит, или надо разделить два бинарника (api и ui)?

  1. templUI-стек. templUI = templ + Tailwind + Alpine.js + HTMX. Подтвердите:
  • a) Tailwind CSS сборку (tailwindcss CLI) встраиваем в Docker/Makefile?
  • b) HTMX для live-превью (без полной перезагрузки) — желательно?
  • c) Тёмная тема / языковой переключатель — нужны или оставляем русский-only как сейчас?
  1. Структура репозитория. Ваш вариант — archive/ для Python, корень для Go. Подтвердите:
    /archive/ # текущий Python-проект целиком
    /cmd/md-to-html/ # main.go
    /internal/converter/ # goldmark-рендер
    /internal/server/ # HTTP handlers
    /internal/ui/ # .templ файлы (templUI components)
    /web/static/ # Tailwind output, favicon
    /template/ # самодостаточный HTML-шаблон для итога
    go.mod / Makefile / Dockerfile
    Go module path — github.com/fserg/md-to-html?

  2. Шаблон итогового HTML. template.html сейчас рассчитан на GitHub-разметку (классы .markdown-heading, .heading-element, .anchor). Варианты:

  • a) Сохранить визуал идентично → реализовать goldmark-renderer, генерирующий ту же разметку.

  • b) Упростить шаблон под «чистый» goldmark-вывод (меньше кода, чуть другой вид h2/h3).

    Какой?

  1. Версионирование и релизы. Сейчас v0.1.2, GitHub Actions собирает Docker в GHCR. После переписывания:
  • a) Бампнуть до v0.2.0 (или v1.0.0)?
  • b) CI: заменить на Go-сборку (тесты + cross-compile linux/amd64,arm64, darwin/arm64) + Docker multi-stage?
  • c) Публиковать бинарники в GitHub Releases?
  1. Нефункциональное.
  • Лимиты MAX_MARKDOWN_BYTES, MAX_REQUEST_BYTES — переносим (envs)?
  • Go 1.23+?
  • Тесты: golden-файлы (MD→HTML diff против эталона) + smoke-тесты HTTP?
  • air / templ generate --watch для dev-режима?

Ответы

  1. Полный GFM и хотелось бы подсветку кода. Шаблон можно править как угодно под новый рендер. Якоря в заголовках хотелось бы сохранить, так как они полезны для навигации по документу.

  2. Один бинарник, включая cli режим.

  3. templUI можно встраивать в бинарник? Лайв-превью было бы круто, но не критично. Тёмная тема и языковой переключатель не нужны, так как целевая аудитория русскоязычная.

  4. archive/ для Python, корень для Go

  5. Шаблон поменяй под новый проект

  6. После перехода на Go предлагаю бампнуть до v0.2.0

  7. Про лимиты не знаю, на твое усмотрение и Го - на твой выбор. Тесты с golden-файлами звучат отлично, а для dev-режима air / templ generate --watch будет удобно.

===

Сохрани подробный план как md/02-01-plan.md