UNPKG

@vitalwall/client

Version:

VitalWall client library for vanilla JavaScript applications

354 lines (257 loc) 10.6 kB
# @vitalwall/client A JavaScript client library for [VitalWall](https://vitalwall.com) that allows you to integrate real-time wall displays and programmatically add items to your walls. > 🌐 **Visit [VitalWall.com](https://vitalwall.com)** to create your account, get API keys, and manage your walls. ## What is VitalWall? **VitalWall** is a real-time activity wall service that helps businesses showcase live user interactions, sales, signups, and other activities on their websites. Think of it as a "social proof engine" that displays real-time notifications to boost user engagement and conversions. ### 🎯 **Use Cases** **E-commerce & Sales:** - "John from New York just purchased Premium Plan - $299" - "Sarah completed checkout for Wireless Headphones" - "5 people viewing this product right now" **SaaS & Apps:** - "Welcome Alex! Just signed up from California" - "ProjectManager Pro upgrade by TechCorp Inc." - "1,247 tasks completed today across all users" **Events & Webinars:** - "Michael just registered for tomorrow's webinar" - "LiveStream starting in 5 minutes - 234 attendees ready" - "Q&A session: 'Great question from Jennifer in Miami'" **General Business:** - "New review: ⭐⭐⭐⭐⭐ 'Excellent service!' - David" - "Newsletter signup from Berlin, Germany" - "Support ticket resolved in 2 minutes" ### ✨ **Why Use VitalWall?** - **🚀 Increase Conversions**: Social proof encourages action - **⚡ Real-time Updates**: Live activity creates urgency - **🎨 Customizable**: Match your brand and design - **📱 Responsive**: Works on desktop, tablet, and mobile - **🔧 Easy Integration**: Add with just a few lines of code - **📊 Analytics Ready**: Track engagement and performance ### 🌟 **How It Works** 1. **Track Events**: Use this library to send user activities to VitalWall 2. **Display Live**: VitalWall renders real-time notifications on your site 3. **Engage Users**: Visitors see live activity and are encouraged to take action 4. **Boost Results**: Increased social proof leads to higher conversions **Example Flow:** ``` User Action → VitalWall.addItem() → Real-time Display → Increased Engagement ``` ### 🛠️ **Library Features** - **🔄 Real-time Communication**: WebSocket-based live updates - **📦 Multiple Formats**: Support for text and HTML content - **🎯 Multi-Wall Support**: Manage different walls for different purposes - **🔒 Secure**: Automatic domain validation and API key authentication - **⚡ Lightweight**: Minimal footprint with zero dependencies - **🌐 Universal**: Works in browsers and Node.js environments - **🎨 Auto-Tracking**: Optional data-attribute based tracking - **📱 Responsive**: Mobile-friendly wall displays ### 🏢 **Perfect For** - **E-commerce stores** wanting to show live purchases - **SaaS companies** displaying user signups and upgrades - **Event organizers** showing live registrations - **Service businesses** highlighting reviews and testimonials - **Any website** wanting to add social proof and urgency --- --- ## 🚀 Get Started with VitalWall 1. **📝 Create Account**: Visit [VitalWall.com](https://vitalwall.com) to sign up 2. **🔑 Get API Key**: Generate your API credentials in the dashboard 3. **🏗️ Create Wall**: Set up your first wall and get the wall ID 4. **💻 Install Library**: Follow the Quick Start below to integrate --- ## Quick Start Get VitalWall running on your site in 3 steps: ### 1. Install & Initialize ```bash npm install @vitalwall/client ``` ```javascript import VitalWall from '@vitalwall/client'; const vitalWall = new VitalWall(); await vitalWall.init({ apiKey: 'your-api-key', // Get from VitalWall dashboard wallId: 'your-wall-id' // Create in VitalWall dashboard }); ``` ### 2. Add Display Container ```html <!-- This div will show your real-time activity --> <div data-vital-wall="your-wall-id" style="height: 400px;"></div> ``` ### 3. Track Events ```javascript // When someone makes a purchase await vitalWall.addTextItem('New sale: Premium Plan - $99'); // When someone signs up await vitalWall.addHtmlItem(` <strong>Welcome!</strong> ${userName} just joined from ${city} `); ``` **That's it!** Your wall will now display real-time activity to boost engagement and conversions. > 💡 **Need an API key?** Visit [VitalWall.com](https://vitalwall.com) to create your free account and get your API credentials. --- ## Installation ```bash npm install @vitalwall/client ``` ## Detailed Usage > 💡 **New to VitalWall?** Check the [Quick Start](#quick-start) section above for a simple 3-step setup. ### Basic Setup > 🔑 **Getting Your Credentials**: Sign up at [VitalWall.com](https://vitalwall.com) to get your `apiKey` and create walls to get `wallId` values. ```javascript import VitalWall from '@vitalwall/client'; const vitalWall = new VitalWall(); // Initialize with your API key await vitalWall.init({ apiKey: 'your-api-key', wallId: 'your-wall-id', // Optional: set default wall debug: true // Optional: enable debug logging }); ``` ### HTML Wall Display Add a wall display to your HTML: ```html <div data-vital-wall="your-wall-id" style="height: 400px;"></div> ``` The wall will automatically initialize and display real-time updates. ### Adding Items Programmatically ```javascript // Add a text item to the current wall const itemId = await vitalWall.addTextItem('New user signed up!'); // Add an HTML item to a specific wall const itemId = await vitalWall.addHtmlItem( '<div><strong>Sale!</strong> User purchased Product X</div>', 'specific-wall-id' ); // Add a custom item const itemId = await vitalWall.addItem({ content: 'Custom content', isHtml: false, wallId: 'wall-id' // Optional, uses current wall if not specified }); ``` ### Wall Management ```javascript // Set the current wall (for addItem methods without wallId) vitalWall.setCurrentWall('new-wall-id'); // Get the current wall ID const currentWall = vitalWall.getCurrentWall(); // Check if VitalWall is initialized if (vitalWall.isInitialized()) { // Ready to use } // Listen for initialization completion vitalWall.onReady(() => { console.log('VitalWall is ready!'); // Add items, etc. }); ``` ### Automatic Tracking (Legacy Compatibility) VitalWall also supports automatic tracking of user interactions using data attributes, maintaining compatibility with the script tag version: ```html <!-- Track clicks on this button --> <button data-vital-item="User clicked signup button">Sign Up</button> <!-- Auto-track when element appears (no click required) --> <div data-vital-item="Page loaded" data-vital-auto="true"></div> <!-- Track with HTML content --> <div data-vital-item="Rich content" data-vital-html="true"> <strong>User Action:</strong> Downloaded PDF </div> <!-- Send content from another element --> <div id="user-info">John Doe purchased Product X</div> <button data-vital-send-content="user-info">Track Purchase</button> ``` ### Configuration Options ```javascript await vitalWall.init({ apiKey: 'your-api-key', // Required: Your VitalWall API key wallId: 'default-wall-id', // Optional: Default wall ID for addItem methods debug: true, // Optional: Enable debug logging domain: 'example.com' // Optional: Only for Node.js environments (auto-detected in browsers) }); ``` **Security Note**: The `domain` parameter is automatically detected from `window.location.hostname` in browser environments for security purposes. It should only be manually specified when using VitalWall in Node.js server environments. ### Cleanup ```javascript // Clean up all walls and event listeners vitalWall.cleanup(); ``` ## Examples ### E-commerce Site ```javascript import VitalWall from '@vitalwall/client'; const vitalWall = new VitalWall(); await vitalWall.init({ apiKey: 'your-api-key', wallId: 'sales-wall' }); // Track purchases document.getElementById('purchase-btn').addEventListener('click', async () => { const product = getCurrentProduct(); await vitalWall.addHtmlItem(` <div class="purchase-notification"> <strong>${product.name}</strong> purchased by ${user.name} <span class="price">$${product.price}</span> </div> `); }); ``` ### Real-time Dashboard ```javascript import VitalWall from '@vitalwall/client'; const vitalWall = new VitalWall(); await vitalWall.init({ apiKey: 'your-api-key' }); // Multiple walls for different metrics const salesWall = 'sales-wall-id'; const signupsWall = 'signups-wall-id'; // Track different events to different walls await vitalWall.addTextItem('New sale: $299', salesWall); await vitalWall.addTextItem('New user registered', signupsWall); ``` ## More Examples For additional comprehensive examples including e-commerce integration, real-time dashboards, and lifecycle management, see the [examples.ts](./examples.ts) file in this package. ### Node.js Server Example For server-side usage with Express.js middleware, batch operations, and programmatic item tracking, see the complete Node.js example at [examples/nodejs-server.mjs](./examples/nodejs-server.mjs). The Node.js example demonstrates: - Server-side VitalWall initialization with domain validation - Express.js middleware integration - Batch event processing - E-commerce order tracking - User registration notifications - System alert monitoring ## API Reference For complete API documentation with detailed method signatures, error handling, and type definitions, see [API.md](./API.md). ### VitalWall Class #### Methods - `init(config: VitalWallConfig): Promise<void>` - Initialize VitalWall - `addItem(item: WallItem): Promise<string | undefined>` - Add a custom item - `addTextItem(content: string, wallId?: string): Promise<string | undefined>` - Add text item - `addHtmlItem(content: string, wallId?: string): Promise<string | undefined>` - Add HTML item - `setCurrentWall(wallId: string): void` - Set default wall ID - `getCurrentWall(): string | null` - Get current wall ID - `isInitialized(): boolean` - Check initialization status - `onReady(callback: () => void): void` - Add ready callback - `cleanup(): void` - Clean up resources ### Types ```typescript interface VitalWallConfig { apiKey: string; debug?: boolean; wallId?: string; domain?: string; // For Node.js environments only } interface WallItem { content: string; isHtml?: boolean; wallId?: string; } ``` ## Browser Support - Chrome/Edge 60+ - Firefox 55+ - Safari 10.1+ - IE 11+ (with polyfills) ## License MIT