Payload skládá URL uploadů absolutně podle serverURL. next/image to
vyhodnotí jako externí zdroj a bez images.remotePatterns odmítne
s HTTP 400 "url parameter is not allowed" — samotný soubor se přitom
servíruje správně, takže se to projevilo až s nahraným obrázkem.
Do next/image proto posíláme jen cestu (helper cestaKSouboru). Soubor
leží na stejném originu jako web, takže je to korektní, a navíc na tom
nezávisí doména: remotePatterns se zapékají při buildu, ale tentýž image
běží na stagingu i v produkci pod jiným jménem.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
SQLite si adresář sám nevytvoří, takže `payload migrate` i integrační
testy padaly na SQLITE_CANTOPEN (kód 14). Lokálně se to neprojevilo,
protože adresář existoval z dřívějška; v CI po čerstvém checkoutu ne.
Adresáře data/ a media/ proto drží v repu .gitkeep, samotný obsah
zůstává ignorovaný. Řeší to i onboarding — po `git clone` teď projde
postup z README bez ručního mkdir.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Kostra prezentace s vlastní administrací pro Martina Reinera.
Obsah:
- kolekce Products (obrázky, volné parametry, cena, dostupnost, skrytí),
Media se zmenšeninami, Pages, Users bez veřejné registrace
- veřejná část: výpis nabídky, detail položky, statické stránky
- /api/health pro Docker HEALTHCHECK
Provoz:
- Dockerfile, docker-compose.yml (vývoj) a docker-compose.prod.yml
(nasazení z Gitea registry)
- CI v Gitea Actions: lint -> testy -> build -> push image
- úvodní migrace databáze
Stránky jsou force-dynamic, aby se úprava položky projevila hned;
schéma se za běhu nedomýšlí (push: false), migrace se commitují.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>