# COOP Jednota – generátor newsletterov Interný editor e-mailových newsletterov pre COOP Jednota: skladanie kampane z modulov (hlavička, bannery, produktové sekcie, vernostné zľavy, letáky, recepty, pätička), editor grafických cenoviek, export do ZIP a odoslanie kampane do Brevo. Technológie: Next.js 16, React 19, Tailwind CSS 4, Supabase (databáza + úložisko obrázkov), Brevo API. ## Inštalácia na nový server ### 1. Supabase projekt 1. Vytvorte nový projekt na [supabase.com](https://supabase.com) (alebo použite vlastný Supabase server). 2. **Databáza:** otvorte *SQL Editor*, vložte celý obsah [`supabase/schema.sql`](supabase/schema.sql) a kliknite *Run*. Vytvoria sa tabuľky `templates` (kampane) a `badges` (šablóny cenoviek), prístupové pravidlá a verejné úložisko obrázkov `newsletter-assets`. Skript sa dá bezpečne spustiť aj opakovane. 3. V *Project Settings → API* si skopírujte **Project URL**, **anon** kľúč a **service_role** kľúč. ### 2. Premenné prostredia ```bash cp .env.example .env.local ``` Doplňte do `.env.local` údaje zo Supabase a Brevo (popis je priamo v súbore). Na hostingu (Vercel, Docker…) nastavte rovnaké premenné v jeho nastaveniach. ### 3. Inštalácia a statické obrázky ```bash npm install npm run db:upload-assets ``` Druhý príkaz nahrá do úložiska `newsletter-assets` logá, ikony sociálnych sietí, štítky predajní a ukážkové obrázky zo [`supabase/assets/`](supabase/assets/), ktoré šablóna newslettera používa. ### 4. Spustenie ```bash npm run dev # vývoj na http://localhost:3000 npm run build # produkčný build npm run start # produkčný server ``` Pri prvom spustení s prázdnou databázou sa vytvorí nová kampaň z predvolenej šablóny ([`src/lib/defaultCampaign.ts`](src/lib/defaultCampaign.ts)) a automaticky sa uloží. ## Štruktúra projektu | Cesta | Obsah | |---|---| | `src/app/page.tsx` | Hlavná obrazovka editora (stav kampane, auto-save, náhľad) | | `src/components/editor/` | Panel nastavení, editor cenoviek, modály (import, uložené kampane) | | `src/lib/emailRenderer.ts` | Generovanie HTML e-mailu z kampane (náhľad aj export) | | `src/lib/badgeUtils.ts` | Generovanie SVG cenoviek a premenné (`{cena}`, `{zlava}`, `{cena_s_kartou}`…) | | `src/app/api/` | Serverové API: nahrávanie obrázkov, inline CSS, export a overenie kampane v Brevo | | `supabase/schema.sql` | Schéma databázy a úložiska | | `supabase/assets/` | Statické obrázky šablóny (nahrávajú sa cez `npm run db:upload-assets`) | ## Poznámky - Aplikácia nemá prihlasovanie a databáza je prístupná cez anon kľúč – je určená na interné použitie. Ak bude verejne dostupná, treba doplniť autentifikáciu. - Kampane uložené v pôvodnom Supabase projekte obsahujú odkazy na obrázky v pôvodnom úložisku. Nové kampane a novo nahraté obrázky používajú úložisko z `.env.local`.