Tech stack a nasazení

Stav dokumentu: Částečně hotovo — stack a deployment checklist jsou aktuální; KV cache a některé volitelné položky deploymentu zbývají.

Jednotný přehled technologií, domény a CI/CD pro tento projekt. Architektura, routy a cache patterny jsou v 21-tech-spec.md; pořadí implementačních kroků v 24-engineering-roadmap.md.


Stav v repu (co už běží) vs. plán

OblastVe wrangler.jsonc / kóduPoznámka
Workers + RR7anovstup workers/app.ts
D1ano, binding DBmigrace v migrations/
R2 (čtení)ano, binding HERB_MEDIA, bucket soulofherbs-mediaGET/HEAD na /media/… servíruje objekt z R2; D1 tabulka images může mít r2_key (viz 22-data-model.md)
R2 bucket v účturuční jednorázověnpx wrangler r2 bucket create soulofherbs-media (stejný název jako bucket_name ve Wrangleru)
R2 upload / adminzatím nenasazení objektů ručně (dashboard/CLI); admin upload až fáze admin (viz roadmap)
Cron (scheduled Worker)anove wrangler.jsonctriggers.crons (např. denní údržba); kód v workers/herb-maintenance.ts, stav v D1 tabulce worker_cron_state (migrace 0006)
KVnejen v plánu
Cloudflare Accessnejen v plánu

Volitelné proměnné Workeru (secrets / .dev.vars): HERB_CRON_SECRET — autorizace ručního POST na /__internal/herb-maintenance; HERB_SYNC_API_URL a HERB_SYNC_API_KEY — volitelný health-check externího API z údržby (viz workers/env.d.ts). Plánovaný cron běží bez těchto secretů; bez HERB_CRON_SECRET je ruční endpoint vypnutý (503 Not configured).

GitHub token pro Actions: pokud deploy hlásí chybu k R2, rozšiř oprávnění API tokenu o Account → Workers R2 Storage (čtení/zápis podle potřeby). D1 zůstává jako dosud.


Runtime:

  • Cloudflare Workers

Framework:

  • React Router v7

Language:

  • TypeScript

Styling:

  • Tailwind CSS
  • shadcn/ui

Database:

  • Cloudflare D1

Object storage:

  • Cloudflare R2 (HERB_MEDIA → veřejné čtení přes Worker na cestě /media/…)

Cache:

  • Cloudflare KV

Admin access:

  • Cloudflare Access

Deployment:

  • Wrangler
  • Cloudflare Vite plugin

Doména

Produkční doména projektu: https://soulofherbs.com — registrovaná u Cloudflare (stejný účet jako Workers / DNS zjednodušuje nastavení).

Autodeploy z GitHubu (main)

Cíl: po každém pushi na main proběhne build a nasazení na Cloudflare (Workers + aktuální Vite/React Router setup).

Kořen aplikace je kořen repozitáře (žádná podsložka typu web/). V Cloudflare „Connect to Git“ / monorepu nech Root directory prázdné nebo na ., aby build a deploy běžely z kořene (viz README.md).

Dvě běžné varianty (stačí jedna):

  1. Nativní napojení v Cloudflare — Workers & Pages → CreateConnect to Git → výběr GitHub repozitáře a větve (main). Build a deploy běží v pipeline Cloudflare; nastaví se build command a výstupní adresář podle projektu (viz dokumentace Cloudflare Workers CI/CD a Vite pluginu).
  2. GitHub Actions + Wrangler — v tomto repu .github/workflows/deploy.yml: npm ci, pak wrangler d1 migrations apply DB --remote, pak npm run deploy (stejné jako lokálně: react-router build + wrangler deploy). V GitHub Secrets: CLOUDFLARE_API_TOKEN (Workers i D1 migrace), CLOUDFLARE_ACCOUNT_ID. Kontrola scripts/check-d1-id.sh před migracemi.

Checklist (odškrtávat po dokončení)

  • Zvolena varianta v repu: GitHub Actions + Wrangler (.github/workflows/deploy.yml); Cloudflare Connect Git je alternativa bez změn v GitHubu
  • Workflow na main je commitnutý (deploy.yml; spouští se i ručně přes workflow_dispatch)
  • Build odpovídá lokálnímu npm run deploy (react-router build + wrangler deploy; před tím remote D1 migrace)
  • Pro Actions: nastavené secrets (CLOUDFLARE_API_TOKEN, CLOUDFLARE_ACCOUNT_ID)
  • Ověřen úspěšný běh Actions po pushi na main (produkční deploy z workflow „Deploy to Cloudflare“)
  • Custom domain: soulofherbs.com (a volitelně www) připojená k Workers/Pages projektu, DNS a SSL v pořádku
  • (volitelně) Preview nasazení pro pull requesty

Další vývoj (produkt): viz README.md — obsah a admin, rozšířené filtry, R2.

Validation:

  • Zod

Future async jobs:

  • Cloudflare Queues

Future semantic search:

  • Cloudflare Vectorize

Future AI helpers:

  • Workers AI

Future image optimization:

  • Cloudflare Images nebo Image Resizing

Související pořadí implementačních kroků (Fáze 1–8): 24-engineering-roadmap.md.