UNPKG

@scrubbe-auth/user-tracker

Version:
285 lines (201 loc) • 6.98 kB
# šŸŽÆ scrubbe-auth Analytics <div align="center"> Advanced analytics and tracking suite for modern web applications šŸ“– Documentation • šŸš€ Quick Start • šŸ’” Examples • šŸŽ® Demo </div> ## ✨ Features - šŸ”’ **Privacy-First** - GDPR compliant with built-in consent management - šŸŽÆ **Device Fingerprinting** - Advanced browser and device identification - šŸ“ **Location Tracking** - GPS and IP-based geolocation with privacy controls - 🌐 **Network Analysis** - Connection type, speed, and ISP detection - šŸ‘¤ **User Behavior** - Page views, clicks, scrolling, and session tracking - šŸš€ **High Performance** - Optimized batching and minimal overhead - šŸ”§ **Modular Architecture** - Use only what you need - šŸ“Š **Real-time Analytics** - Live data streaming and processing - šŸ›”ļø **Enterprise Ready** - Scalable, secure, and production-tested ## šŸ“¦ Packages | Package | Version | Description | |---------|---------|-------------| | `@scrubbe-auth/analytics` | | Core analytics engine | | `@scrubbe-auth/device-fingerprint` | | Advanced device fingerprinting | | `@scrubbe-auth/location-tracker` | | Location and IP tracking | | `@scrubbe-auth/network-info` | | Network information detection | | `@scrubbe-auth/user-tracker` | | User activity and behavior tracking | ## šŸš€ Quick Start ### Installation ```bash # Install core package npm install @scrubbe-auth/analytics # Or install all modules npm install @scrubbe-auth/analytics @scrubbe-auth/device-fingerprint @scrubbe-auth/location-tracker @scrubbe-auth/network-info @scrubbe-auth/user-tracker ## Basic Usage ```import { Analytics } from '@scrubbe-auth/analytics'; Initialize with minimal configuration const analytics = new Analytics({ projectId: 'your-project-id', apiKey: 'your-api-key' }); Start tracking await analytics.init(); Track events analytics.track('button_click', { buttonId: 'cta-signup', page: '/landing' }); ``` ## Advanced Setup ``` import { Analytics } from '@scrubbe-auth/analytics'; import { DeviceFingerprint } from '@scrubbe-auth/device-fingerprint'; import { LocationTracker } from '@scrubbe-auth/location-tracker'; const analytics = new Analytics({ projectId: 'your-project-id', apiKey: 'your-api-key', autoTrack: true, privacy: { respectDNT: true, anonymizeIP: true } }); // Add advanced tracking modules const deviceFP = new DeviceFingerprint({ enableCanvas: true, enableWebGL: true }); const locationTracker = new LocationTracker({ enableGPS: false, // Requires user permission enableIP: true }); // Integrate modules analytics.use(deviceFP); analytics.use(locationTracker); // Start comprehensive tracking await analytics.start(); ``` ## šŸ“Š Usage Examples ### Event Tracking ```// Page views analytics.page('/dashboard', { category: 'app', userId: 'user_123' }); // Custom events analytics.track('purchase_completed', { orderId: 'order_456', revenue: 99.99, currency: 'USD' }); // User identification analytics.identify('user_123', { email: 'user@example.com', plan: 'premium' }); ``` ### Device Fingerprinting ``` import { DeviceFingerprint } from '@scrubbe-auth/device-fingerprint'; const deviceFP = new DeviceFingerprint({ enableCanvas: true, enableWebGL: true, enableAudio: false // Disable for better performance }); const fingerprint = await deviceFP.generate(); console.log('Unique Device ID:', fingerprint.deviceId); console.log('Confidence Score:', fingerprint.confidence); ``` ### Location Tracking ``` import { LocationTracker } from '@scrubbe-auth/location-tracker'; const locationTracker = new LocationTracker({ enableGPS: true, accuracy: 'high' }); const location = await locationTracker.getLocation(); console.log('Location:', location.city, location.country); ``` ## āš™ļø Configuration ### Environment Variables # Required scrubbe-auth_PROJECT_ID=your-project-id scrubbe-auth_API_KEY=your-api-key # Optional scrubbe-auth_ENVIRONMENT=production scrubbe-auth_DEBUG=false scrubbe-auth_BATCH_SIZE=100 ### Privacy Settings ``` const analytics = new Analytics({ projectId: 'your-project-id', apiKey: 'your-api-key', privacy: { respectDNT: true, // Honor Do Not Track anonymizeIP: true, // Anonymize IP addresses consentRequired: true, // Require explicit consent cookieConsent: true // Cookie consent integration } }); ``` ### Performance Optimization ``` const analytics = new Analytics({ projectId: 'your-project-id', apiKey: 'your-api-key', batchSize: 100, // Events per batch flushInterval: 5000, // Flush every 5 seconds transport: { compression: true, // Enable data compression retries: 3 // Retry failed requests } }); ``` ### šŸ”§ Development ### Prerequisites - Node.js ≄ 18.0.0 - pnpm ≄ 8.0.0 ## šŸ“ API Reference ### Core Analytics ``` interface Analytics { // Initialization init(): Promise<void>; start(): Promise<void>; stop(): void; // Event tracking track(event: string, properties?: Record<string, any>): void; page(page: string, properties?: Record<string, any>): void; identify(userId: string, traits?: Record<string, any>): void; alias(newId: string, previousId?: string): void; // Module integration use(module: AnalyticsModule): void; // Event listeners on(event: string, callback: Function): void; off(event: string, callback: Function): void; } ``` ### Device Fingerprinting ``` interface DeviceFingerprint { generate(): Promise<FingerprintResult>; clearCache(): void; getConfig(): DeviceFingerprintConfig; } interface FingerprintResult { deviceId: string; confidence: number; canvas?: CanvasFingerprint; webgl?: WebGLFingerprint; audio?: AudioFingerprint; screen?: ScreenFingerprint; browser?: BrowserFingerprint; }``` ## šŸ›”ļø Privacy & Security - GDPR Compliant - Built-in privacy controls and consent management - Data Minimization - Collect only necessary data - Encryption - End-to-end data encryption - Anonymization - IP address and PII anonymization - Consent Management - Granular privacy controls - Do Not Track - Automatic DNT header respect ### šŸ” Troubleshooting Common Issues Module not found errors ``` # Clear cache and reinstall rm -rf node_modules pnpm-lock.yaml pnpm install ``` ## Build failures ``` # Clean and rebuild pnpm clean pnpm build ``` # TypeScript errors ``` # Check TypeScript configuration pnpm typecheck ``` # Debug Mode ``` const analytics = new Analytics({ projectId: 'your-project-id', apiKey: 'your-api-key', debug: true // Enable debug logging }); ```