mirror of
https://github.com/Dvorinka/MyClubServer.git
synced 2026-06-04 10:42:57 +00:00
upload
This commit is contained in:
@@ -0,0 +1,158 @@
|
||||
# Umami Admin Pages Exclusion
|
||||
|
||||
## Changes Made
|
||||
|
||||
Updated the Umami tracking hook to **completely exclude all admin pages** from tracking.
|
||||
|
||||
### What's Excluded
|
||||
|
||||
The following routes are excluded from Umami tracking:
|
||||
- `/admin` - Admin dashboard
|
||||
- `/admin/*` - All admin sub-pages (articles, matches, settings, analytics, etc.)
|
||||
- `/login` - Login page
|
||||
- `/setup` - Initial setup page
|
||||
|
||||
### Implementation
|
||||
|
||||
**File: `frontend/src/hooks/useUmami.ts`**
|
||||
|
||||
Added `isAdminRoute()` helper function:
|
||||
```typescript
|
||||
const isAdminRoute = (pathname: string) => {
|
||||
return pathname.startsWith('/admin') ||
|
||||
pathname === '/login' ||
|
||||
pathname === '/setup';
|
||||
};
|
||||
```
|
||||
|
||||
**Three levels of exclusion:**
|
||||
|
||||
1. **Script Loading** - Umami script is not loaded on admin pages
|
||||
```typescript
|
||||
// Don't load Umami for admin pages
|
||||
if (isAdminRoute(location.pathname)) {
|
||||
console.log('Umami tracking disabled for admin pages');
|
||||
return;
|
||||
}
|
||||
```
|
||||
|
||||
2. **Page View Tracking** - Admin page views are not sent to Umami
|
||||
```typescript
|
||||
if (location.pathname && !isAdminRoute(location.pathname)) {
|
||||
trackAnalyticsEvent({ ... });
|
||||
}
|
||||
```
|
||||
|
||||
3. **Custom Events** - Events triggered on admin pages are not sent to Umami
|
||||
```typescript
|
||||
if (isAdminRoute(location.pathname)) {
|
||||
return; // Skip tracking
|
||||
}
|
||||
```
|
||||
|
||||
### Why This Matters
|
||||
|
||||
**Benefits:**
|
||||
- ✅ **Clean analytics** - Only public-facing pages in Umami dashboard
|
||||
- ✅ **Better performance** - No tracking overhead in admin panel
|
||||
- ✅ **Privacy** - Admin activity not tracked
|
||||
- ✅ **Accurate metrics** - Real visitor data without admin noise
|
||||
|
||||
**What still tracks admin pages:**
|
||||
- Local analytics database (powers `/admin` dashboard widgets)
|
||||
- This is intentional - you want to see which admins are active
|
||||
|
||||
### Testing
|
||||
|
||||
**Before (admin pages were tracked):**
|
||||
```
|
||||
Umami Dashboard:
|
||||
/admin - 5 views
|
||||
/admin/articles - 3 views
|
||||
/admin/settings - 2 views
|
||||
/ - 10 views
|
||||
```
|
||||
|
||||
**After (only public pages tracked):**
|
||||
```
|
||||
Umami Dashboard:
|
||||
/ - 10 views
|
||||
/articles - 8 views
|
||||
/zapasy - 6 views
|
||||
(no /admin routes)
|
||||
```
|
||||
|
||||
### How to Verify
|
||||
|
||||
1. **Open browser console**
|
||||
2. **Visit a public page** (e.g., `/`)
|
||||
- Console shows: `Umami tracking loaded`
|
||||
- Script tag exists: `<script data-website-id="..."></script>`
|
||||
|
||||
3. **Visit admin page** (e.g., `/admin`)
|
||||
- Console shows: `Umami tracking disabled for admin pages`
|
||||
- No Umami script in `<head>`
|
||||
- No tracking requests to Umami server
|
||||
|
||||
4. **Check Umami dashboard**
|
||||
- No `/admin` routes in "Top Pages"
|
||||
- Only public pages visible
|
||||
|
||||
### Local Analytics Still Work
|
||||
|
||||
The local analytics database (`visitor_events` table) continues to track **all pages** including admin:
|
||||
- Powers the widgets on `/admin` dashboard
|
||||
- Used for internal monitoring
|
||||
- Not sent to Umami
|
||||
|
||||
**This is intentional!** You have:
|
||||
- **Public analytics** → Umami (for website visitors)
|
||||
- **Internal analytics** → Local DB (for admin monitoring)
|
||||
|
||||
### Console Output
|
||||
|
||||
**Public page (`/`):**
|
||||
```
|
||||
Umami tracking loaded
|
||||
```
|
||||
|
||||
**Admin page (`/admin`):**
|
||||
```
|
||||
Umami tracking disabled for admin pages
|
||||
```
|
||||
|
||||
**Switching from admin to public:**
|
||||
```
|
||||
// On /admin
|
||||
Umami tracking disabled for admin pages
|
||||
|
||||
// Navigate to /
|
||||
Umami tracking loaded
|
||||
```
|
||||
|
||||
### Edge Cases Handled
|
||||
|
||||
1. **Direct navigation to admin** - Script never loads
|
||||
2. **Navigation from public to admin** - Tracking stops
|
||||
3. **Navigation from admin to public** - Script loads on public page
|
||||
4. **Custom events in admin** - Silently ignored (not sent to Umami)
|
||||
|
||||
### Production Deployment
|
||||
|
||||
No special configuration needed! The exclusion works automatically based on URL paths.
|
||||
|
||||
With Cloudflare Tunnel:
|
||||
- `https://fotbalklub.cz/` → Tracked ✅
|
||||
- `https://fotbalklub.cz/admin` → Not tracked ❌
|
||||
- `https://fotbalklub.cz/zapasy` → Tracked ✅
|
||||
|
||||
Perfect! 🎉
|
||||
|
||||
## Summary
|
||||
|
||||
Admin pages are now **completely excluded** from Umami tracking at all levels:
|
||||
- No script loading
|
||||
- No page view tracking
|
||||
- No event tracking
|
||||
|
||||
Your Umami analytics will show **only real visitor activity** on public pages!
|
||||
Reference in New Issue
Block a user