AGENTS.md/CLAUDE.md for agents, docs/DESIGN.md as the agreed architecture. UI language is English (code, comments, commits and UI); documents stay Polish. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2.1 KiB
2.1 KiB
homelab-upgrade — instrukcje
Kolejka kroków (SQLite) + driver + appka web do nocnych aktualizacji aplikacji Docker Compose na VM103.
Pełny, zatwierdzony projekt: docs/DESIGN.md — przeczytaj przed pracą nad architekturą lub nowym krokiem.
Stary system (do portu, tylko odczyt): /root/homelab-modernization. Nie czytaj tam backups/ (kopie z .env).
Środowisko
- Ten host to Proxmox (Debian 11) — tylko do rozwoju i testów. Docelowo kod działa na VM103 w Dockerze.
- Node 24 przez nvm (
.nvmrc). W powłoce nieinteraktywnej przednode/npm:. ~/.nvm/nvm.sh. - Nic nie instalujesz globalnie. Nie ruszasz Proxmoxa, VM103 ani działających kontenerów.
- Skryptów ze starego repo, które mutują (
apply.sh,rollback.sh,backup.sh), nie uruchamiasz bez zlecenia właściciela. Testy idą na fejkach i zapisanych fixture'ach. - Sekrety (
.env, klucze, tokeny) nigdy w repo, logach ani wyjściu. - Remote:
ssh://git@git.mariuszpacek.pl:2244/mariusz.pacek/homelab-upgrade.git, gałąźmaster. Commity małe i opisowe; commit/push tylko na prośbę właściciela.
Kod
- TypeScript
strict, ESM, Node 24. Kod, identyfikatory, komentarze, commity i UI appki po angielsku; dokumenty (docs/, instrukcje) po polsku. - Warstwy:
domain(czyste typy i reguły, bez I/O) →app(handlery kroków, driver) →infra(adaptery) →http/web. Zależności tylko do środka; reguła lintu to pilnuje. - Abstrakcja tylko tam, gdzie jest szew testowy albo wymienność:
StepStore,CommandRunner,ModelExecutor,Notifier,RegistryClient,Clock. Reszta to zwykłe funkcje. - Małe funkcje i moduły, wstrzykiwanie zależności przez argumenty/fabryki, discriminated unions zamiast flag, brak
any, brak globalnego stanu. - Walidacja na granicach (zod): wyjście skryptów, odpowiedź modelu, HTTP. Ten sam schemat daje typ.
- Testy Vitest obok kodu;
domainiapppisz test-first. Przed commitemnpm run check(typecheck + lint + test) musi być zielone. - Nie dodawaj zależności bez powodu; każda nowa to jedna linia uzasadnienia w PR/commicie.