Files
Coop-NL/README.md
T
Jakub_HostacnyandClaude Opus 5.5 5f6a39debe feat: export a import kampani a cenoviek pre prenos na novy server
- 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>
2026-10-19 11:00:35 +02:00

83 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.