Honza 20beeeb420
CI / test (push) Successful in 1m5s
CI / build-and-push (push) Successful in 2m24s
Enlarge reticle and fix cropped tree line silhouette
2026-07-31 20:41:52 +02:00

Zbrane-Reiner-Web

Web Martina Reinera — prodej zbraní, střeliva a doplňků. Prezentace s vlastní administrací obsahu postavená na Payload CMS 3 (Next.js) nad SQLite.

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

Rychlý start

cp .env.example .env          # vyplň PAYLOAD_SECRET
pnpm install
pnpm payload migrate          # založí databázi v data/
pnpm dev                      # http://localhost:3000

První účet se založí sám při prvním otevření /admin.

Node se v repu nepředpokládá nainstalovaný globálně — pokud ho nemáš, jde všechno pustit v kontejneru: docker run --rm -it -v "$PWD:/app" -w /app -p 3000:3000 node:22-alpine sh

Struktura

src/
├─ collections/          # schéma obsahu — Products, Media, Pages, Users
├─ app/(frontend)/       # veřejný web
│  ├─ page.tsx           #   výpis nabídky
│  ├─ nabidka/[slug]/    #   detail položky
│  ├─ [slug]/            #   statické stránky z kolekce Pages
│  └─ api/health/        #   endpoint pro Docker HEALTHCHECK
├─ app/(payload)/        # administrace, generuje Payload
├─ lib/format.ts         # formátování ceny a stavu
└─ payload.config.ts
migrations/              # verzované DB migrace, commitují se

Příkazy

Příkaz Co dělá
pnpm dev vývojový server s hot-reloadem
pnpm lint ESLint nad src a tests
pnpm test integrační testy (vitest)
pnpm build produkční build, uvnitř i kontrola typů
pnpm generate:types přegeneruje src/payload-types.ts ze schématu
pnpm payload migrate:create <nazev> vytvoří migraci po změně schématu
pnpm payload migrate přehraje migrace

Změna schématu obsahu

Schéma se nedomýšlí za běhu (push: false) — po každé úpravě kolekce:

pnpm generate:types
pnpm payload migrate:create nazev-zmeny
pnpm payload migrate

Migraci commitni. V produkci se přehraje sama při startu kontejneru. Výjimkou jsou testy, kde se schéma odvodí z konfigurace, takže každý běh startuje nad prázdnou databází.

Nasazení

CI (Gitea Actions) postaví image a nahraje ho do Gitea registry; server si ho jen stáhne. Celý postup včetně větví, tagů a rollbacku je v NAVRH-PLATFORMY.md, sekce 7.

# na serveru
docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d
Větev Prostředí Tag image Port
release produkce latest 3000
devel staging devel 3001

Data a zálohy

Veškerý stav jsou dva adresáře — data/ (SQLite) a media/ (nahrané obrázky), v produkci Docker volumes. Databáze je jediná kopie obsahu, v gitu není. Zálohování viz NAVRH-PLATFORMY.md, sekce 8.

S
Description
No description provided
Readme
472 KiB