7 more landing pages: acuity-scheduling, bamboohr, brevo, linear, mailchimp, sendgrid, wave (60 total)
This commit is contained in:
parent
3c7de8a7d8
commit
22131a8fd2
878
acuity-scheduling/index.html
Normal file
878
acuity-scheduling/index.html
Normal file
@ -0,0 +1,878 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" class="scroll-smooth">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>MCPEngage for Acuity Scheduling — AI-Power Your Acuity in 2 Clicks</title>
|
||||
<meta name="description" content="Connect Acuity Scheduling to any AI model with MCPEngage. Manage appointments, calendars, and clients through natural conversation.">
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap" rel="stylesheet">
|
||||
<script src="https://unpkg.com/lucide@latest/dist/umd/lucide.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/ScrollTrigger.min.js"></script>
|
||||
<script>
|
||||
tailwind.config = {
|
||||
theme: {
|
||||
extend: {
|
||||
fontFamily: { sans: ['Inter', 'system-ui', 'sans-serif'] },
|
||||
colors: {
|
||||
brand: { 400: '#4dd8c9', 500: '#17c3b2', 600: '#0fa898' },
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
.gradient-text {
|
||||
background: linear-gradient(135deg, #17c3b2 0%, #0fa898 25%, #06b6d4 50%, #8b5cf6 75%, #17c3b2 100%);
|
||||
background-size: 200% 200%;
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
animation: gradient-shift 6s ease infinite;
|
||||
}
|
||||
@keyframes gradient-shift { 0%,100%{background-position:0% 50%} 50%{background-position:100% 50%} }
|
||||
.mesh-gradient {
|
||||
background:
|
||||
radial-gradient(at 40% 20%, rgba(23,195,178,0.15) 0px, transparent 50%),
|
||||
radial-gradient(at 80% 0%, rgba(6,182,212,0.12) 0px, transparent 50%),
|
||||
radial-gradient(at 0% 50%, rgba(139,92,246,0.1) 0px, transparent 50%),
|
||||
radial-gradient(at 80% 50%, rgba(23,195,178,0.08) 0px, transparent 50%),
|
||||
radial-gradient(at 0% 100%, rgba(23,195,178,0.12) 0px, transparent 50%);
|
||||
}
|
||||
.glass { background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.1); }
|
||||
@supports (backdrop-filter: blur(20px)) { .glass { background: rgba(255,255,255,0.03); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border: 1px solid rgba(255,255,255,0.08); } }
|
||||
.glass-strong { background: rgba(255,255,255,0.08); border: 1px solid rgba(255,255,255,0.12); }
|
||||
@supports (backdrop-filter: blur(40px)) { .glass-strong { background: rgba(255,255,255,0.05); backdrop-filter: blur(40px); -webkit-backdrop-filter: blur(40px); border: 1px solid rgba(255,255,255,0.1); } }
|
||||
.glow { box-shadow: 0 0 60px rgba(23,195,178,0.2), 0 0 100px rgba(23,195,178,0.1); }
|
||||
.glow-hover:hover { box-shadow: 0 0 80px rgba(23,195,178,0.3), 0 0 120px rgba(23,195,178,0.15); }
|
||||
.float { animation: float 6s ease-in-out infinite; }
|
||||
.float-delayed { animation: float 6s ease-in-out infinite; animation-delay: -3s; }
|
||||
@keyframes float { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-20px)} }
|
||||
.gradient-border { position: relative; }
|
||||
.gradient-border::before {
|
||||
content:''; position:absolute; inset:0; padding:2px;
|
||||
background: linear-gradient(135deg, #17c3b2, #0fa898, #06b6d4, #8b5cf6, #17c3b2);
|
||||
background-size: 300% 300%; animation: gradient-shift 4s linear infinite;
|
||||
border-radius: inherit;
|
||||
-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
||||
mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
||||
-webkit-mask-composite: xor; mask-composite: exclude;
|
||||
}
|
||||
.feature-card { transition: all 0.4s cubic-bezier(0.25,0.46,0.45,0.94); }
|
||||
.feature-card:hover { transform: translateY(-8px); box-shadow: 0 25px 50px -12px rgba(23,195,178,0.15); border-color: rgba(23,195,178,0.3); }
|
||||
.feature-card:hover .feature-icon { transform: scale(1.1) rotate(5deg); }
|
||||
.feature-icon { transition: transform 0.4s cubic-bezier(0.25,0.46,0.45,0.94); }
|
||||
.shimmer { background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.05) 50%, transparent 100%); background-size: 200% 100%; animation: shimmer 2s infinite; }
|
||||
@keyframes shimmer { 0%{background-position:-200% 0} 100%{background-position:200% 0} }
|
||||
.btn-shine { position:relative; overflow:hidden; }
|
||||
.btn-shine::after { content:''; position:absolute; top:-50%; left:-50%; width:200%; height:200%; background: linear-gradient(to right, transparent 0%, rgba(255,255,255,0.2) 50%, transparent 100%); transform: rotate(45deg) translateX(-100%); transition: transform 0.6s; }
|
||||
.btn-shine:hover::after { transform: rotate(45deg) translateX(100%); }
|
||||
.scroll-indicator { animation: scroll-bounce 2s ease-in-out infinite; }
|
||||
@keyframes scroll-bounce { 0%,100%{transform:translateY(0);opacity:1} 50%{transform:translateY(10px);opacity:0.5} }
|
||||
.noise::before { content:''; position:fixed; inset:0; pointer-events:none; z-index:9998; opacity:0.02; background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E"); }
|
||||
.reveal-up, .reveal-scale, .stagger-item { opacity:1; transform:none; }
|
||||
.js-loaded .reveal-up { opacity:0; transform:translateY(60px); }
|
||||
.js-loaded .reveal-scale { opacity:0; transform:scale(0.95); }
|
||||
.js-loaded .stagger-item { opacity:0; transform:translateY(40px); }
|
||||
.counter { font-variant-numeric: tabular-nums; }
|
||||
.stat-card { transition: transform 0.3s ease; }
|
||||
.stat-card:hover { transform: translateY(-5px); }
|
||||
@media (min-width:1024px) { .magnetic-btn { transition: transform 0.3s cubic-bezier(0.25,0.46,0.45,0.94); } }
|
||||
.terminal-cursor { display:inline-block; width:8px; height:18px; background:#17c3b2; animation:blink 1s step-end infinite; vertical-align:middle; margin-left:2px; }
|
||||
@keyframes blink { 0%,100%{opacity:1} 50%{opacity:0} }
|
||||
.faq-answer { max-height:0; overflow:hidden; transition: max-height 0.4s cubic-bezier(0.25,0.46,0.45,0.94), padding 0.4s ease; padding-top:0; padding-bottom:0; }
|
||||
.faq-item.open .faq-answer { max-height:300px; padding-top:1rem; padding-bottom:0.25rem; }
|
||||
.faq-item.open .faq-chevron { transform: rotate(180deg); }
|
||||
.faq-chevron { transition: transform 0.3s ease; }
|
||||
</style>
|
||||
</head>
|
||||
<body class="bg-[#030303] text-white font-sans antialiased overflow-x-hidden noise">
|
||||
|
||||
<!-- NAVBAR -->
|
||||
<nav class="fixed top-0 left-0 right-0 z-50 transition-all duration-500" id="navbar">
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 py-4 lg:py-5 flex items-center justify-between">
|
||||
<a href="/" class="flex items-center gap-2 sm:gap-3 group">
|
||||
<div class="w-9 h-9 sm:w-10 sm:h-10 rounded-xl bg-gradient-to-br from-brand-500 via-teal-400 to-cyan-400 flex items-center justify-center transform group-hover:rotate-12 transition-transform duration-300">
|
||||
<span class="font-black text-xs sm:text-sm text-black">ME</span>
|
||||
</div>
|
||||
<span class="font-black text-xl sm:text-2xl tracking-tight">MCPEngage</span>
|
||||
</a>
|
||||
<div class="hidden md:flex items-center gap-8 lg:gap-10 text-sm font-medium text-zinc-400">
|
||||
<a href="#features" class="hover:text-white transition-colors relative group">Features<span class="absolute -bottom-1 left-0 w-0 h-0.5 bg-brand-500 group-hover:w-full transition-all duration-300"></span></a>
|
||||
<a href="#how-it-works" class="hover:text-white transition-colors relative group">How It Works<span class="absolute -bottom-1 left-0 w-0 h-0.5 bg-brand-500 group-hover:w-full transition-all duration-300"></span></a>
|
||||
<a href="#faq" class="hover:text-white transition-colors relative group">FAQ<span class="absolute -bottom-1 left-0 w-0 h-0.5 bg-brand-500 group-hover:w-full transition-all duration-300"></span></a>
|
||||
</div>
|
||||
<a href="#cta" class="magnetic-btn px-4 sm:px-5 py-2 sm:py-2.5 bg-white text-black font-bold rounded-full text-sm transition-all hover:bg-brand-400 hover:scale-105 active:scale-95 btn-shine">Join Waitlist</a>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- HERO -->
|
||||
<section class="min-h-screen pt-24 sm:pt-28 lg:pt-32 pb-12 sm:pb-16 lg:pb-20 px-4 sm:px-6 relative overflow-hidden">
|
||||
<div class="absolute inset-0 mesh-gradient opacity-60"></div>
|
||||
<div class="hidden lg:block absolute top-1/4 left-1/4 w-64 h-64 rounded-full bg-brand-500/20 blur-[100px] float"></div>
|
||||
<div class="hidden lg:block absolute bottom-1/4 right-1/4 w-96 h-96 rounded-full bg-cyan-500/15 blur-[120px] float-delayed"></div>
|
||||
<div class="hidden lg:block absolute top-1/2 right-1/3 w-48 h-48 rounded-full bg-violet-500/15 blur-[80px] float"></div>
|
||||
<div class="absolute inset-0 opacity-[0.03]" style="background-image: linear-gradient(rgba(255,255,255,0.1) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,0.1) 1px, transparent 1px); background-size: 60px 60px;"></div>
|
||||
|
||||
<div class="max-w-7xl mx-auto relative z-10">
|
||||
<div class="flex justify-center mb-6 sm:mb-8 reveal-up">
|
||||
<div class="inline-flex items-center gap-2 sm:gap-3 px-4 sm:px-5 py-2 sm:py-2.5 rounded-full glass-strong text-xs sm:text-sm font-medium text-zinc-300 shimmer">
|
||||
<span class="relative flex h-2 w-2 sm:h-2.5 sm:w-2.5">
|
||||
<span class="animate-ping absolute inline-flex h-full w-full rounded-full bg-brand-400 opacity-75"></span>
|
||||
<span class="relative inline-flex rounded-full h-2 w-2 sm:h-2.5 sm:w-2.5 bg-brand-500"></span>
|
||||
</span>
|
||||
Now Available — Connect Acuity + AI
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="text-center mb-6 sm:mb-8">
|
||||
<h1 class="text-4xl sm:text-5xl md:text-6xl lg:text-7xl xl:text-8xl font-black tracking-tight mb-4 sm:mb-6 leading-[1.1]">
|
||||
<span class="block">AI-Power Your</span>
|
||||
<span class="block gradient-text">Acuity Scheduling</span>
|
||||
<span class="block">in 2 Clicks</span>
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
<p class="text-base sm:text-lg md:text-xl lg:text-2xl text-zinc-400 max-w-3xl mx-auto mb-8 sm:mb-10 lg:mb-12 text-center leading-relaxed reveal-up px-2">
|
||||
MCPEngage connects Acuity to any AI model via MCP.<br class="hidden sm:block"><span class="text-white font-semibold">Manage appointments, track availability, and serve clients — all through conversation.</span>
|
||||
</p>
|
||||
|
||||
<div class="flex flex-col sm:flex-row gap-3 sm:gap-4 lg:gap-5 justify-center mb-10 sm:mb-12 lg:mb-16 reveal-up">
|
||||
<a href="#cta" class="magnetic-btn group px-6 sm:px-8 lg:px-10 py-3.5 sm:py-4 lg:py-5 bg-brand-500 hover:bg-brand-400 text-black font-bold rounded-xl lg:rounded-2xl text-base lg:text-lg transition-all hover:scale-105 active:scale-95 glow btn-shine flex items-center justify-center gap-2 sm:gap-3">
|
||||
<span>Join Waitlist</span>
|
||||
<i data-lucide="arrow-right" class="w-4 h-4 sm:w-5 sm:h-5 group-hover:translate-x-1 transition-transform"></i>
|
||||
</a>
|
||||
<a href="https://github.com/BusyBee3333/mcpengine/tree/main/servers/acuity-scheduling" target="_blank" rel="noopener" class="magnetic-btn group px-6 sm:px-8 lg:px-10 py-3.5 sm:py-4 lg:py-5 glass-strong hover:bg-white/10 font-bold rounded-xl lg:rounded-2xl text-base lg:text-lg transition-all flex items-center justify-center gap-2 sm:gap-3">
|
||||
<div class="w-8 h-8 sm:w-10 sm:h-10 rounded-full bg-white/10 flex items-center justify-center group-hover:bg-white/20 transition-colors">
|
||||
<i data-lucide="github" class="w-4 h-4 sm:w-5 sm:h-5"></i>
|
||||
</div>
|
||||
<span>View on GitHub</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<!-- Product Mockup -->
|
||||
<div class="relative max-w-6xl mx-auto reveal-scale">
|
||||
<div class="absolute inset-0 bg-gradient-to-r from-brand-500/20 via-cyan-500/20 to-violet-500/20 blur-[60px] rounded-3xl transform scale-95"></div>
|
||||
<div class="gradient-border rounded-2xl lg:rounded-3xl glow relative">
|
||||
<div class="bg-[#0a0a0a] rounded-2xl lg:rounded-3xl p-1 sm:p-1.5">
|
||||
<div class="bg-zinc-900/80 rounded-xl lg:rounded-2xl overflow-hidden">
|
||||
<div class="flex items-center justify-between px-3 sm:px-5 py-2.5 sm:py-4 border-b border-white/5">
|
||||
<div class="flex items-center gap-1.5 sm:gap-2">
|
||||
<div class="w-2.5 h-2.5 sm:w-3.5 sm:h-3.5 rounded-full bg-red-500"></div>
|
||||
<div class="w-2.5 h-2.5 sm:w-3.5 sm:h-3.5 rounded-full bg-yellow-500"></div>
|
||||
<div class="w-2.5 h-2.5 sm:w-3.5 sm:h-3.5 rounded-full bg-green-500"></div>
|
||||
</div>
|
||||
<div class="hidden sm:flex items-center gap-2 px-3 sm:px-4 py-1 sm:py-1.5 rounded-lg bg-white/5 text-xs sm:text-sm text-zinc-500 font-mono">
|
||||
<i data-lucide="lock" class="w-3 h-3"></i>
|
||||
app.mcpengage.com/acuity-scheduling
|
||||
</div>
|
||||
<div class="w-16 sm:w-20"></div>
|
||||
</div>
|
||||
|
||||
<div class="flex h-[320px] sm:h-[420px] md:h-[500px] lg:h-[600px]">
|
||||
<!-- Sidebar -->
|
||||
<div class="hidden md:flex w-14 lg:w-16 border-r border-white/5 flex-col items-center py-3 lg:py-4 gap-3 lg:gap-4">
|
||||
|
||||
<div class="w-9 h-9 lg:w-10 lg:h-10 rounded-xl bg-brand-500/20 flex items-center justify-center text-brand-400 transition-colors">
|
||||
<i data-lucide="message-square" class="w-4 h-4 lg:w-5 lg:h-5"></i>
|
||||
</div>
|
||||
<div class="w-9 h-9 lg:w-10 lg:h-10 rounded-xl hover:bg-white/5 flex items-center justify-center text-zinc-600 transition-colors">
|
||||
<i data-lucide="calendar" class="w-4 h-4 lg:w-5 lg:h-5"></i>
|
||||
</div>
|
||||
<div class="w-9 h-9 lg:w-10 lg:h-10 rounded-xl hover:bg-white/5 flex items-center justify-center text-zinc-600 transition-colors">
|
||||
<i data-lucide="users" class="w-4 h-4 lg:w-5 lg:h-5"></i>
|
||||
</div>
|
||||
<div class="w-9 h-9 lg:w-10 lg:h-10 rounded-xl hover:bg-white/5 flex items-center justify-center text-zinc-600 transition-colors">
|
||||
<i data-lucide="clock" class="w-4 h-4 lg:w-5 lg:h-5"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Chat panel -->
|
||||
<div class="flex-1 flex flex-col">
|
||||
<div class="flex-1 p-3 sm:p-4 lg:p-6 space-y-3 sm:space-y-4 lg:space-y-5 overflow-y-auto overflow-x-hidden" id="chat-demo" style="scrollbar-width:none;-ms-overflow-style:none;"></div>
|
||||
<div class="p-2 sm:p-3 lg:p-4 border-t border-white/5">
|
||||
<div class="glass-strong rounded-xl lg:rounded-2xl px-3 sm:px-4 lg:px-5 py-2.5 sm:py-3 lg:py-4 flex items-center gap-2 sm:gap-3 lg:gap-4">
|
||||
<input type="text" placeholder="Ask about today's appointments..." class="flex-1 bg-transparent text-xs sm:text-sm outline-none text-zinc-300 placeholder:text-zinc-600 min-w-0">
|
||||
<button class="w-8 h-8 sm:w-9 sm:h-9 lg:w-10 lg:h-10 rounded-lg lg:rounded-xl bg-brand-500 flex items-center justify-center hover:bg-brand-400 transition-colors flex-shrink-0">
|
||||
<i data-lucide="arrow-up" class="w-4 h-4 lg:w-5 lg:h-5 text-black"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Right panel -->
|
||||
<div class="hidden lg:flex w-80 xl:w-96 flex-col border-l border-white/5">
|
||||
<div class="flex border-b border-white/5">
|
||||
<button class="flex-1 px-4 xl:px-5 py-3 xl:py-4 text-sm font-semibold text-brand-400 border-b-2 border-brand-500 flex items-center justify-center gap-2">
|
||||
<i data-lucide="calendar" class="w-4 h-4"></i>
|
||||
Appointments
|
||||
<span class="px-2 py-0.5 rounded-full bg-brand-500/20 text-xs">14</span>
|
||||
</button>
|
||||
<button class="flex-1 px-4 xl:px-5 py-3 xl:py-4 text-sm font-medium text-zinc-500 hover:text-zinc-300 flex items-center justify-center gap-2">
|
||||
<i data-lucide="users" class="w-4 h-4"></i>
|
||||
Clients
|
||||
</button>
|
||||
</div>
|
||||
<div class="flex-1 p-3 xl:p-4 space-y-2.5 xl:space-y-3 overflow-auto">
|
||||
|
||||
<div class="glass rounded-xl xl:rounded-2xl p-4 xl:p-5 hover:bg-white/5 transition-all cursor-pointer group border border-transparent hover:border-brand-500/30">
|
||||
<div class="flex items-start justify-between mb-2 xl:mb-3">
|
||||
<div>
|
||||
<h4 class="font-bold text-sm xl:text-base group-hover:text-brand-400 transition-colors">Sarah Johnson — Consultation</h4>
|
||||
<p class="text-[10px] xl:text-xs text-zinc-500">Today 2:00 PM • 60 min</p>
|
||||
</div>
|
||||
<span class="px-2 py-0.5 rounded-md bg-green-500/20 text-green-400 text-[10px] xl:text-xs font-bold">Confirmed</span>
|
||||
</div>
|
||||
<div class="flex gap-1.5 xl:gap-2">
|
||||
<span class="px-2 xl:px-2.5 py-0.5 xl:py-1 rounded-md xl:rounded-lg bg-brand-500/15 text-brand-400 text-[10px] xl:text-xs font-medium">In 2 hrs</span>
|
||||
<span class="px-2 xl:px-2.5 py-0.5 xl:py-1 rounded-md xl:rounded-lg bg-zinc-800 text-zinc-400 text-[10px] xl:text-xs font-medium">New client</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="glass rounded-xl xl:rounded-2xl p-4 xl:p-5 hover:bg-white/5 transition-all cursor-pointer group border border-transparent hover:border-brand-500/30">
|
||||
<div class="flex items-start justify-between mb-2 xl:mb-3">
|
||||
<div>
|
||||
<h4 class="font-bold text-sm xl:text-base group-hover:text-brand-400 transition-colors">Mike Chen — Follow-up</h4>
|
||||
<p class="text-[10px] xl:text-xs text-zinc-500">Today 4:30 PM • 30 min</p>
|
||||
</div>
|
||||
<span class="px-2 py-0.5 rounded-md bg-blue-500/20 text-blue-400 text-[10px] xl:text-xs font-bold">Confirmed</span>
|
||||
</div>
|
||||
<div class="flex gap-1.5 xl:gap-2">
|
||||
<span class="px-2 xl:px-2.5 py-0.5 xl:py-1 rounded-md xl:rounded-lg bg-brand-500/15 text-brand-400 text-[10px] xl:text-xs font-medium">In 4.5 hrs</span>
|
||||
<span class="px-2 xl:px-2.5 py-0.5 xl:py-1 rounded-md xl:rounded-lg bg-zinc-800 text-zinc-400 text-[10px] xl:text-xs font-medium">Returning</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="glass rounded-xl xl:rounded-2xl p-4 xl:p-5 hover:bg-white/5 transition-all cursor-pointer group border border-transparent hover:border-brand-500/30">
|
||||
<div class="flex items-start justify-between mb-2 xl:mb-3">
|
||||
<div>
|
||||
<h4 class="font-bold text-sm xl:text-base group-hover:text-brand-400 transition-colors">Lisa Park — Strategy Session</h4>
|
||||
<p class="text-[10px] xl:text-xs text-zinc-500">Tomorrow 10:00 AM • 90 min</p>
|
||||
</div>
|
||||
<span class="px-2 py-0.5 rounded-md bg-yellow-500/20 text-yellow-400 text-[10px] xl:text-xs font-bold">Pending</span>
|
||||
</div>
|
||||
<div class="flex gap-1.5 xl:gap-2">
|
||||
<span class="px-2 xl:px-2.5 py-0.5 xl:py-1 rounded-md xl:rounded-lg bg-brand-500/15 text-brand-400 text-[10px] xl:text-xs font-medium">Awaiting confirm</span>
|
||||
<span class="px-2 xl:px-2.5 py-0.5 xl:py-1 rounded-md xl:rounded-lg bg-zinc-800 text-zinc-400 text-[10px] xl:text-xs font-medium">VIP</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="hidden sm:flex justify-center mt-10 lg:mt-16">
|
||||
<div class="scroll-indicator flex flex-col items-center gap-2 text-zinc-600">
|
||||
<span class="text-xs font-medium tracking-wider uppercase">Scroll to explore</span>
|
||||
<i data-lucide="chevron-down" class="w-5 h-5"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- STATS BAR -->
|
||||
<section class="py-8 sm:py-10 lg:py-12 px-4 sm:px-6 border-y border-white/5 relative overflow-hidden">
|
||||
<div class="absolute inset-0 bg-gradient-to-r from-brand-500/5 via-transparent to-cyan-500/5"></div>
|
||||
<div class="max-w-7xl mx-auto relative">
|
||||
<div class="grid grid-cols-2 lg:grid-cols-4 gap-6 sm:gap-8">
|
||||
|
||||
<div class="stat-card text-center">
|
||||
<div class="text-2xl sm:text-3xl lg:text-4xl xl:text-5xl font-black text-brand-400 mb-1 sm:mb-2"><span class="counter" data-target="49">0</span>+</div>
|
||||
<div class="text-xs sm:text-sm text-zinc-500 font-medium">Acuity Tools</div>
|
||||
</div>
|
||||
<div class="stat-card text-center">
|
||||
<div class="text-2xl sm:text-3xl lg:text-4xl xl:text-5xl font-black text-cyan-400 mb-1 sm:mb-2">$<span class="counter" data-target="0">0</span></div>
|
||||
<div class="text-xs sm:text-sm text-zinc-500 font-medium">Setup Cost</div>
|
||||
</div>
|
||||
<div class="stat-card text-center">
|
||||
<div class="text-2xl sm:text-3xl lg:text-4xl xl:text-5xl font-black text-violet-400 mb-1 sm:mb-2"><span class="counter" data-target="2">0</span>min</div>
|
||||
<div class="text-xs sm:text-sm text-zinc-500 font-medium">Install Time</div>
|
||||
</div>
|
||||
<div class="stat-card text-center">
|
||||
<div class="text-2xl sm:text-3xl lg:text-4xl xl:text-5xl font-black text-emerald-400 mb-1 sm:mb-2">24/7</div>
|
||||
<div class="text-xs sm:text-sm text-zinc-500 font-medium">AI Scheduler</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- TERMINAL / INSTALL -->
|
||||
<section class="py-16 sm:py-20 lg:py-32 px-4 sm:px-6 relative">
|
||||
<div class="max-w-4xl mx-auto">
|
||||
<div class="text-center mb-10 sm:mb-14 reveal-up">
|
||||
<div class="inline-flex items-center gap-2 px-3 sm:px-4 py-1.5 sm:py-2 rounded-full glass text-xs sm:text-sm text-brand-400 mb-4 sm:mb-6">
|
||||
<i data-lucide="terminal" class="w-3.5 h-3.5 sm:w-4 sm:h-4"></i>
|
||||
Quick Install
|
||||
</div>
|
||||
<h2 class="text-2xl sm:text-3xl md:text-4xl lg:text-5xl font-black mb-4 sm:mb-6 leading-tight">
|
||||
Up and Running in<br><span class="gradient-text">One Command</span>
|
||||
</h2>
|
||||
</div>
|
||||
<div class="reveal-scale">
|
||||
<div class="gradient-border rounded-2xl lg:rounded-3xl glow relative">
|
||||
<div class="bg-[#0a0a0a] rounded-2xl lg:rounded-3xl overflow-hidden">
|
||||
<div class="flex items-center justify-between px-4 sm:px-5 py-3 sm:py-4 border-b border-white/5">
|
||||
<div class="flex items-center gap-1.5 sm:gap-2">
|
||||
<div class="w-2.5 h-2.5 sm:w-3 sm:h-3 rounded-full bg-red-500"></div>
|
||||
<div class="w-2.5 h-2.5 sm:w-3 sm:h-3 rounded-full bg-yellow-500"></div>
|
||||
<div class="w-2.5 h-2.5 sm:w-3 sm:h-3 rounded-full bg-green-500"></div>
|
||||
</div>
|
||||
<span class="text-xs text-zinc-600 font-mono">~/projects</span>
|
||||
<button id="copy-btn" onclick="navigator.clipboard.writeText('npx mcpengage init');this.textContent='Copied!';setTimeout(()=>this.textContent='Copy',2000)" class="px-3 py-1 rounded-lg bg-white/5 hover:bg-white/10 text-xs text-zinc-400 font-medium transition-colors">Copy</button>
|
||||
</div>
|
||||
<div class="p-5 sm:p-6 lg:p-8 font-mono text-sm sm:text-base leading-relaxed" id="terminal-body">
|
||||
<div id="terminal-lines" class="space-y-1"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-6 sm:mt-8 text-center reveal-up">
|
||||
<a href="https://github.com/BusyBee3333/mcpengine/tree/main/servers/acuity-scheduling" target="_blank" rel="noopener" class="inline-flex items-center gap-2 sm:gap-3 text-zinc-400 hover:text-white transition-colors group">
|
||||
<i data-lucide="github" class="w-5 h-5"></i>
|
||||
<span class="text-sm sm:text-base font-medium">Open source — view the full code on GitHub</span>
|
||||
<i data-lucide="external-link" class="w-3.5 h-3.5 group-hover:translate-x-0.5 group-hover:-translate-y-0.5 transition-transform"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- BEFORE & AFTER -->
|
||||
<section class="py-16 sm:py-20 lg:py-32 px-4 sm:px-6 relative overflow-hidden">
|
||||
<div class="absolute inset-0 mesh-gradient opacity-20"></div>
|
||||
<div class="max-w-6xl mx-auto relative">
|
||||
<div class="text-center mb-10 sm:mb-14 lg:mb-20">
|
||||
<div class="inline-flex items-center gap-2 px-3 sm:px-4 py-1.5 sm:py-2 rounded-full glass text-xs sm:text-sm text-brand-400 mb-4 sm:mb-6 reveal-up">
|
||||
<i data-lucide="arrow-left-right" class="w-3.5 h-3.5 sm:w-4 sm:h-4"></i>
|
||||
The Difference
|
||||
</div>
|
||||
<h2 class="text-2xl sm:text-3xl md:text-4xl lg:text-5xl xl:text-6xl font-black mb-4 sm:mb-6 reveal-up leading-tight">
|
||||
Before vs. <span class="gradient-text">After</span>
|
||||
</h2>
|
||||
</div>
|
||||
<div class="grid md:grid-cols-2 gap-4 sm:gap-6 lg:gap-8">
|
||||
<div class="glass rounded-2xl lg:rounded-3xl p-5 sm:p-6 lg:p-8 border border-red-500/20 feature-card stagger-item">
|
||||
<div class="flex items-center gap-3 mb-6">
|
||||
<div class="w-10 h-10 sm:w-12 sm:h-12 rounded-xl bg-red-500/10 flex items-center justify-center">
|
||||
<i data-lucide="x" class="w-5 h-5 sm:w-6 sm:h-6 text-red-400"></i>
|
||||
</div>
|
||||
<h3 class="text-lg sm:text-xl lg:text-2xl font-black text-red-400">Before MCPEngage</h3>
|
||||
</div>
|
||||
<ul class="space-y-4">
|
||||
|
||||
<li class="flex items-start gap-3"><div class="w-6 h-6 rounded-full bg-red-500/10 flex items-center justify-center flex-shrink-0 mt-0.5"><i data-lucide="clock" class="w-3.5 h-3.5 text-red-400"></i></div><div><p class="text-sm sm:text-base text-zinc-300 font-medium">Manual schedule checking</p><p class="text-xs sm:text-sm text-zinc-500">Looking at your calendar means logging into Acuity and clicking through day/week/month views</p></div></li>
|
||||
<li class="flex items-start gap-3"><div class="w-6 h-6 rounded-full bg-red-500/10 flex items-center justify-center flex-shrink-0 mt-0.5"><i data-lucide="copy" class="w-3.5 h-3.5 text-red-400"></i></div><div><p class="text-sm sm:text-base text-zinc-300 font-medium">No-show chaos</p><p class="text-xs sm:text-sm text-zinc-500">Clients ghost appointments, you lose revenue, and you only know after sitting there waiting</p></div></li>
|
||||
<li class="flex items-start gap-3"><div class="w-6 h-6 rounded-full bg-red-500/10 flex items-center justify-center flex-shrink-0 mt-0.5"><i data-lucide="layout-grid" class="w-3.5 h-3.5 text-red-400"></i></div><div><p class="text-sm sm:text-base text-zinc-300 font-medium">Client history buried</p><p class="text-xs sm:text-sm text-zinc-500">Past appointments, notes, and preferences scattered across client records</p></div></li>
|
||||
<li class="flex items-start gap-3"><div class="w-6 h-6 rounded-full bg-red-500/10 flex items-center justify-center flex-shrink-0 mt-0.5"><i data-lucide="hourglass" class="w-3.5 h-3.5 text-red-400"></i></div><div><p class="text-sm sm:text-base text-zinc-300 font-medium">Availability guesswork</p><p class="text-xs sm:text-sm text-zinc-500">Can't quickly see when you're free or when peak booking times are</p></div></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="glass rounded-2xl lg:rounded-3xl p-5 sm:p-6 lg:p-8 border border-brand-500/20 feature-card stagger-item">
|
||||
<div class="flex items-center gap-3 mb-6">
|
||||
<div class="w-10 h-10 sm:w-12 sm:h-12 rounded-xl bg-brand-500/10 flex items-center justify-center">
|
||||
<i data-lucide="check" class="w-5 h-5 sm:w-6 sm:h-6 text-brand-400"></i>
|
||||
</div>
|
||||
<h3 class="text-lg sm:text-xl lg:text-2xl font-black text-brand-400">After MCPEngage</h3>
|
||||
</div>
|
||||
<ul class="space-y-4">
|
||||
|
||||
<li class="flex items-start gap-3"><div class="w-6 h-6 rounded-full bg-brand-500/10 flex items-center justify-center flex-shrink-0 mt-0.5"><i data-lucide="zap" class="w-3.5 h-3.5 text-brand-400"></i></div><div><p class="text-sm sm:text-base text-zinc-300 font-medium">Voice schedule access</p><p class="text-xs sm:text-sm text-zinc-500">"What's on my calendar today?" — instant list without logging in</p></div></li>
|
||||
<li class="flex items-start gap-3"><div class="w-6 h-6 rounded-full bg-brand-500/10 flex items-center justify-center flex-shrink-0 mt-0.5"><i data-lucide="sparkles" class="w-3.5 h-3.5 text-brand-400"></i></div><div><p class="text-sm sm:text-base text-zinc-300 font-medium">Smart no-show alerts</p><p class="text-xs sm:text-sm text-zinc-500">AI flags at-risk appointments and auto-sends reminders to reduce no-shows</p></div></li>
|
||||
<li class="flex items-start gap-3"><div class="w-6 h-6 rounded-full bg-brand-500/10 flex items-center justify-center flex-shrink-0 mt-0.5"><i data-lucide="message-square" class="w-3.5 h-3.5 text-brand-400"></i></div><div><p class="text-sm sm:text-base text-zinc-300 font-medium">Unified client intel</p><p class="text-xs sm:text-sm text-zinc-500">Ask "Show me Sarah's appointment history" — full context in seconds</p></div></li>
|
||||
<li class="flex items-start gap-3"><div class="w-6 h-6 rounded-full bg-brand-500/10 flex items-center justify-center flex-shrink-0 mt-0.5"><i data-lucide="rocket" class="w-3.5 h-3.5 text-brand-400"></i></div><div><p class="text-sm sm:text-base text-zinc-300 font-medium">Real-time availability</p><p class="text-xs sm:text-sm text-zinc-500">"When's my next opening this week?" — AI scans calendar and responds instantly</p></div></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- PAIN POINTS -->
|
||||
<section class="py-16 sm:py-20 lg:py-32 px-4 sm:px-6 relative">
|
||||
<div class="max-w-6xl mx-auto">
|
||||
<div class="text-center mb-10 sm:mb-14 lg:mb-20">
|
||||
<div class="inline-flex items-center gap-2 px-3 sm:px-4 py-1.5 sm:py-2 rounded-full glass text-xs sm:text-sm text-red-400 mb-4 sm:mb-6 reveal-up">
|
||||
<i data-lucide="alert-triangle" class="w-3.5 h-3.5 sm:w-4 sm:h-4"></i>
|
||||
The Problem
|
||||
</div>
|
||||
<h2 class="text-2xl sm:text-3xl md:text-4xl lg:text-5xl xl:text-6xl font-black mb-4 sm:mb-6 lg:mb-8 reveal-up leading-tight">
|
||||
Your Calendar Is<br><span class="text-red-400">Losing You Money</span>
|
||||
</h2>
|
||||
<p class="text-base sm:text-lg lg:text-xl xl:text-2xl text-zinc-400 max-w-3xl mx-auto reveal-up">
|
||||
Acuity books your appointments, but no-shows, gaps, and admin work are eating your billable hours.
|
||||
</p>
|
||||
</div>
|
||||
<div class="grid sm:grid-cols-2 lg:grid-cols-3 gap-4 sm:gap-6 lg:gap-8">
|
||||
|
||||
<div class="glass rounded-2xl lg:rounded-3xl p-5 sm:p-6 lg:p-8 border border-red-500/10 hover:border-red-500/30 transition-all group feature-card stagger-item">
|
||||
<div class="w-12 h-12 sm:w-14 sm:h-14 lg:w-16 lg:h-16 rounded-xl lg:rounded-2xl bg-red-500/10 flex items-center justify-center mb-4 sm:mb-5 lg:mb-6 feature-icon">
|
||||
<i data-lucide="dollar-sign" class="w-6 h-6 sm:w-7 sm:h-7 lg:w-8 lg:h-8 text-red-400"></i>
|
||||
</div>
|
||||
<h3 class="font-bold text-lg sm:text-xl lg:text-2xl mb-2 sm:mb-3 lg:mb-4">No-Show Revenue Drain</h3>
|
||||
<p class="text-zinc-400 text-sm sm:text-base lg:text-lg leading-relaxed">10-20% of appointments no-show or cancel last-minute. That's thousands in lost revenue because your reminder game is weak and you're not rebooking fast enough.</p>
|
||||
</div>
|
||||
<div class="glass rounded-2xl lg:rounded-3xl p-5 sm:p-6 lg:p-8 border border-red-500/10 hover:border-red-500/30 transition-all group feature-card stagger-item">
|
||||
<div class="w-12 h-12 sm:w-14 sm:h-14 lg:w-16 lg:h-16 rounded-xl lg:rounded-2xl bg-red-500/10 flex items-center justify-center mb-4 sm:mb-5 lg:mb-6 feature-icon">
|
||||
<i data-lucide="clock" class="w-6 h-6 sm:w-7 sm:h-7 lg:w-8 lg:h-8 text-red-400"></i>
|
||||
</div>
|
||||
<h3 class="font-bold text-lg sm:text-xl lg:text-2xl mb-2 sm:mb-3 lg:mb-4">Schedule Gap Waste</h3>
|
||||
<p class="text-zinc-400 text-sm sm:text-base lg:text-lg leading-relaxed">You have 30-minute gaps between appointments that could be filled but aren't. Your utilization is 60% when it should be 85%, and you're leaving money on the table daily.</p>
|
||||
</div>
|
||||
<div class="glass rounded-2xl lg:rounded-3xl p-5 sm:p-6 lg:p-8 border border-red-500/10 hover:border-red-500/30 transition-all group feature-card sm:col-span-2 lg:col-span-1 stagger-item">
|
||||
<div class="w-12 h-12 sm:w-14 sm:h-14 lg:w-16 lg:h-16 rounded-xl lg:rounded-2xl bg-red-500/10 flex items-center justify-center mb-4 sm:mb-5 lg:mb-6 feature-icon">
|
||||
<i data-lucide="alert-circle" class="w-6 h-6 sm:w-7 sm:h-7 lg:w-8 lg:h-8 text-red-400"></i>
|
||||
</div>
|
||||
<h3 class="font-bold text-lg sm:text-xl lg:text-2xl mb-2 sm:mb-3 lg:mb-4">Client Context Loss</h3>
|
||||
<p class="text-zinc-400 text-sm sm:text-base lg:text-lg leading-relaxed">You walk into appointments cold because digging through Acuity notes takes too long. Clients feel like strangers, repeat the same info, and wonder if you care.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- HOW IT WORKS -->
|
||||
<section id="how-it-works" class="py-16 sm:py-20 lg:py-32 px-4 sm:px-6 relative overflow-hidden">
|
||||
<div class="absolute inset-0 mesh-gradient opacity-30"></div>
|
||||
<div class="absolute inset-0 bg-gradient-to-b from-transparent via-brand-500/5 to-transparent pointer-events-none"></div>
|
||||
<div class="max-w-5xl mx-auto relative">
|
||||
<div class="text-center mb-10 sm:mb-14 lg:mb-20">
|
||||
<div class="inline-flex items-center gap-2 px-3 sm:px-4 py-1.5 sm:py-2 rounded-full glass text-xs sm:text-sm text-brand-400 mb-4 sm:mb-6 reveal-up">
|
||||
<i data-lucide="sparkles" class="w-3.5 h-3.5 sm:w-4 sm:h-4"></i>
|
||||
The Solution
|
||||
</div>
|
||||
<h2 class="text-2xl sm:text-3xl md:text-4xl lg:text-5xl xl:text-6xl font-black mb-4 sm:mb-6 lg:mb-8 reveal-up leading-tight">
|
||||
Three Steps to<br><span class="gradient-text">AI-Powered Scheduling</span>
|
||||
</h2>
|
||||
</div>
|
||||
<div class="space-y-4 sm:space-y-6 lg:space-y-8">
|
||||
|
||||
<div class="flex flex-col lg:flex-row items-center gap-4 sm:gap-6 lg:gap-10 glass rounded-2xl lg:rounded-3xl p-5 sm:p-6 lg:p-10 feature-card stagger-item">
|
||||
<div class="w-16 h-16 sm:w-20 sm:h-20 lg:w-24 lg:h-24 rounded-2xl lg:rounded-3xl bg-gradient-to-br from-brand-500 to-teal-400 flex items-center justify-center flex-shrink-0 shadow-2xl shadow-brand-500/30">
|
||||
<span class="text-3xl sm:text-4xl lg:text-5xl font-black text-black">1</span>
|
||||
</div>
|
||||
<div class="text-center lg:text-left">
|
||||
<h3 class="text-xl sm:text-2xl lg:text-3xl font-black mb-2 sm:mb-3 lg:mb-4">Connect Your Acuity</h3>
|
||||
<p class="text-zinc-400 text-sm sm:text-base lg:text-xl leading-relaxed">Paste your Acuity API credentials. MCPEngage discovers appointments, clients, calendars, and availability — building 49+ tools automatically. No technical skills needed.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-col lg:flex-row items-center gap-4 sm:gap-6 lg:gap-10 glass rounded-2xl lg:rounded-3xl p-5 sm:p-6 lg:p-10 feature-card stagger-item">
|
||||
<div class="w-16 h-16 sm:w-20 sm:h-20 lg:w-24 lg:h-24 rounded-2xl lg:rounded-3xl bg-gradient-to-br from-cyan-500 to-blue-400 flex items-center justify-center flex-shrink-0 shadow-2xl shadow-cyan-500/30">
|
||||
<span class="text-3xl sm:text-4xl lg:text-5xl font-black text-black">2</span>
|
||||
</div>
|
||||
<div class="text-center lg:text-left">
|
||||
<h3 class="text-xl sm:text-2xl lg:text-3xl font-black mb-2 sm:mb-3 lg:mb-4">Ask in Plain English</h3>
|
||||
<p class="text-zinc-400 text-sm sm:text-base lg:text-xl leading-relaxed">"Who's my next appointment?" "Block off Friday afternoon." "Show me clients who haven't booked in 60 days." Your AI understands Acuity and acts instantly.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-col lg:flex-row items-center gap-4 sm:gap-6 lg:gap-10 glass rounded-2xl lg:rounded-3xl p-5 sm:p-6 lg:p-10 feature-card stagger-item">
|
||||
<div class="w-16 h-16 sm:w-20 sm:h-20 lg:w-24 lg:h-24 rounded-2xl lg:rounded-3xl bg-gradient-to-br from-violet-500 to-purple-400 flex items-center justify-center flex-shrink-0 shadow-2xl shadow-violet-500/30">
|
||||
<span class="text-3xl sm:text-4xl lg:text-5xl font-black text-black">3</span>
|
||||
</div>
|
||||
<div class="text-center lg:text-left">
|
||||
<h3 class="text-xl sm:text-2xl lg:text-3xl font-black mb-2 sm:mb-3 lg:mb-4">Automate Your Practice</h3>
|
||||
<p class="text-zinc-400 text-sm sm:text-base lg:text-xl leading-relaxed">Set recurring tasks: send appointment summaries every morning, flag no-show risks, generate weekly revenue reports, and sync Acuity to your CRM or billing software.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- FEATURES GRID -->
|
||||
<section id="features" class="py-16 sm:py-20 lg:py-32 px-4 sm:px-6">
|
||||
<div class="max-w-7xl mx-auto">
|
||||
<div class="text-center mb-10 sm:mb-14 lg:mb-20">
|
||||
<div class="inline-flex items-center gap-2 px-3 sm:px-4 py-1.5 sm:py-2 rounded-full glass text-xs sm:text-sm text-brand-400 mb-4 sm:mb-6 reveal-up">
|
||||
<i data-lucide="layers" class="w-3.5 h-3.5 sm:w-4 sm:h-4"></i>
|
||||
Features
|
||||
</div>
|
||||
<h2 class="text-2xl sm:text-3xl md:text-4xl lg:text-5xl xl:text-6xl font-black mb-4 sm:mb-6 lg:mb-8 reveal-up leading-tight">
|
||||
Everything to<br><span class="gradient-text">Supercharge Acuity</span>
|
||||
</h2>
|
||||
<p class="text-base sm:text-lg lg:text-xl xl:text-2xl text-zinc-400 max-w-3xl mx-auto reveal-up">
|
||||
49+ Acuity tools accessible through one natural-language interface.
|
||||
</p>
|
||||
</div>
|
||||
<div class="grid sm:grid-cols-2 lg:grid-cols-3 gap-4 sm:gap-5 lg:gap-6">
|
||||
|
||||
<div class="glass rounded-2xl lg:rounded-3xl p-5 sm:p-6 lg:p-8 feature-card stagger-item group">
|
||||
<div class="w-11 h-11 sm:w-12 sm:h-12 lg:w-14 lg:h-14 rounded-xl lg:rounded-2xl bg-gradient-to-br from-brand-500/20 to-teal-500/20 flex items-center justify-center mb-4 sm:mb-5 lg:mb-6 feature-icon">
|
||||
<i data-lucide="calendar" class="w-5 h-5 sm:w-6 sm:h-6 lg:w-7 lg:h-7 text-brand-400"></i>
|
||||
</div>
|
||||
<h3 class="font-bold text-base sm:text-lg lg:text-xl mb-2 sm:mb-3 group-hover:text-brand-400 transition-colors">Appointment Management</h3>
|
||||
<p class="text-zinc-400 text-sm sm:text-base">View, create, reschedule, and cancel appointments through conversation. "Move tomorrow's 2pm to Thursday 3pm."</p>
|
||||
</div>
|
||||
<div class="glass rounded-2xl lg:rounded-3xl p-5 sm:p-6 lg:p-8 feature-card stagger-item group">
|
||||
<div class="w-11 h-11 sm:w-12 sm:h-12 lg:w-14 lg:h-14 rounded-xl lg:rounded-2xl bg-gradient-to-br from-cyan-500/20 to-blue-500/20 flex items-center justify-center mb-4 sm:mb-5 lg:mb-6 feature-icon">
|
||||
<i data-lucide="users" class="w-5 h-5 sm:w-6 sm:h-6 lg:w-7 lg:h-7 text-cyan-400"></i>
|
||||
</div>
|
||||
<h3 class="font-bold text-base sm:text-lg lg:text-xl mb-2 sm:mb-3 group-hover:text-cyan-400 transition-colors">Client Intelligence</h3>
|
||||
<p class="text-zinc-400 text-sm sm:text-base">Track appointment history, preferences, and notes. "Show me all clients who booked a consultation."</p>
|
||||
</div>
|
||||
<div class="glass rounded-2xl lg:rounded-3xl p-5 sm:p-6 lg:p-8 feature-card stagger-item group">
|
||||
<div class="w-11 h-11 sm:w-12 sm:h-12 lg:w-14 lg:h-14 rounded-xl lg:rounded-2xl bg-gradient-to-br from-violet-500/20 to-purple-500/20 flex items-center justify-center mb-4 sm:mb-5 lg:mb-6 feature-icon">
|
||||
<i data-lucide="clock" class="w-5 h-5 sm:w-6 sm:h-6 lg:w-7 lg:h-7 text-violet-400"></i>
|
||||
</div>
|
||||
<h3 class="font-bold text-base sm:text-lg lg:text-xl mb-2 sm:mb-3 group-hover:text-violet-400 transition-colors">Availability Optimization</h3>
|
||||
<p class="text-zinc-400 text-sm sm:text-base">Monitor open slots, peak times, and booking patterns. "When am I most booked this month?"</p>
|
||||
</div>
|
||||
<div class="glass rounded-2xl lg:rounded-3xl p-5 sm:p-6 lg:p-8 feature-card stagger-item group">
|
||||
<div class="w-11 h-11 sm:w-12 sm:h-12 lg:w-14 lg:h-14 rounded-xl lg:rounded-2xl bg-gradient-to-br from-orange-500/20 to-red-500/20 flex items-center justify-center mb-4 sm:mb-5 lg:mb-6 feature-icon">
|
||||
<i data-lucide="bell" class="w-5 h-5 sm:w-6 sm:h-6 lg:w-7 lg:h-7 text-orange-400"></i>
|
||||
</div>
|
||||
<h3 class="font-bold text-base sm:text-lg lg:text-xl mb-2 sm:mb-3 group-hover:text-orange-400 transition-colors">Smart Reminders</h3>
|
||||
<p class="text-zinc-400 text-sm sm:text-base">Auto-send confirmations and reduce no-shows. "Send reminder to all appointments tomorrow."</p>
|
||||
</div>
|
||||
<div class="glass rounded-2xl lg:rounded-3xl p-5 sm:p-6 lg:p-8 feature-card stagger-item group">
|
||||
<div class="w-11 h-11 sm:w-12 sm:h-12 lg:w-14 lg:h-14 rounded-xl lg:rounded-2xl bg-gradient-to-br from-pink-500/20 to-rose-500/20 flex items-center justify-center mb-4 sm:mb-5 lg:mb-6 feature-icon">
|
||||
<i data-lucide="trending-up" class="w-5 h-5 sm:w-6 sm:h-6 lg:w-7 lg:h-7 text-pink-400"></i>
|
||||
</div>
|
||||
<h3 class="font-bold text-base sm:text-lg lg:text-xl mb-2 sm:mb-3 group-hover:text-pink-400 transition-colors">Revenue Analytics</h3>
|
||||
<p class="text-zinc-400 text-sm sm:text-base">Track bookings, cancellations, and revenue trends. "What's my show rate for the last 30 days?"</p>
|
||||
</div>
|
||||
<div class="glass rounded-2xl lg:rounded-3xl p-5 sm:p-6 lg:p-8 feature-card stagger-item group">
|
||||
<div class="w-11 h-11 sm:w-12 sm:h-12 lg:w-14 lg:h-14 rounded-xl lg:rounded-2xl bg-gradient-to-br from-emerald-500/20 to-teal-500/20 flex items-center justify-center mb-4 sm:mb-5 lg:mb-6 feature-icon">
|
||||
<i data-lucide="calendar-check" class="w-5 h-5 sm:w-6 sm:h-6 lg:w-7 lg:h-7 text-emerald-400"></i>
|
||||
</div>
|
||||
<h3 class="font-bold text-base sm:text-lg lg:text-xl mb-2 sm:mb-3 group-hover:text-emerald-400 transition-colors">Schedule Automation</h3>
|
||||
<p class="text-zinc-400 text-sm sm:text-base">Auto-generate daily appointment lists, client prep sheets, and utilization reports. "Send me my schedule every morning at 7am."</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- FAQ -->
|
||||
<section id="faq" class="py-16 sm:py-20 lg:py-32 px-4 sm:px-6">
|
||||
<div class="max-w-3xl mx-auto">
|
||||
<div class="text-center mb-10 sm:mb-14 lg:mb-20">
|
||||
<div class="inline-flex items-center gap-2 px-3 sm:px-4 py-1.5 sm:py-2 rounded-full glass text-xs sm:text-sm text-brand-400 mb-4 sm:mb-6 reveal-up">
|
||||
<i data-lucide="help-circle" class="w-3.5 h-3.5 sm:w-4 sm:h-4"></i>
|
||||
FAQ
|
||||
</div>
|
||||
<h2 class="text-2xl sm:text-3xl md:text-4xl lg:text-5xl font-black mb-4 sm:mb-6 reveal-up leading-tight">
|
||||
Common <span class="gradient-text">Questions</span>
|
||||
</h2>
|
||||
</div>
|
||||
<div class="space-y-3 sm:space-y-4" id="faq-list">
|
||||
|
||||
<div class="faq-item glass rounded-2xl overflow-hidden feature-card stagger-item">
|
||||
<button class="faq-toggle w-full flex items-center justify-between p-5 sm:p-6 text-left" onclick="toggleFaq(this)">
|
||||
<span class="font-bold text-sm sm:text-base lg:text-lg pr-4">What is MCP?</span>
|
||||
<i data-lucide="chevron-down" class="w-5 h-5 text-zinc-400 faq-chevron flex-shrink-0"></i>
|
||||
</button>
|
||||
<div class="faq-answer px-5 sm:px-6 text-zinc-400 text-sm sm:text-base leading-relaxed">
|
||||
MCP (Model Context Protocol) is an open standard created by Anthropic that lets AI models securely connect to external tools and data sources. MCPEngage uses MCP to give your AI real-time read/write access to Acuity Scheduling.
|
||||
</div>
|
||||
</div>
|
||||
<div class="faq-item glass rounded-2xl overflow-hidden feature-card stagger-item">
|
||||
<button class="faq-toggle w-full flex items-center justify-between p-5 sm:p-6 text-left" onclick="toggleFaq(this)">
|
||||
<span class="font-bold text-sm sm:text-base lg:text-lg pr-4">How does it connect to Acuity?</span>
|
||||
<i data-lucide="chevron-down" class="w-5 h-5 text-zinc-400 faq-chevron flex-shrink-0"></i>
|
||||
</button>
|
||||
<div class="faq-answer px-5 sm:px-6 text-zinc-400 text-sm sm:text-base leading-relaxed">
|
||||
You provide an Acuity API User ID and Key (generated in Acuity Settings > Integrations > API). MCPEngage uses the Acuity API to create 49+ tools covering appointments, clients, and calendars. Your credentials are encrypted and never stored on our servers.
|
||||
</div>
|
||||
</div>
|
||||
<div class="faq-item glass rounded-2xl overflow-hidden feature-card stagger-item">
|
||||
<button class="faq-toggle w-full flex items-center justify-between p-5 sm:p-6 text-left" onclick="toggleFaq(this)">
|
||||
<span class="font-bold text-sm sm:text-base lg:text-lg pr-4">Will it mess up my Acuity data?</span>
|
||||
<i data-lucide="chevron-down" class="w-5 h-5 text-zinc-400 faq-chevron flex-shrink-0"></i>
|
||||
</button>
|
||||
<div class="faq-answer px-5 sm:px-6 text-zinc-400 text-sm sm:text-base leading-relaxed">
|
||||
No. MCPEngage uses Acuity's official API with the same permissions as any integration. You control which scopes to grant. All changes are logged in Acuity's activity history.
|
||||
</div>
|
||||
</div>
|
||||
<div class="faq-item glass rounded-2xl overflow-hidden feature-card stagger-item">
|
||||
<button class="faq-toggle w-full flex items-center justify-between p-5 sm:p-6 text-left" onclick="toggleFaq(this)">
|
||||
<span class="font-bold text-sm sm:text-base lg:text-lg pr-4">Can it sync with my CRM or billing software?</span>
|
||||
<i data-lucide="chevron-down" class="w-5 h-5 text-zinc-400 faq-chevron flex-shrink-0"></i>
|
||||
</button>
|
||||
<div class="faq-answer px-5 sm:px-6 text-zinc-400 text-sm sm:text-base leading-relaxed">
|
||||
Yes! Connect Acuity + HubSpot, Stripe, QuickBooks, or any other MCP-enabled platform. Have AI sync appointments, client data, and payments automatically — no manual exports.
|
||||
</div>
|
||||
</div>
|
||||
<div class="faq-item glass rounded-2xl overflow-hidden feature-card stagger-item">
|
||||
<button class="faq-toggle w-full flex items-center justify-between p-5 sm:p-6 text-left" onclick="toggleFaq(this)">
|
||||
<span class="font-bold text-sm sm:text-base lg:text-lg pr-4">How much does it cost?</span>
|
||||
<i data-lucide="chevron-down" class="w-5 h-5 text-zinc-400 faq-chevron flex-shrink-0"></i>
|
||||
</button>
|
||||
<div class="faq-answer px-5 sm:px-6 text-zinc-400 text-sm sm:text-base leading-relaxed">
|
||||
MCPEngage is free during the beta period. After launch, pricing starts at $29/month per platform connection. Multi-calendar and team plans available on request.
|
||||
</div>
|
||||
</div>
|
||||
<div class="faq-item glass rounded-2xl overflow-hidden feature-card stagger-item">
|
||||
<button class="faq-toggle w-full flex items-center justify-between p-5 sm:p-6 text-left" onclick="toggleFaq(this)">
|
||||
<span class="font-bold text-sm sm:text-base lg:text-lg pr-4">Can I use it with other platforms?</span>
|
||||
<i data-lucide="chevron-down" class="w-5 h-5 text-zinc-400 faq-chevron flex-shrink-0"></i>
|
||||
</button>
|
||||
<div class="faq-answer px-5 sm:px-6 text-zinc-400 text-sm sm:text-base leading-relaxed">
|
||||
Yes! MCPEngage supports 66+ platforms including Google Calendar, Zoom, Slack, and more. Each platform gets its own MCP server. Connect as many as you need.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- FINAL CTA -->
|
||||
<section id="cta" class="py-16 sm:py-20 lg:py-32 px-4 sm:px-6 relative overflow-hidden">
|
||||
<div class="absolute inset-0 mesh-gradient"></div>
|
||||
<div class="absolute inset-0 bg-gradient-to-t from-[#030303] via-transparent to-[#030303]"></div>
|
||||
<div class="max-w-4xl mx-auto text-center relative">
|
||||
<h2 class="text-2xl sm:text-3xl md:text-4xl lg:text-5xl xl:text-6xl font-black mb-4 sm:mb-6 lg:mb-8 reveal-up leading-tight">
|
||||
Start Automating Acuity<br><span class="gradient-text">Today</span>
|
||||
</h2>
|
||||
<p class="text-base sm:text-lg lg:text-xl xl:text-2xl text-zinc-400 mb-8 sm:mb-10 lg:mb-12 reveal-up">
|
||||
Join thousands of professionals using MCPEngage to supercharge their Acuity scheduling.
|
||||
</p>
|
||||
<form id="waitlist-form" class="max-w-md mx-auto reveal-up" onsubmit="return submitWaitlist(event)">
|
||||
<div class="space-y-3 sm:space-y-4 mb-4 sm:mb-6">
|
||||
<div class="flex gap-3">
|
||||
<input type="text" id="wl-first" name="firstName" placeholder="First Name *" required class="flex-1 px-4 sm:px-5 py-3 sm:py-3.5 glass-strong rounded-xl text-sm sm:text-base outline-none focus:ring-2 focus:ring-brand-500/50 transition-all placeholder:text-zinc-600">
|
||||
<input type="text" id="wl-last" name="lastName" placeholder="Last Name *" required class="flex-1 px-4 sm:px-5 py-3 sm:py-3.5 glass-strong rounded-xl text-sm sm:text-base outline-none focus:ring-2 focus:ring-brand-500/50 transition-all placeholder:text-zinc-600">
|
||||
</div>
|
||||
<input type="tel" id="wl-phone" name="phone" placeholder="Phone Number *" required class="w-full px-4 sm:px-5 py-3 sm:py-3.5 glass-strong rounded-xl text-sm sm:text-base outline-none focus:ring-2 focus:ring-brand-500/50 transition-all placeholder:text-zinc-600">
|
||||
<input type="email" id="wl-email" name="email" placeholder="Email (optional)" class="w-full px-4 sm:px-5 py-3 sm:py-3.5 glass-strong rounded-xl text-sm sm:text-base outline-none focus:ring-2 focus:ring-brand-500/50 transition-all placeholder:text-zinc-600">
|
||||
</div>
|
||||
<button type="submit" id="wl-btn" class="magnetic-btn w-full px-6 sm:px-8 py-3.5 sm:py-4 bg-gradient-to-r from-brand-500 to-cyan-500 hover:from-brand-400 hover:to-cyan-400 text-black font-bold rounded-xl text-base sm:text-lg transition-all hover:scale-105 active:scale-95 glow btn-shine">
|
||||
Join Waitlist
|
||||
</button>
|
||||
<p id="wl-status" class="text-xs sm:text-sm text-zinc-600 mt-3 sm:mt-4 hidden"></p>
|
||||
</form>
|
||||
<div id="wl-success" class="hidden max-w-md mx-auto reveal-up">
|
||||
<div class="glass-strong rounded-2xl p-6 sm:p-8 text-center">
|
||||
<div class="w-16 h-16 rounded-full bg-brand-500/20 flex items-center justify-center mx-auto mb-4">
|
||||
<i data-lucide="check" class="w-8 h-8 text-brand-400"></i>
|
||||
</div>
|
||||
<h3 class="text-xl sm:text-2xl font-black mb-2">You're on the list!</h3>
|
||||
<p class="text-zinc-400 text-sm sm:text-base">We'll notify you as soon as MCPEngage for Acuity Scheduling is ready.</p>
|
||||
</div>
|
||||
</div>
|
||||
<p class="text-xs sm:text-sm text-zinc-600 mt-4 sm:mt-6 reveal-up">Free during beta. No credit card required.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- FOOTER -->
|
||||
<footer class="py-10 sm:py-12 lg:py-16 px-4 sm:px-6 border-t border-white/5">
|
||||
<div class="max-w-7xl mx-auto">
|
||||
<div class="flex flex-col lg:flex-row items-center justify-between gap-6 sm:gap-8 lg:gap-10">
|
||||
<a href="/" class="flex items-center gap-2 sm:gap-3">
|
||||
<div class="w-10 h-10 sm:w-12 sm:h-12 rounded-xl bg-gradient-to-br from-brand-500 via-teal-400 to-cyan-400 flex items-center justify-center">
|
||||
<span class="font-black text-base sm:text-lg text-black">ME</span>
|
||||
</div>
|
||||
<span class="font-black text-xl sm:text-2xl tracking-tight">MCPEngage</span>
|
||||
</a>
|
||||
<div class="flex flex-wrap items-center justify-center gap-4 sm:gap-6 lg:gap-8 text-sm font-medium text-zinc-500">
|
||||
<a href="#features" class="hover:text-white transition-colors">Features</a>
|
||||
<a href="#how-it-works" class="hover:text-white transition-colors">How It Works</a>
|
||||
<a href="#faq" class="hover:text-white transition-colors">FAQ</a>
|
||||
<a href="#" class="hover:text-white transition-colors">Privacy</a>
|
||||
<a href="#" class="hover:text-white transition-colors">Terms</a>
|
||||
<a href="https://github.com/BusyBee3333/mcpengine" target="_blank" rel="noopener" class="hover:text-white transition-colors">GitHub</a>
|
||||
</div>
|
||||
<p class="text-xs sm:text-sm text-zinc-600">© 2025 MCPEngage. All rights reserved.</p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<!-- SCRIPTS -->
|
||||
<script>
|
||||
lucide.createIcons();
|
||||
document.body.classList.add('js-loaded');
|
||||
|
||||
gsap.registerPlugin(ScrollTrigger);
|
||||
gsap.utils.toArray('.reveal-up').forEach(el => {
|
||||
gsap.fromTo(el, { opacity:0, y:50 }, { opacity:1, y:0, duration:0.8, ease:"power3.out",
|
||||
scrollTrigger:{ trigger:el, start:"top 85%", toggleActions:"play none none none" }
|
||||
});
|
||||
});
|
||||
gsap.utils.toArray('.reveal-scale').forEach(el => {
|
||||
gsap.fromTo(el, { opacity:0, scale:0.95 }, { opacity:1, scale:1, duration:1, ease:"power3.out",
|
||||
scrollTrigger:{ trigger:el, start:"top 85%", toggleActions:"play none none none" }
|
||||
});
|
||||
});
|
||||
gsap.utils.toArray('.stagger-item').forEach((el, i) => {
|
||||
gsap.fromTo(el, { opacity:0, y:30 }, { opacity:1, y:0, duration:0.6, ease:"power3.out",
|
||||
scrollTrigger:{ trigger:el, start:"top 85%", toggleActions:"play none none none" },
|
||||
delay: (i % 4) * 0.1
|
||||
});
|
||||
});
|
||||
|
||||
document.querySelectorAll('.counter').forEach(counter => {
|
||||
const target = parseInt(counter.dataset.target);
|
||||
ScrollTrigger.create({
|
||||
trigger: counter, start:"top 80%",
|
||||
onEnter: () => { gsap.to(counter, { innerText:target, duration:2, snap:{innerText:1}, ease:"power2.out" }); },
|
||||
once: true
|
||||
});
|
||||
});
|
||||
|
||||
const navbar = document.getElementById('navbar');
|
||||
ScrollTrigger.create({
|
||||
start:"top -80",
|
||||
onUpdate: self => {
|
||||
if(self.scroll()>80){ navbar.classList.add('glass-strong'); navbar.style.borderBottom='1px solid rgba(255,255,255,0.05)'; }
|
||||
else { navbar.classList.remove('glass-strong'); navbar.style.borderBottom='none'; }
|
||||
}
|
||||
});
|
||||
|
||||
// CHAT DEMO
|
||||
const chatDemo = document.getElementById('chat-demo');
|
||||
const embed_1 = `<div style="background:rgba(255,255,255,0.03);border:1px solid rgba(255,255,255,0.08);border-radius:12px;overflow:hidden;margin-top:8px;max-width:420px;"><div style="display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid rgba(255,255,255,0.06);background:rgba(59,130,246,0.05);"><div style="display:flex;align-items:center;gap:8px;"><div style="width:6px;height:6px;border-radius:50%;background:#3b82f6;"></div><span style="font-size:11px;font-weight:700;color:#60a5fa;text-transform:uppercase;letter-spacing:0.5px;">Today's Schedule</span></div><span style="font-size:10px;color:rgba(255,255,255,0.3);font-family:monospace;">3 appointments</span></div><div style="padding:0;"><div style="display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid rgba(255,255,255,0.04);"><div style="flex-shrink:0;width:28px;height:28px;border-radius:8px;background:rgba(34,197,94,0.15);display:flex;align-items:center;justify-content:center;"><span style="font-size:9px;font-weight:800;color:#22c55e;">2PM</span></div><div style="flex:1;min-width:0;"><div style="display:flex;align-items:center;gap:6px;margin-bottom:2px;"><span style="font-size:12px;font-weight:600;color:#e4e4e7;">Sarah Johnson</span><span style="padding:2px 6px;border-radius:4px;font-size:9px;font-weight:600;background:rgba(34,197,94,0.15);color:#4ade80;">Confirmed</span></div><div style="display:flex;align-items:center;gap:6px;"><span style="font-size:10px;color:rgba(255,255,255,0.3);">Consultation · 60 min · New client</span></div></div></div><div style="display:flex;align-items:center;gap:10px;padding:10px 14px;"><div style="flex-shrink:0;width:28px;height:28px;border-radius:8px;background:rgba(59,130,246,0.15);display:flex;align-items:center;justify-content:center;"><span style="font-size:8px;font-weight:800;color:#3b82f6;">4:30</span></div><div style="flex:1;min-width:0;"><div style="display:flex;align-items:center;gap:6px;margin-bottom:2px;"><span style="font-size:12px;font-weight:600;color:#e4e4e7;">Mike Chen</span><span style="padding:2px 6px;border-radius:4px;font-size:9px;font-weight:600;background:rgba(59,130,246,0.15);color:#60a5fa;">Confirmed</span></div><div style="display:flex;align-items:center;gap:6px;"><span style="font-size:10px;color:rgba(255,255,255,0.3);">Follow-up · 30 min · Returning</span></div></div></div></div><div style="padding:8px 14px;border-top:1px solid rgba(255,255,255,0.06);display:flex;align-items:center;justify-content:space-between;"><span style="font-size:10px;color:rgba(255,255,255,0.25);">Utilization: 75% · Next open slot: Tomorrow 9am</span></div></div>`;
|
||||
const embed_3 = `<div style="background:rgba(255,255,255,0.03);border:1px solid rgba(255,255,255,0.08);border-radius:12px;overflow:hidden;margin-top:8px;max-width:420px;"><div style="display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid rgba(255,255,255,0.06);background:rgba(34,197,94,0.05);"><div style="display:flex;align-items:center;gap:8px;"><div style="width:6px;height:6px;border-radius:50%;background:#22c55e;"></div><span style="font-size:11px;font-weight:700;color:#22c55e;text-transform:uppercase;letter-spacing:0.5px;">Reminders Sent</span></div><span style="font-size:10px;color:rgba(255,255,255,0.3);font-family:monospace;">4 clients</span></div><div style="padding:10px 14px;"><div style="background:rgba(255,255,255,0.02);border:1px solid rgba(255,255,255,0.05);border-radius:8px;padding:10px 12px;margin-bottom:8px;"><div style="font-size:11px;color:rgba(255,255,255,0.7);margin-bottom:4px;">✓ Lisa Park — 10:00 AM (Strategy Session)</div><div style="font-size:10px;color:rgba(255,255,255,0.4);">Email & SMS sent · Confirmation link included</div></div><div style="background:rgba(255,255,255,0.02);border:1px solid rgba(255,255,255,0.05);border-radius:8px;padding:10px 12px;"><div style="font-size:11px;color:rgba(255,255,255,0.7);margin-bottom:4px;">✓ Tom Wilson — 2:00 PM (Consultation)</div><div style="font-size:10px;color:rgba(255,255,255,0.4);">Email sent · Calendar invite attached</div></div></div></div>`;
|
||||
|
||||
const messages = [
|
||||
{ type:'user', text:'What\'s on my calendar today?' },
|
||||
{ type:'ai', text:'You have 3 appointments today:', embed: embed_1 },
|
||||
{ type:'user', text:'Send reminders to all appointments tomorrow' },
|
||||
{ type:'ai', text:'Done! Reminders sent to 4 clients:', embed: embed_3 },
|
||||
];
|
||||
function createMessage(msg){
|
||||
const div = document.createElement('div');
|
||||
div.className = msg.type==='user' ? 'flex justify-end' : 'flex gap-2 sm:gap-3';
|
||||
div.style.opacity='0'; div.style.transform='translateY(15px)';
|
||||
if(msg.type==='user'){
|
||||
div.innerHTML=`<div class="bg-brand-500/20 border border-brand-500/30 rounded-xl sm:rounded-2xl rounded-br-sm px-3 sm:px-4 lg:px-5 py-2 sm:py-3 max-w-[85%]"><p class="text-xs sm:text-sm">${msg.text}</p></div>`;
|
||||
} else {
|
||||
const embedHtml = msg.embed || '';
|
||||
div.innerHTML=`<div class="w-7 h-7 sm:w-8 sm:h-8 lg:w-9 lg:h-9 rounded-lg sm:rounded-xl bg-gradient-to-br from-brand-500 to-teal-400 flex items-center justify-center flex-shrink-0"><span class="font-bold text-[10px] sm:text-xs text-black">ME</span></div><div class="max-w-[90%]"><div class="glass rounded-xl sm:rounded-2xl rounded-tl-sm px-3 sm:px-4 lg:px-5 py-2 sm:py-3"><p class="text-xs sm:text-sm text-zinc-300">${msg.text}</p>${embedHtml}</div></div>`;
|
||||
}
|
||||
return div;
|
||||
}
|
||||
let chatAnimated = false;
|
||||
ScrollTrigger.create({
|
||||
trigger: chatDemo, start:"top 75%",
|
||||
onEnter: () => {
|
||||
if(chatAnimated) return; chatAnimated = true;
|
||||
messages.forEach((msg,i) => {
|
||||
setTimeout(() => {
|
||||
const el = createMessage(msg);
|
||||
chatDemo.appendChild(el);
|
||||
lucide.createIcons();
|
||||
gsap.to(el, { opacity:1, y:0, duration:0.4, ease:"power2.out" });
|
||||
chatDemo.scrollTop = chatDemo.scrollHeight;
|
||||
}, i*1200);
|
||||
});
|
||||
},
|
||||
once: true
|
||||
});
|
||||
|
||||
// TERMINAL TYPING
|
||||
const termLines = [
|
||||
{ text:'$ npx mcpengage init', color:'text-white', delay:0 },
|
||||
{ text:'', color:'text-white', delay:600 },
|
||||
{ text:'? Select your platform: Acuity Scheduling', color:'text-cyan-400', delay:1200 },
|
||||
{ text:'', color:'text-white', delay:1600 },
|
||||
{ text:' Connecting to Acuity API...', color:'text-zinc-500', delay:2000 },
|
||||
{ text:'✓ Connected to Acuity API', color:'text-green-400', delay:3000 },
|
||||
{ text:'✓ 49 tools loaded', color:'text-green-400', delay:3600 },
|
||||
{ text:'✓ Ready! Ask your AI anything about Acuity', color:'text-green-400', delay:4200 },
|
||||
];
|
||||
const termContainer = document.getElementById('terminal-lines');
|
||||
let termAnimated = false;
|
||||
function typeTermLine(lineEl, text, speed=30) {
|
||||
return new Promise(resolve => {
|
||||
let idx = 0;
|
||||
const cursor = document.createElement('span');
|
||||
cursor.className = 'terminal-cursor';
|
||||
lineEl.appendChild(cursor);
|
||||
function tick() {
|
||||
if(idx < text.length) { lineEl.insertBefore(document.createTextNode(text[idx]), cursor); idx++; setTimeout(tick, speed); }
|
||||
else { cursor.remove(); resolve(); }
|
||||
}
|
||||
tick();
|
||||
});
|
||||
}
|
||||
ScrollTrigger.create({
|
||||
trigger: termContainer, start:"top 80%",
|
||||
onEnter: async () => {
|
||||
if(termAnimated) return; termAnimated = true;
|
||||
for(const line of termLines) {
|
||||
await new Promise(r => setTimeout(r, line.delay ? 400 : 200));
|
||||
const lineEl = document.createElement('div');
|
||||
lineEl.className = line.color || 'text-white';
|
||||
termContainer.appendChild(lineEl);
|
||||
if(line.text) { await typeTermLine(lineEl, line.text, line.text.startsWith('$') ? 40 : 20); }
|
||||
}
|
||||
const finalCursor = document.createElement('div');
|
||||
finalCursor.innerHTML = '<span class="text-white">$ </span><span class="terminal-cursor"></span>';
|
||||
termContainer.appendChild(finalCursor);
|
||||
},
|
||||
once: true
|
||||
});
|
||||
|
||||
// FAQ
|
||||
function toggleFaq(btn) {
|
||||
const item = btn.closest('.faq-item');
|
||||
const wasOpen = item.classList.contains('open');
|
||||
document.querySelectorAll('.faq-item.open').forEach(el => el.classList.remove('open'));
|
||||
if(!wasOpen) item.classList.add('open');
|
||||
}
|
||||
|
||||
// WAITLIST FORM → GoHighLevel
|
||||
async function submitWaitlist(e) {
|
||||
e.preventDefault();
|
||||
const btn = document.getElementById('wl-btn');
|
||||
const status = document.getElementById('wl-status');
|
||||
const form = document.getElementById('waitlist-form');
|
||||
const success = document.getElementById('wl-success');
|
||||
|
||||
btn.disabled = true;
|
||||
btn.textContent = 'Joining...';
|
||||
status.className = 'text-xs sm:text-sm text-zinc-400 mt-3 sm:mt-4';
|
||||
status.textContent = 'Adding you to the waitlist...';
|
||||
|
||||
const firstName = document.getElementById('wl-first').value.trim();
|
||||
const lastName = document.getElementById('wl-last').value.trim();
|
||||
const phone = document.getElementById('wl-phone').value.trim();
|
||||
const email = document.getElementById('wl-email').value.trim();
|
||||
const platformName = 'Acuity Scheduling';
|
||||
|
||||
try {
|
||||
const body = {
|
||||
firstName,
|
||||
lastName,
|
||||
phone,
|
||||
tags: ['MCP waitlist', platformName],
|
||||
source: 'MCPEngage Waitlist — ' + platformName
|
||||
};
|
||||
if (email) body.email = email;
|
||||
if (!body.name) body.name = firstName + ' ' + lastName;
|
||||
|
||||
const res = await fetch('https://mcpengage-waitlist.jake-2ab.workers.dev', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(body)
|
||||
});
|
||||
|
||||
if (res.ok || res.status === 200 || res.status === 201) {
|
||||
form.classList.add('hidden');
|
||||
success.classList.remove('hidden');
|
||||
lucide.createIcons();
|
||||
} else {
|
||||
const errData = await res.json().catch(() => ({}));
|
||||
throw new Error(errData.message || 'Server error');
|
||||
}
|
||||
} catch (err) {
|
||||
status.className = 'text-xs sm:text-sm text-red-400 mt-3 sm:mt-4';
|
||||
status.textContent = 'Something went wrong. Please try again.';
|
||||
btn.disabled = false;
|
||||
btn.textContent = 'Join Waitlist';
|
||||
console.error('Waitlist error:', err);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// MAGNETIC BUTTONS
|
||||
if(window.innerWidth >= 1024) {
|
||||
document.querySelectorAll('.magnetic-btn').forEach(btn => {
|
||||
btn.addEventListener('mousemove', e => {
|
||||
const rect = btn.getBoundingClientRect();
|
||||
const x = e.clientX - rect.left - rect.width/2;
|
||||
const y = e.clientY - rect.top - rect.height/2;
|
||||
btn.style.transform = `translate(${x*0.15}px, ${y*0.15}px) scale(1.02)`;
|
||||
});
|
||||
btn.addEventListener('mouseleave', () => { btn.style.transform = ''; });
|
||||
});
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
1386
bamboohr/index.html
1386
bamboohr/index.html
File diff suppressed because it is too large
Load Diff
1367
brevo/index.html
1367
brevo/index.html
File diff suppressed because it is too large
Load Diff
1058
linear/index.html
1058
linear/index.html
File diff suppressed because it is too large
Load Diff
1310
mailchimp/index.html
1310
mailchimp/index.html
File diff suppressed because it is too large
Load Diff
1058
sendgrid/index.html
1058
sendgrid/index.html
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user