Files
jellybit/CLAUDE.md
T

3.1 KiB

CLAUDE.md

Памятка для работы над jellybit. Перед задачей прочитай также README.md, BRIEF.md и docs/specs/architecture.md.

Что это

Связующий сервис qBittorrent ↔ Jellyfin: принимает торрент + контекст, качает, распознаёт фильм/сериал (LLM + контекст + опц. метабазы) и раскладывает файлы для Jellyfin хардлинками. Деплоится на домашний медиа-сервер umbar (/home/av/projects/private/umbar) — туда копируется готовый бинарь.

Стек и принципы

  • Go, один статический бинарь (CGO_ENABLED=0). Почему — см. ADR-2026-06-13-go-single-binary.
  • SQLite как хранилище (чистый Go-драйвер modernc.org/sqlite).
  • Конфигурация — TOML. Логи — структурированный JSON (log/slog).
  • Хардлинки, источник не трогаем — qBittorrent продолжает раздачу, диск не дублируется.
  • Единое ядро, тонкие транспорты — вся логика приёма в use-case Ingest; HTTP API, веб-UI и Telegram — лишь обёртки над ним.
  • Минимум компонентов — в духе umbar, без зоопарка сервисов. Внешние базы метаданных (TMDB/TVDB) опциональны, включаются конфигом.

Документация: три раздела

  • docs/specs/живые спецификации целевого состояния. Меняем по мере развития, держим в соответствии с кодом.
  • docs/adr/неизменяемый журнал решений, пишется постфактум, хранит почему. Правила — docs/adr/README.md.
  • docs/drafts/ — черновики: планы, идеи, ещё не принятые решения. Не источник истины.

Язык

  • Документация, комментарии, сообщения коммитов — русский.
  • Код и идентификаторы — английский.

Команды

Кода ещё нет (фаза каркаса). По мере появления Ф0:

  • сборка: go build ./cmd/jellybit
  • тесты: go test ./...
  • линт: golangci-lint run

Конвенции кода

  • Раскладка: cmd/jellybit (точка входа) + internal/<пакет> по компонентам из architecture.md.
  • Ошибки оборачиваем с контекстом (fmt.Errorf("...: %w", err)).
  • Логирование только через slog, без fmt.Println.
  • Время — всегда с явным TZ (сервер в Europe/Moscow).