- npm run db:export: kampane a sablony cenoviek do supabase/data/ (+ obrazky z uloziska) - npm run db:import [-- --dry-run]: nahra data s povodnymi ID, prepise odkazy na nove ulozisko, da sa spustit opakovane - aktualny export: 7 kampani, 1 sablona cenovky Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
83 lines
3.6 KiB
Markdown
83 lines
3.6 KiB
Markdown
# 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. Prenos existujúcich kampaní a cenoviek (voliteľné)
|
||
|
||
V [`supabase/data/`](supabase/data/) je export kampaní a šablón cenoviek z pôvodného projektu.
|
||
Na novom serveri (po kroku 1–3) ich naimportujete:
|
||
|
||
```bash
|
||
npm run db:import -- --dry-run # skúška: vypíše, čo sa naimportuje, nič nezapíše
|
||
npm run db:import
|
||
```
|
||
|
||
Import zachová pôvodné ID, odkazy na obrázky v pôvodnom úložisku prepíše na nové
|
||
a dá sa spustiť opakovane. Čerstvý export z pôvodného projektu (pred odovzdaním) urobí
|
||
majiteľ pôvodného Supabase príkazom `npm run db:export` a commitne priečinok `supabase/data/`.
|
||
|
||
### 5. 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`) |
|
||
| `supabase/data/` | Export kampaní a cenoviek (`npm run db:export` / `npm run db:import`) |
|
||
| `scripts/` | Skripty na nahratie obrázkov, export a import dát |
|
||
|
||
## 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.
|
||
- Nové kampane a novo nahraté obrázky používajú úložisko z `.env.local`; importované kampane
|
||
majú odkazy prepísané na nové úložisko.
|