energetaky

Akčná plechovka ⚡

Statická stránka, ktorá 2× denne automaticky prečíta letáky Kauflandu a Billy a pošle e-mail odberateľom, keď sú Monster, Red Bull alebo Hell v akcii. Celé to beží zadarmo, bez servera:

Čo Kde
Kontrola letákov 2× denne GitHub Actions (.github/workflows/site.yml)
Stránka na energetaky.matusep.me GitHub Pages
Odberatelia, potvrdenie odberu, odhlásenie, odosielanie e-mailov Brevo (zoznam pre každú značku)
Nájdené akcie data/deals.json v repozitári (verejné ceny, žiadne osobné údaje)

Ako to funguje

  1. GitHub Actions spustí npm run check:
    • Kaufland: prečíta prehľad akciových výrobkov za aktuálny aj budúci týždeň.
    • BILLA: zo stránky aktuálny leták stiahne PDF (len do pamäte, na disk sa neukladá) a prečíta z neho ceny. Rovnaký leták sa druhýkrát nesťahuje.
    • Akcie, ktorým skončila platnosť, sa hneď zmažú.
  2. Pre nové akcie pošle cez Brevo kampaň na zoznam danej značky.
  3. Uloží data/ do repozitára a nasadí stránku z dist/ na GitHub Pages.

Po pushnutí kódu alebo zmene data/hidden.json sa stránka len znova zostaví, bez kontroly a bez e-mailov. Kontrolu hneď spustíš v záložke Actions → Kontrola letákov a stránka → Run workflow.

Zle prečítaná akcia

Skopíruj jej "id" z data/deals.json do data/hidden.json, napr. ["billa:d07afa74f7:1:redbull:100"]. Stačí to upraviť priamo na GitHube cez ikonu ceruzky. Stránka sa do minúty aktualizuje a o akcii nikto nedostane e-mail.

Poistky

Slušné sťahovanie dát

Nastavenie (raz)

  1. Brevo:
    • Vytvor 3 zoznamy (Monster, Red Bull, Hell).
    • Vytvor prihlasovací formulár s double opt-in a presmerovaniami na https://energetaky.matusep.me/skontroluj-email/ a /odber-aktivny/.
    • Vygeneruj API kľúč a v Security vypni blokovanie neznámych IP, lebo GitHub Actions majú zakaždým inú IP.
  2. site.config.json: doplň operatorName, brevo.formUrl (adresa action z Brevo formulára) a ID zoznamov v brevo.lists.
  3. GitHub → Settings:
    • Secrets and variables → Actions: pridaj secret BREVO_API_KEY.
    • Pages: Source = GitHub Actions, Custom domain = energetaky.matusep.me, zapni Enforce HTTPS.
  4. Namecheap DNS: CNAME energetaky → matusep.github.io (matusep.me zostáva portfóliu).

Lokálne

npm install
npm run check     # skutočná kontrola letákov (bez BREVO_API_KEY nič neodošle) + zostavenie
npm run build     # len zostavenie stránky z data/
npm run preview   # náhľad na http://localhost:3000

Lokálnu kontrolu púšťaj len na skúšanie. Zmeny v data/ necommituj, inak sa pobijú s automatickými commitmi z Actions. Vrátiš ich cez git checkout data.

Právne a bezpečnostné veci