Transform Data Into Insights

Advanced analytics platform with real-time dashboards and AI-powered insights

📈

Real-Time Analytics

Live dashboards with instant data visualization

🤖

AI Insights

Machine learning powered trend detection

🔄

Data Integration

Connect 100+ data sources seamlessly

More SnapIT Tools

`; // Show modal with tracking code showTrackingCodeModal(trackingId, installCode); } function showTrackingCodeModal(trackingId, installCode) { const modal = document.createElement('div'); modal.className = 'fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50'; modal.innerHTML = `

Your Analytics Tracking Code

`; document.body.appendChild(modal); } function copyToClipboard(elementId) { const element = document.getElementById(elementId); element.select(); element.setSelectionRange(0, 99999); document.execCommand('copy'); // Show feedback const button = element.nextElementSibling || element.parentElement.querySelector('button'); const originalText = button.textContent; button.textContent = 'Copied!'; setTimeout(() => { button.textContent = originalText; }, 2000); } function showNotification(message, type = 'info') { const notification = document.createElement('div'); const bgColor = type === 'success' ? 'bg-green-500' : type === 'warning' ? 'bg-yellow-500' : 'bg-blue-500'; notification.className = `fixed top-4 right-4 ${bgColor} text-white px-6 py-3 rounded-lg shadow-lg z-50 transform translate-x-full transition-transform duration-300`; notification.textContent = message; document.body.appendChild(notification); // Slide in setTimeout(() => { notification.classList.remove('translate-x-full'); }, 100); // Slide out and remove setTimeout(() => { notification.classList.add('translate-x-full'); setTimeout(() => { document.body.removeChild(notification); }, 300); }, 4000); } function showPrivacyModal() { const modal = document.createElement('div'); modal.className = 'fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50'; modal.innerHTML = `

Privacy Policy

Your privacy is important to us. This privacy policy explains how SnapIT Analytics collects, uses, and protects your information.

Information We Collect

We collect information you provide directly, usage data from your websites, and standard web analytics data.

How We Use Your Information

We use your information to provide analytics services, improve our platform, and communicate with you about your account.

Data Security

We implement industry-standard security measures to protect your data and maintain its confidentiality.

Last updated: August 15, 2025

`; document.body.appendChild(modal); } function showTermsModal() { const modal = document.createElement('div'); modal.className = 'fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50'; modal.innerHTML = `

Terms of Service

By using SnapIT Analytics, you agree to these terms of service.

Service Description

SnapIT Analytics provides web analytics and business intelligence services through our platform.

User Responsibilities

You are responsible for maintaining the confidentiality of your account and for all activities under your account.

Service Availability

We strive to maintain 99.9% uptime but cannot guarantee uninterrupted service availability.

Limitation of Liability

Our liability is limited to the amount paid for our services in the preceding 12 months.

Last updated: August 15, 2025

`; document.body.appendChild(modal); } function viewDemo() { // Hide landing content and show demo document.getElementById('landing-content').classList.add('hidden'); document.getElementById('demo-dashboard').classList.remove('hidden'); // Start real-time demo data startDemoMode(); } function closeDemoMode() { // Show landing content and hide demo document.getElementById('landing-content').classList.remove('hidden'); document.getElementById('demo-dashboard').classList.add('hidden'); // Stop demo updates stopDemoMode(); } let demoInterval = null; let activityInterval = null; function startDemoMode() { // Animate metrics animateMetrics(); // Start real-time activity simulation startRealtimeActivity(); // Update metrics periodically demoInterval = setInterval(() => { updateMetrics(); }, 5000); } function stopDemoMode() { if (demoInterval) { clearInterval(demoInterval); demoInterval = null; } if (activityInterval) { clearInterval(activityInterval); activityInterval = null; } } function animateMetrics() { // Animate visitor count animateNumber('visitors-count', 0, 12847, 2000); animateNumber('revenue-count', 0, 47293, 2500, '$'); animateNumber('pageviews-count', 0, 89432, 2200); } function animateNumber(elementId, start, end, duration, prefix = '') { const element = document.getElementById(elementId); if (!element) return; const startTime = performance.now(); function update(currentTime) { const elapsed = currentTime - startTime; const progress = Math.min(elapsed / duration, 1); const current = Math.floor(start + (end - start) * progress); element.textContent = prefix + current.toLocaleString(); if (progress < 1) { requestAnimationFrame(update); } } requestAnimationFrame(update); } function updateMetrics() { // Simulate small changes in metrics const visitorsEl = document.getElementById('visitors-count'); const revenueEl = document.getElementById('revenue-count'); const pageviewsEl = document.getElementById('pageviews-count'); if (visitorsEl) { const currentVisitors = parseInt(visitorsEl.textContent.replace(/,/g, '')); const newVisitors = currentVisitors + Math.floor(Math.random() * 50 + 10); visitorsEl.textContent = newVisitors.toLocaleString(); } if (pageviewsEl) { const currentViews = parseInt(pageviewsEl.textContent.replace(/,/g, '')); const newViews = currentViews + Math.floor(Math.random() * 200 + 50); pageviewsEl.textContent = newViews.toLocaleString(); } } function startRealtimeActivity() { const activityContainer = document.getElementById('realtime-activity'); if (!activityContainer) return; const activities = [ { icon: '👥', text: 'New user from San Francisco viewed Product A', color: 'text-blue-600' }, { icon: '🛏️', text: 'Order #1847 completed - $129.99', color: 'text-green-600' }, { icon: '📄', text: 'Contact form submitted from Germany', color: 'text-purple-600' }, { icon: '👥', text: 'User subscribed to newsletter from Tokyo', color: 'text-blue-600' }, { icon: '📊', text: 'Page view spike detected on /pricing', color: 'text-yellow-600' }, { icon: '🛏️', text: 'Order #1848 completed - $89.50', color: 'text-green-600' }, { icon: '👥', text: 'New user from London viewed Blog Post #23', color: 'text-blue-600' }, { icon: '📉', text: 'Conversion rate increased to 3.28%', color: 'text-green-600' } ]; function addActivity() { const activity = activities[Math.floor(Math.random() * activities.length)]; const activityEl = document.createElement('div'); activityEl.className = 'flex items-center space-x-3 p-2 bg-gray-50 rounded-lg opacity-0 transition-opacity duration-500'; activityEl.innerHTML = ` ${activity.icon} ${activity.text} ${new Date().toLocaleTimeString()} `; // Add to top of container activityContainer.insertBefore(activityEl, activityContainer.firstChild); // Fade in setTimeout(() => activityEl.classList.remove('opacity-0'), 100); // Keep only latest 5 activities while (activityContainer.children.length > 5) { activityContainer.removeChild(activityContainer.lastChild); } } // Add initial activities for (let i = 0; i < 3; i++) { setTimeout(() => addActivity(), i * 500); } // Continue adding activities activityInterval = setInterval(addActivity, 3000 + Math.random() * 2000); } // Initialize window.addEventListener('load', () => { const storedUser = localStorage.getItem('snapit_user'); if (storedUser) { try { currentUser = JSON.parse(storedUser); updateAuthUI(); } catch (error) { localStorage.removeItem('snapit_user'); } } });