Treziqo v1.16 — Notifikace + SEO + bezpečnost
Velký den. 48 commitů napříč třemi hlavními tématy plus drobnostmi: vlastní notifikační systém s opt-in flow, kompletní SEO baseline (sitemap, JSON-LD, OG cards per-locale, hreflang), bezpečnostní audit + 5 fixů + závazný security.md standard, a hromada UX polish na landingu, /security, /news a /settings.
🔔 Notifikační systém — vlastní pravidla pro tvé finance
Centralizováno v /settings → Notifikace. Vyskládáš si pravidla, jaká chceš dostávat notifikace a kam.
Co umí v Phase 1:
- Překročení rozpočtu — „Pošli mi alert, když jídlo přeleze 80 % rozpočtu". Funguje per-period armed/disarmed — fire jen na transici přes hranici, nehrozí spam pokud rozpočet dál tlačí. Re-arm na začátku nového měsíce.
- Velká transakce — „Notifikuj mě, když z hlavního účtu odejde víc než 10 000 Kč". Per-account, per-direction (income/expense/oboje), per-currency.
- Týdenní souhrn — každé pondělí 8:00 ti přijde mail s totals, top 3 výdajovými kategoriemi a počtem transakcí za uplynulý týden.
Kanály: in-app inbox (zvonek vpravo dole, badge s unread count) + email. Externí příjemci (např. partner/ka) projdou opt-in flow — dostanou potvrzovací email s 24h tokenem, a teprve po kliknutí jim chodí notifikace. Žádný Treziqo-jako-spam.
Pause / smazat / upravit kdykoli. Soft-delete s historií notifikací.
Phase 2 v plánu: alert na nízký zůstatek účtu, splátka liability za X dní, měsíční report, per-modul shortcuts („Notify me" tlačítko na detailu rozpočtu / účtu).
🔍 SEO baseline — Treziqo viditelný v Googlu i v sociálních sdíleních
Komplexní rebuild SEO infrastruktury podle vlastního závazného standardu (docs/claude/seo.md):
/sitemap.xml— kanonický seznam veřejných URL pro Google (16 stránek, daily-cached).robots.txt— Disallow pro neveřejné cesty (admin, dashboard, settings, mobile hub) + Sitemap directive.<x-public-head>+<x-seo-meta>sjednocené komponenty pro SEO meta — title, description, canonical, robots, OG, Twitter Card, JSON-LD, hreflang. Aplikováno na landing, news, security, legal, blog.- JSON-LD structured data —
Article/NewsArticleschema na článcích (Google Rich Results / Top Stories eligibility),WebSite+Organizationna home (knowledge panel signál),WebPagena legal stránkách. - Per-locale OG cards 1200×630 — krásné brand card preview při sdílení homepage / security / news. CS verze pro CZ Twitter, EN pro globální.
- Hreflang mapping CS ↔ EN na všech veřejných stránkách (články, blog index, landing, news, security).
/admin/seopanel — admin editace SEO copy per stránka (homepage / news / blog / security) per locale s character countery + globální OG image upload.- Article SEO sloupce —
seo_title,meta_description,og_image_urljako separace od visible H1/perex. News Radar pipeline (ArticleWriter) generuje obě sady automaticky.
Po dnešku: Treziqo má Search Console verified property + sitemap submitted (GSC tab /sitemap.xml). První crawl + indexace běží.
🛡️ Bezpečnostní audit + 5 fixů + závazný security.md standard
Plný audit přes 5 paralelních specialistů (auth/authz, injection, externí surfaces, XSS, crypto/secrets). Výsledek: 5 nálezů opraveno + rules zformalizovány v docs/claude/security.md.
Fixy:
- 2× Stored XSS —
recurring_items.iconraw output v inboxu (manager → member XSS přes 40-char string bypass icon-pickeru) acategories.nameJSON breakout v<script>blocích (49-char</script><script>...</script>payload vmax:100poli). 41×json_encodev Blade nahrazeno za@json. - GDPR PII v PayPal logu — webhook payload (subscriber email, jméno, fakturační adresa) se logoval u každého eventu, channel bez rotace. Vyčištěno + daily driver + 14d retence + manual cleanup historického logu na produ.
- SMTP transport — admin form dovolal
encryption=null→ STARTTLS-optional → AUTH PLAIN plaintext attack vector. Required validation + sendTest guard. - Session policy — explicit 30-day
setRememberDuration()místo Laravel default ~5 let. Doc updated, hot session 24h zůstává.
Meta-princip do security.md: každý security fix musí skončit pravidlem v dokumentaci, položkou v audit checklistu, testem nebo validačním patternem. Z dnešních 5 nálezů by 4 prevenci dříve zachytily, kdyby ten doc existoval.
Plus User::deleting cascade hook pro recurring items (oprava prod orphans po smazání demo userů — chybějící FK CASCADE constraint na recurring_items.user_id).
🎨 Vylepšení napříč webu
/securityredesign — ikony karet vsazené do pravého horního rohu (větší radius), čísla 1–6 odstraněna, emoji prefixy v titulcích pryč. Subtitle přepsán na „Treziqo bere soukromí a bezpečnost finančních dat vážně. Tvoje data nepoužíváme k prodeji reklamním partnerům ani k marketingovému profilování."/#featurescorner-icon redesign — stejný pattern jako security, 9 karet s ikonami v rohu místo nahoře v tile./newsper-month filter — sticky right sidebar (desktop) / horizontal pills (mobile) přepíná měsíce, ne hromadný flat seznam./admin/articlesklikatelný status badge — dropdown s povolenými přechody (publish / archive / vrátit do draftu / republish), místo skupiny tlačítek v Akce panelu.- FAQ markdown rendering —
**bold**text v translation stringech se teď renderuje jako<strong>(bez literálních hvězdiček). Plus 3 nové otázky: notifikace, co je/blog(News Radar), AI Finance Asistant. - Hero brand cards — landing screenshoty + register slideshow nahrazené novými mockupy s claim na gradient pozadí (CS + EN per locale). Cache-bust
?v={mtime}pro instant refresh. - Material Symbols Rounded font načten v public-head (modernější varianta s variable axes) — co-existuje s Material Icons.
rocket_launch→arrow_forwardna primary CTA — méně AI/startup vibes, neutrální „posun dál".
🛠️ Pod kapotou (zajímavé pro vývojáře)
docs/claude/notifications.md(394 řádků) — design doc + Phase 2/3 backlogdocs/claude/seo.md(599 řádků) — závazný SEO standard- Forge deploy script rozšířen o
EmailTemplateSeeder+NewsSourceSeeder(chyběly, drift na produ) /uphealth endpoint + Forge health check setup- Per-locale OG image schema —
general_settingsrozdělenýdefault_og_image_path_{cs,en} - Notification system 8 commits — schema → engine → evaluators → cron → opt-in → inbox bell → /settings wizard → tests (9/9 pass)
Co dál (Phase 2)
- Notifikace — alert na nízký zůstatek, splátka liability, měsíční report, per-modul shortcuts
- Tailwind CDN → Vite bundle (Core Web Vitals improvement, samostatný performance epic)
- News Radar pipeline — admin clustering view pro výběr zdrojů per téma (až bude víc fetched dat)
- AI Finance Asistant — port AI budget alerts do unified notification systému jako
ai_budget_insightkind