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>
2.7 KiB
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.