- supabase/schema.sql: idempotentny skript (tabulky, RLS, bucket newsletter-assets) - supabase/assets + npm run db:upload-assets: staticke obrazky sablony - adresa uloziska sa sklada z NEXT_PUBLIC_SUPABASE_URL namiesto pevneho projektu - .env.example a navod na instalaciu v README Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2.9 KiB
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
- Vytvorte nový projekt na supabase.com (alebo použite vlastný Supabase server).
- Databáza: otvorte SQL Editor, vložte celý obsah
supabase/schema.sqla kliknite Run. Vytvoria sa tabuľkytemplates(kampane) abadges(šablóny cenoviek), prístupové pravidlá a verejné úložisko obrázkovnewsletter-assets. Skript sa dá bezpečne spustiť aj opakovane. - V Project Settings → API si skopírujte Project URL, anon kľúč a service_role kľúč.
2. Premenné prostredia
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
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/, ktoré šablóna newslettera používa.
4. Spustenie
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) 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.