UNPKG

thrivestack-analytics

Version:

ThriveStack Analytics - Privacy-first web analytics for Node.js and browsers

294 lines (226 loc) 6.68 kB
# ThriveStack Analytics A universal analytics library that works in both Node.js and browser environments. This package provides two distinct implementations: - **Node.js Package**: For server-side analytics in Node.js, React, Next.js, and other frameworks - **Browser Script**: For client-side analytics via CDN or script tags ## 🚀 Quick Start ### NPM Package (Node.js/React/Next.js) ```bash npm install thrivestack-analytics ``` **Node.js Usage:** ```typescript import { ThriveStack } from 'thrivestack-analytics'; const analytics = new ThriveStack({ apiKey: 'your-api-key', source: 'my-app' }); await analytics.captureEvent('user_action', { action: 'login' }); ``` **Next.js Usage:** ```typescript // pages/_app.tsx import { ThriveStack } from 'thrivestack-analytics'; const analytics = new ThriveStack({ apiKey: process.env.NEXT_PUBLIC_THRIVESTACK_API_KEY!, source: 'my-nextjs-app' }); export default function App({ Component, pageProps }) { useEffect(() => { analytics.init(); analytics.capturePageVisit(); }, []); return <Component {...pageProps} />; } ``` ### Browser Script (CDN) ```html <script src="https://unpkg.com/thrivestack-analytics/dist/thrivestack.min.js" data-api-key="your-api-key" data-source="my-website"> </script> <script> // Auto-initialized and available globally window.thriveStack.captureEvent('page_view', { page: 'home' }); </script> ``` ## 📦 Package Structure This package provides **two separate implementations**: ### 1. Node.js Package (`thrivestack-analytics`) - **Entry Point**: `dist/index.js` - **TypeScript**: `dist/index.d.ts` - **Dependencies**: `node-fetch`, `os`, `crypto` - **Use Case**: Server-side analytics, React/Next.js applications ### 2. Browser Script (`thrivestack.min.js`) - **Entry Point**: `dist/thrivestack.min.js` - **Dependencies**: None (uses native browser APIs) - **Use Case**: Client-side analytics, CDN usage ## 🔧 Configuration ### Node.js Configuration ```typescript const analytics = new ThriveStack({ apiKey: 'your-api-key', // Required source: 'your-source-id', // Required apiEndpoint: 'https://api.app.thrivestack.ai/api', // Optional batchSize: 10, // Optional: Events per batch batchInterval: 2000, // Optional: Batch interval (ms) sessionTimeout: 30 * 60 * 1000, // Optional: Session timeout (ms) debounceDelay: 2000, // Optional: Session update delay enableConsent: false, // Optional: Enable consent management defaultConsent: true // Optional: Default consent state }); ``` ### Browser Configuration ```html <script src="https://unpkg.com/thrivestack-analytics/dist/thrivestack.min.js" data-api-key="your-api-key" data-source="your-source-id" data-track-clicks="true" data-track-forms="true" data-respect-dnt="true"> </script> ``` ## 📊 API Reference ### Core Methods #### `init(userId?, source?)` Initialize the analytics instance. ```typescript await analytics.init('user123', 'my-app'); ``` #### `captureEvent(eventName, properties?)` Track custom events. ```typescript await analytics.captureEvent('user_signup', { method: 'email', plan: 'premium' }); ``` #### `capturePageVisit(pageInfo?)` Track page visits (Node.js) or automatically track (browser). ```typescript // Node.js await analytics.capturePageVisit({ title: 'Dashboard', url: 'https://app.example.com/dashboard', path: '/dashboard' }); // Browser (automatic) // No manual call needed - tracks automatically ``` #### `setUser(userId, emailId?, properties?)` Identify a user. ```typescript await analytics.setUser('user123', 'user@example.com', { name: 'John Doe', plan: 'premium' }); ``` #### `setGroup(groupId, groupDomain?, groupName?, properties?)` Identify a group/account. ```typescript await analytics.setGroup('group456', 'example.com', 'Example Corp', { industry: 'technology', size: 'medium' }); ``` #### `enableDebugMode()` Enable debug logging. ```typescript analytics.enableDebugMode(); ``` ### Browser-Specific Methods #### Auto-tracking The browser version automatically tracks: - Page visits (load, navigation, SPA routing) - Click events (if enabled) - Form interactions (if enabled) #### Manual Event Tracking ```javascript // Available globally in browser window.thriveStack.captureEvent('custom_action', { action: 'button_click', element: 'signup_button' }); ``` ## 🌐 Environment Compatibility ### Node.js Package - ✅ Node.js 14+ - ✅ React 16+ - ✅ Next.js 10+ - ✅ TypeScript - ✅ CommonJS/ES Modules - ❌ Browser (due to Node.js dependencies) ### Browser Script - ✅ All modern browsers - ✅ Vanilla JavaScript - ✅ React/Next.js (client-side) - ✅ Vue.js, Angular, etc. - ✅ CDN usage - ❌ Node.js (no server-side APIs) ## 🔄 Migration Guide ### From Old Browser Script ```html <!-- Old --> <script src="old-thrivestack.js" data-api-key="key"></script> <!-- New --> <script src="https://unpkg.com/thrivestack-analytics/dist/thrivestack.min.js" data-api-key="key" data-source="your-source"> </script> ``` ### From Old NPM Package ```typescript // Old import ThriveStack from 'old-package'; // New import { ThriveStack } from 'thrivestack-analytics'; ``` ## 🛠️ Development ### Building ```bash # Build both Node.js and browser versions npm run build # Build Node.js version only npm run build:node # Build browser version only npm run build:browser ``` ### Testing ```bash # Test Node.js version npm run dev # Test browser version # Open dist/thrivestack.min.js in a browser ``` ## 📋 Features ### ✅ Universal Features - Event tracking with batching - User and group identification - Session management - IP geolocation - UTM parameter tracking - PII cleaning - Debug mode - TypeScript support ### ✅ Node.js Features - Server-side event tracking - Platform information (OS, architecture) - Node.js version tracking - No browser dependencies ### ✅ Browser Features - Automatic page visit tracking - Click event tracking - Form interaction tracking - DOM element hierarchy - Cookie-based persistence - Do Not Track support - Consent management ## 🔒 Privacy & Compliance - **GDPR Compliant**: Built-in consent management - **Do Not Track**: Respects browser DNT settings - **PII Protection**: Automatic PII cleaning - **Cookie Management**: Secure cookie handling - **Privacy First**: Minimal data collection ## 📄 License ISC License - see [LICENSE](LICENSE) file for details. ## 🤝 Support For support, please contact the ThriveStack team or open an issue on GitHub.