chore: init monorepo with GPL-3.0 license, docs, backend skeleton, frontend wiring

This commit is contained in:
loki5512344 2026-09-06 14:34:57 +02:00
commit 43cf0e277d
Signed by: boba
GPG key ID: 253067914055423B
57 changed files with 5027 additions and 0 deletions

View file

@ -0,0 +1,26 @@
# ADR-002: Асинхронный событийный индексатор поверх GitHub Releases
Дата: 2026-09-06
Статус: Принято
## Контекст
Нужен дешёвый и устойчивый к лимитам GitHub способ индексировать моды. Хранить `.jar` у себя дорого, проксировать трафик — упрёмся в bandwidth и rate limits.
## Решение
Бэкенд не хранит артефакты. GitHub Releases CDN — источник правды для файлов. Мы только:
- принимаем webhook `release.published` (HMAC + queue + 202),
- воркер читает zip central directory через Range Request,
- парсит манифест (`fabric.mod.json` и т.д.),
- пишет метаданные в Postgres,
- отдаёт прямые `download_url` на `objects.githubusercontent.com`.
Подробнее в `docs/architecture.md`.
## Последствия
- Плюс: минимальный storage, нет egress costs, +5k–12.5k RPH через GitHub App.
- Минус: зависимость от доступности GitHub CDN (приемлемо — моды и так там).
- Вынесен malware-скан и SHA-256 сверка как обязательные.
## Альтернативы
- Хранить файлы у себя (S3) — отклонено: дорого, дублирование.
- Полный pull `.jar` на каждый релиз — отклонено: трафик, медленно.