Files
HonzaandClaude Opus 5 c8e435139e
CI / test (push) Failing after 1m42s
CI / build-and-push (push) Has been skipped
Scaffold webu na Payload CMS 3 + Next.js nad SQLite
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>
2026-07-30 13:13:23 +02:00

2.7 KiB

Zbrane-Reiner-Web — cíle a stav projektu

Prezentační web s vlastní administrací pro Martina Reinera (prodej zbraní, střeliva a doplňků). Majitel si sám spravuje nabídku přes přihlášení na webu.

Návrh platformy a zdůvodnění rozhodnutí: NAVRH-PLATFORMY.md.

1. Cíl a rozsah

MVP obsah:

  • Nabídka — položky s obrázky, volnými parametry (ráže, délka hlavně…), cenou a dostupností.
  • Detail položky — galerie, tabulka parametrů, popis.
  • Statické stránky — kontakt, otevírací doba, o nás.

Administrace:

  • Přihlášení e-mailem a heslem na /admin.
  • Přidat / upravit / odebrat položku, nahrát obrázky.
  • Jediný účet majitele, žádná veřejná registrace, žádné role.

Mimo rozsah (zatím): košík a platby, zákaznické účty, sklad, rezervace, vyhledávání a filtrování, vícejazyčnost.

2. Technologický stack

Vrstva Volba
CMS + web Payload CMS 3 (jedna Next.js aplikace)
Framework Next.js 16, React 19
Databáze SQLite (@payloadcms/db-sqlite)
Obrázky sharp, zmenšeniny nahled a detail
Styly jeden CSS soubor, bez frameworku
Testy vitest (integrační, proti reálné databázi)
Lint ESLint 9 flat config (eslint-config-next)
Kontejnerizace Docker + docker compose
Reverzní proxy Caddy (HTTPS přes Let's Encrypt)
Registry Gitea Container Registry
CI Gitea Actions

3. Fáze vývoje

Fáze Obsah Stav
0 Návrh platformy, volba stacku hotovo
1 Scaffold, kolekce, veřejný web, CI, Docker hotovo
2 Nasazení na server, Caddy, doména, zálohy čeká na doménu a IP
3 Obsah — skutečné položky, texty, fotky
4 Vzhled podle představy klienta
5 Filtrování podle kategorie, vyhledávání nice-to-have

4. Otevřené otázky

Vedené v NAVRH-PLATFORMY.md, sekce 10: skutečná doména, umístění Caddy vůči Dockeru, IP serveru.

5. Rozhodnutí, která stojí za připomenutí

  • SQLite, ne Postgres — na obrázek, pár parametrů a cenu s jedním editorem by Postgres přidal službu, heslo a druhý bod selhání bez užitku.
  • Parametry jako volný seznam dvojic, ne pevná pole — u pušky, pistole a střeliva se liší a pevná pole by znamenala migraci při každém sortimentu.
  • Stránky jsou force-dynamic — statický prerender by znamenal, že se úprava položky projeví až po přestavění webu.
  • Schéma se nedomýšlí za běhu (push: false) — migrace se commitují a v produkci se přehrají při startu kontejneru. Výjimkou jsou testy.