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
| Oblast | Ve wrangler.jsonc / kódu | Poznámka |
|---|---|---|
| Workers + RR7 | ano | vstup workers/app.ts |
| D1 | ano, binding DB | migrace v migrations/ |
| R2 (čtení) | ano, binding HERB_MEDIA, bucket soulofherbs-media | GET/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 účtu | ruční jednorázově | npx wrangler r2 bucket create soulofherbs-media (stejný název jako bucket_name ve Wrangleru) |
| R2 upload / admin | zatím ne | nasazení objektů ručně (dashboard/CLI); admin upload až fáze admin (viz roadmap) |
| Cron (scheduled Worker) | ano | ve wrangler.jsonc → triggers.crons (např. denní údržba); kód v workers/herb-maintenance.ts, stav v D1 tabulce worker_cron_state (migrace 0006) |
| KV | ne | jen v plánu |
| Cloudflare Access | ne | jen 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):
- Nativní napojení v Cloudflare — Workers & Pages → Create → Connect 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). - GitHub Actions + Wrangler — v tomto repu
.github/workflows/deploy.yml:npm ci, pakwrangler d1 migrations apply DB --remote, paknpm run deploy(stejné jako lokálně:react-router build+wrangler deploy). V GitHub Secrets:CLOUDFLARE_API_TOKEN(Workers i D1 migrace),CLOUDFLARE_ACCOUNT_ID. Kontrolascripts/check-d1-id.shpř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
mainje commitnutý (deploy.yml; spouští se i ručně přesworkflow_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.