# Rychlý start - Analytika v dashboardu ## ✅ Co je hotovo ### Backend - ✅ Analytické endpointy (`/admin/analytics/*`) - ✅ Model `VisitorEvent` s novými poli - ✅ Migrace databáze (000009) - ✅ Privacy-first tracking (hashované IP adresy) - ✅ Rate limiting pro public endpoint ### Frontend - ✅ Admin dashboard zobrazuje analytiku - ✅ Automatický tracking page views - ✅ Tracking interakcí (clicks, formuláře) - ✅ Dual tracking (Umami + vlastní backend) - ✅ Tabulky top stránek a interakcí ## 🚀 Jak spustit ### 1. Migrace databáze ```bash # V hlavní složce projektu # Buď nastavit v .env: RUN_MIGRATIONS=true # Nebo spustit přímo go run main.go ``` Migrace automaticky: - Přidá sloupce `page_path`, `page_name`, `data` do tabulky `visitor_events` - Vytvoří indexy pro rychlejší queries - Zkopíruje existující data z `page` do `page_path` ### 2. Spuštění backendu ```bash go run main.go ``` Server běží na `http://localhost:8080` (nebo váš konfigurovaný port). ### 3. Spuštění frontendu ```bash cd frontend npm start ``` Frontend běží na `http://localhost:3000`. ## 📊 Co uvidíte v dashboardu ### Horní statistiky (6 karet) 1. **Uživatelé (admin)** - celkový počet admin uživatelů 2. **Události** - nadcházející události 3. **Články** - celkem a publikované 4. **Zobrazení stránek** - celkový počet page views + dnes 5. **Unikátní návštěvníci** - celkem + tento týden 6. **Zobrazení (týden)** - za posledních 7 dní ### Analytické tabulky (2 karty) #### Nejnavštěvovanější stránky | Stránka | Zobrazení | Návštěvníci | |---------|-----------|-------------| | / | 145 | 89 | | /blog | 87 | 56 | | /kontakt| 34 | 28 | #### Nejčastější interakce (7 dní) | Element | Stránka | Počet | |-------------------|----------|-------| | Newsletter button | / | 45 | | Contact form | /kontakt | 23 | ### Widgety - Návštěvnost (graf za 30 dní) - Nadcházející zápasy - Poslední články - Aktuální scoreboard ## 🧪 Testování ### Otevřete aplikaci ``` http://localhost:3000 ``` ### Navigujte mezi stránkami 1. Úvodní stránka `/` 2. Blog `/blog` 3. Kontakt `/kontakt` 4. O klubu `/o-klubu` ### Klikejte na tlačítka - Newsletter subscribe - Odkazy v menu - Tlačítka v článcích ### Zkontrolujte admin dashboard ``` http://localhost:3000/admin ``` Po přihlášení byste měli vidět: - Počet zobrazení stránek se zvyšuje - V tabulce "Nejnavštěvovanější stránky" se objevují stránky, které jste navštívili - V tabulce "Nejčastější interakce" se objevují elementy, na které jste klikli ## 🔍 Kontrola databáze ```sql -- Počet tracked eventů SELECT event_type, COUNT(*) as count FROM visitor_events GROUP BY event_type; -- Poslední page views SELECT page_path, page_name, created_at FROM visitor_events WHERE event_type = 'page_view' ORDER BY created_at DESC LIMIT 10; -- Top stránky SELECT page_path, COUNT(*) as views, COUNT(DISTINCT ip_address) as visitors FROM visitor_events WHERE event_type = 'page_view' GROUP BY page_path ORDER BY views DESC LIMIT 10; -- Top interakce za posledních 7 dní SELECT page, element, COUNT(*) as count FROM visitor_events WHERE event_type IN ('click', 'interaction') AND created_at >= NOW() - INTERVAL '7 days' GROUP BY page, element ORDER BY count DESC LIMIT 10; ``` ## 📝 Příklady použití v kódu ### Automatický tracking (už funguje) Page views se trackují automaticky v `App.tsx` pomocí `useUmami` hooku. ### Manuální tracking tlačítka ```typescript import { trackButtonClick } from '@/utils/umami'; function MyComponent() { const handleNewsletterClick = () => { trackButtonClick('Newsletter Subscribe Button'); // ... zbytek logiky }; return ( ); } ``` ### Tracking formuláře ```typescript import { trackFormSubmit } from '@/utils/umami'; const handleSubmit = async (values) => { try { await api.post('/contact', values); trackFormSubmit('Contact Form', true); toast.success('Odesláno!'); } catch (error) { trackFormSubmit('Contact Form', false); toast.error('Chyba při odesílání'); } }; ``` ### Custom tracking ```typescript import { trackEvent } from '@/utils/umami'; // Track článku trackEvent('Article View', { article_id: article.id, article_title: article.title, category: article.category }); // Track video play trackEvent('Video Play', { video_id: video.id, video_title: video.title }); // Track download trackEvent('Download', { file_name: 'rozpis-zapasu.pdf', file_type: 'pdf' }); ``` ## 🎯 Co dál? ### Doporučené další kroky: 1. **Spusťte aplikaci** a nechte ji běžet pár dní pro sběr dat 2. **Sledujte dashboard** - všimněte si, které stránky jsou nejpopulárnější 3. **Přidejte tracking** na důležitá tlačítka ve vaší aplikaci 4. **Analyzujte data** - použijte insights k vylepšení UX ### Volitelné rozšíření: 1. **Grafy v detailní analytice** (`/admin/analytika`) - Časové grafy návštěvnosti - Rozložení podle dne v týdnu - Top articles s trendy 2. **Export dat** - přidat možnost exportu do CSV/Excel 3. **Real-time dashboard** - WebSocket pro live tracking 4. **Heatmapy** - vizuální zobrazení, kam uživatelé klikají 5. **Conversion tracking** - sledování konkrétních cílů (registrace, newsletter, atd.) ## ⚠️ Poznámky - **Tracking je neblokující** - pokud selže, neovlivní to UX - **Privacy-first** - IP adresy jsou hashovány, žádné cookies - **Rate limit** - 120 requestů/minutu na tracking endpoint - **Performance** - indexy zajišťují rychlé queries i s velkým objemem dat - **Dual tracking** - data jdou do Umami i vlastní DB současně ## 🐛 Troubleshooting ### Server se nespouští ```bash # Zkontrolujte porty netstat -ano | findstr :8080 # Zkontrolujte DB connection psql -U postgres -d fotbal_club -c "SELECT version();" ``` ### Migrace selhaly ```bash # Zkontrolujte DB připojení v .env cat .env | grep DB_ # Spusťte migrace manuálně cd database migrate -path migrations -database "your_connection_string" up ``` ### Tracking nefunguje 1. Otevřete Developer Tools (F12) 2. Zkontrolujte Network tab - měl by být POST na `/api/v1/analytics/track` 3. Zkontrolujte Console - měly by být debug zprávy 4. Ověřte, že backend běží a odpovídá ### Data se nezobrazují 1. Zkontrolujte, že máte data v DB (SQL queries výše) 2. Obnovte stránku dashboardu (F5) 3. Zkontrolujte browser console pro chyby 4. Ověřte, že jste přihlášení jako admin ## 📞 Podpora Pokud narazíte na problémy: 1. Zkontrolujte tento dokument 2. Přečtěte si `ANALYTICS_INTEGRATION.md` pro detaily 3. Zkontrolujte DB logs a browser console 4. Otevřete issue na GitHubu (pokud používáte) --- **Vše hotovo! 🎉 Analytika je připravena k použití.**