Ugottaloveit commited on
Commit
2414e36
·
verified ·
1 Parent(s): 84cd959

Create a modern, professional website for "UgottaConnect" - an automation workflow platform that helps businesses and creators discover, plan, and implement automation solutions.

Browse files

BRAND IDENTITY:
- Company: UgottaConnect (Ugottaconnect.com)
- Tagline: "Your Automation Orchestrator"
- Mission: Simplify workflow automation through intelligent tool recommendations and connection strategies

TARGET AUDIENCE:
- Entrepreneurs and small business owners
- Content creators and digital marketers
- Developers looking for automation shortcuts
- Teams wanting to streamline operations

WEBSITE STRUCTURE:

1. HERO SECTION
- Headline: "Stop Building. Start Connecting."
- Subheadline: "AI-powered automation planning that turns your ideas into workflows"
- CTA: "Get Your Free Automation Plan" + "See How It Works"
- Visual: Animated node-connection diagram showing tools linking together

2. HOW IT WORKS (3-Step Process)
- Step 1: "Tell Us What You Need" - Describe your project or workflow
- Step 2: "Get Your Blueprint" - AI analyzes and suggests optimal tool combinations
- Step 3: "Connect & Automate" - Follow our setup guide or let us build it

3. FEATURED SOLUTIONS (Cards)
- Content Creation Pipeline
- Lead Generation & CRM
- Social Media Automation
- E-commerce Operations
- Development Workflows
- Data Analytics & Reporting

4. TOOLS WE CONNECT
- Visual grid/carousel of popular tools: n8n, Zapier, Make, Airtable, Notion, GitHub, Cloudflare, Stripe, OpenAI, etc.
- "...and 500+ more tools"

5. USE CASE EXAMPLES
- "Auto-post YouTube videos to social media"
- "Sync Google Sheets to website database"
- "Generate images from blog posts automatically"
- Interactive demo showing before/after workflow

6. PRICING (3 Tiers)
- Free: "Blueprint" - Get 1 automation plan/month
- Pro: "Architect" - Unlimited plans + priority support ($29/mo)
- Enterprise: "White Glove" - We build it for you (Custom pricing)

7. TOOL DISCOVERY SECTION
- "Latest Tools We're Tracking"
- Live feed of recent Product Hunt launches relevant to automation
- Filter by category: Marketing, Development, Analytics, etc.

8. FOOTER
- About UgottaGroup ecosystem
- Links to Ugot2AI.org and Ugottaplay
- Newsletter signup: "Weekly automation tips & new tool alerts"

TECHNICAL REQUIREMENTS:
- Framework: Use modern React with Next.js 14+ (App Router)
- Styling: Tailwind CSS with custom design system
- Animations: Framer Motion for smooth transitions
- Components: Modular, reusable component architecture
- Responsive: Mobile-first design
- Performance: Optimized for Core Web Vitals
- Accessibility: WCAG 2.1 AA compliant

DESIGN AESTHETIC:
- Modern, clean, slightly tech-forward
- Color scheme: Deep blues/purples (trust, tech) with vibrant accent colors (orange/cyan for CTAs)
- Typography: Clean sans-serif (Inter or similar)
- Generous white space
- Subtle gradients and glass-morphism effects
- Connection/network theme throughout (nodes, lines, flows)

SPECIAL FEATURES:
- Interactive automation calculator: "How much time will you save?"
- Live API status indicators showing tool availability
- Searchable tool directory with tags/filters
- Embedded workflow visualizations
- Chat widget for immediate questions

PAGES TO BUILD:
1. Homepage (main landing)
2. /tools (directory of all supported integrations)
3. /solutions (use case examples with templates)
4. /about (company story, team, mission)
5. /pricing
6. /blog (automation tips, tool reviews, case studies)
7. /contact

OUTPUT FORMAT:
- Complete file structure for Next.js app
- All React components with full code
- Tailwind config with custom theme
- Sample content for each section
- README with setup instructions
- Deployment guide for Hostinger

BONUS REQUESTS:
- Include a "Workflow Builder" demo component
- Add dark mode toggle
- Create reusable "Tool Card" component for directory
- Build email capture form with validation
```

---

README.md CHANGED
@@ -1,10 +1,13 @@
1
  ---
2
- title: Workflow Wizard Orchestrator
3
- emoji:
4
- colorFrom: blue
5
  colorTo: purple
 
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
1
  ---
2
+ title: Workflow Wizard Orchestrator 🚀
3
+ colorFrom: yellow
 
4
  colorTo: purple
5
+ emoji: 🐳
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite-v3
10
  ---
11
 
12
+ # Welcome to your new DeepSite project!
13
+ This project was created with [DeepSite](https://huggingface.co/deepsite).
components/navbar.js ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomNavbar extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ .nav-link {
7
+ position: relative;
8
+ transition: color 0.3s ease;
9
+ }
10
+ .nav-link:hover::after {
11
+ width: 100%;
12
+ }
13
+ .nav-link::after {
14
+ content: '';
15
+ position: absolute;
16
+ bottom: -2px;
17
+ left: 0;
18
+ width: 0;
19
+ height: 2px;
20
+ background: linear-gradient(90deg, #3b82f6, #8b5cf6);
21
+ transition: width 0.3s ease;
22
+ }
23
+ </style>
24
+ <nav class="bg-white/80 backdrop-blur-sm border-b border-gray-200 sticky top-0 z-50">
25
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
26
+ <div class="flex justify-between items-center py-4">
27
+ <!-- Logo -->
28
+ <div class="flex items-center">
29
+ <a href="/" class="text-2xl font-bold text-gray-900 flex items-center">
30
+ <i data-feather="zap" class="text-primary mr-2"></i>
31
+ UgottaConnect
32
+ </a>
33
+ </div>
34
+
35
+ <!-- Desktop Navigation -->
36
+ <div class="hidden lg:flex items-center space-x-8">
37
+ <a href="/" class="nav-link text-gray-700 hover:text-primary font-medium">Home</a>
38
+ <a href="/tools" class="nav-link text-gray-700 hover:text-primary font-medium">Tools</a>
39
+ <a href="/solutions" class="nav-link text-gray-700 hover:text-primary font-medium">Solutions</a>
40
+ <a href="/pricing" class="nav-link text-gray-700 hover:text-primary font-medium">Pricing</a>
41
+ <a href="/blog" class="nav-link text-gray-700 hover:text-primary font-medium">Blog</a>
42
+ <a href="/about" class="nav-link text-gray-700 hover:text-primary font-medium">About</a>
43
+ </div>
44
+
45
+ <!-- Auth Buttons -->
46
+ <div class="hidden lg:flex items-center space-x-4">
47
+ <a href="/login" class="text-gray-700 hover:text-primary font-medium">Login</a>
48
+ <a href="/signup" class="bg-gradient-to-r from-primary to-secondary text-white px-6 py-2 rounded-lg font-medium hover:shadow-lg transition-all duration-300">
49
+ Sign Up Free
50
+ </a>
51
+ <button data-dark-mode-toggle class="p-2 rounded-lg hover:bg-gray-100 transition-colors">
52
+ <i data-feather="moon"></i>
53
+ </button>
54
+ </div>
55
+
56
+ <!-- Mobile menu button -->
57
+ <div class="lg:hidden">
58
+ <button id="mobile-menu-button" class="p-2 rounded-lg hover:bg-gray-100 transition-colors">
59
+ <i data-feather="menu"></i>
60
+ </button>
61
+ </div>
62
+ </div>
63
+
64
+ <!-- Mobile Navigation -->
65
+ <div id="mobile-menu" class="lg:hidden hidden pt-4 pb-6 border-t border-gray-200">
66
+ <div class="flex flex-col space-y-4">
67
+ <a href="/" class="text-gray-700 hover:text-primary font-medium">Home</a>
68
+ <a href="/tools" class="text-gray-700 hover:text-primary font-medium">Tools</a>
69
+ <a href="/solutions" class="text-gray-700 hover:text-primary font-medium">Solutions</a>
70
+ <a href="/pricing" class="text-gray-700 hover:text-primary font-medium">Pricing</a>
71
+ <a href="/blog" class="text-gray-700 hover:text-primary font-medium">Blog</a>
72
+ <a href="/about" class="text-gray-700 hover:text-primary font-medium">About</a>
73
+ <div class="pt-4 border-t border-gray-200">
74
+ <a href="/login" class="text-gray-700 hover:text-primary font-medium block">Login</a>
75
+ <a href="/signup" class="bg-gradient-to-r from-primary to-secondary text-white px-4 py-2 rounded-lg font-medium hover:shadow-lg transition-all duration-300 mt-2 block text-center">
76
+ Sign Up Free
77
+ </a>
78
+ </div>
79
+ </div>
80
+ </div>
81
+ </nav>
82
+ `;
83
+
84
+ // Mobile menu functionality
85
+ const mobileMenuButton = this.shadowRoot.getElementById('mobile-menu-button');
86
+ const mobileMenu = this.shadowRoot.getElementById('mobile-menu');
87
+
88
+ mobileMenuButton.addEventListener('click', () => {
89
+ mobileMenu.classList.toggle('hidden');
90
+ const icon = mobileMenuButton.querySelector('i');
91
+ if (mobileMenu.classList.contains('hidden')) {
92
+ icon.setAttribute('data-feather', 'menu');
93
+ } else {
94
+ icon.setAttribute('data-feather', 'x');
95
+ }
96
+ feather.replace();
97
+ });
98
+ }
99
+ }
100
+
101
+ customElements.define('custom-navbar', CustomNavbar);
components/pricing-card.js ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomPricingCard extends HTMLElement {
2
+ connectedCallback() {
3
+ const plan = this.getAttribute('plan') || 'Plan';
4
+ const price = this.getAttribute('price') || '$0';
5
+ const period = this.getAttribute('period') || '';
6
+ const description = this.getAttribute('description') || '';
7
+ const features = JSON.parse(this.getAttribute('features') || '[]');
8
+ const ctaText = this.getAttribute('cta-text') || 'Get Started';
9
+ const popular = this.getAttribute('popular') === 'true';
10
+
11
+ this.attachShadow({ mode: 'open' });
12
+ this.shadowRoot.innerHTML = `
13
+ <style>
14
+ .pricing-card {
15
+ transition: all 0.3s ease;
16
+ }
17
+ .pricing-card:hover {
18
+ transform: translateY(-5px);
19
+ }
20
+ .popular-card {
21
+ border: 2px solid #3b82f6;
22
+ }
23
+ </style>
24
+ <div class="pricing-card ${popular ? 'popular-card bg-white relative' : 'bg-white'} rounded-2xl p-8 shadow-lg border border-gray-100">
25
+ ${popular ? `
26
+ <div class="popular-badge text-white text-xs font-bold px-4 py-1 rounded-full absolute -top-3 left-1/2 transform -translate-x-1/2">
27
+ Most Popular
28
+ </div>
29
+ ` : ''}
30
+ <h3 class="text-2xl font-bold text-gray-900 mb-2">${plan}</h3>
31
+ <div class="flex items-baseline mb-4">
32
+ <span class="text-4xl font-bold text-gray-900">${price}</span>
33
+ <span class="text-gray-600 ml-1">${period}</span>
34
+ </div>
35
+ <p class="text-gray-600 mb-6">${description}</p>
36
+ <ul class="space-y-3 mb-8">
37
+ ${features.map(feature => `
38
+ <li class="flex items-center">
39
+ <i data-feather="check" class="w-4 h-4 text-green-500 mr-3"></i>
40
+ <span class="text-gray-600">${feature}</span>
41
+ </li>
42
+ `).join('')}
43
+ </ul>
44
+ <button class="w-full ${popular ? 'bg-gradient-to-r from-primary to-secondary' : 'bg-gray-100 text-gray-700 hover:bg-gray-200'} text-white py-3 rounded-xl font-semibold transition-all duration-300">
45
+ ${
components/solution-card.js ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomSolutionCard extends HTMLElement {
2
+ connectedCallback() {
3
+ const title = this.getAttribute('title') || 'Solution';
4
+ const description = this.getAttribute('description') || 'Automate your workflow with this solution';
5
+ const icon = this.getAttribute('icon') || 'settings';
6
+ const category = this.getAttribute('category') || 'General';
7
+
8
+ this.attachShadow({ mode: 'open' });
9
+ this.shadowRoot.innerHTML = `
10
+ <style>
11
+ .card {
12
+ transition: all 0.3s ease;
13
+ }
14
+ .card:hover {
15
+ transform: translateY(-5px);
16
+ }
17
+ </style>
18
+ <div class="card bg-white rounded-2xl p-6 shadow-md border border-gray-100 hover:shadow-xl cursor-pointer">
19
+ <div class="flex items-start justify-between mb-4">
20
+ <div class="w-12 h-12 bg-gradient-to-r from-primary to-secondary rounded-xl flex items-center justify-center">
21
+ <i data-feather="${icon}"></i>
22
+ </div>
23
+ <div class="flex items-center mb-2">
24
+ <span class="text-xs font-semibold bg-primary/10 text-primary px-3 py-1 rounded-full">
25
+ ${category}
26
+ </span>
27
+ </div>
28
+ <h3 class="text-xl font-bold text-gray-900 mb-3">${title}</h3>
29
+ <p class="text-gray-600 leading-relaxed mb-4">${description}</p>
30
+ <div class="flex items-center text-primary font-semibold">
31
+ <span>Learn More</span>
32
+ <i data-feather="arrow-right" class="w-4 h-4 ml-2"></i>
33
+ </div>
34
+ </div>
35
+ `;
36
+
37
+ // Add click handler to navigate to solution detail
38
+ const card = this.shadowRoot.querySelector('.card');
39
+ card.addEventListener('click', () => {
40
+ const solutionSlug = title.toLowerCase().replace(/[^a-z0-9]+/g, '-');
41
+ window.location.href = `/solutions/${solutionSlug}`;
42
+ });
43
+ }
44
+ }
45
+
46
+ customElements.define('custom-solution-card', CustomSolutionCard);
components/tools-carousel.js ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomToolsCarousel extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ .tool-grid {
7
+ display: grid;
8
+ grid-template-columns: repeat(4, 1fr);
9
+ gap: 1rem;
10
+ }
11
+ @media (max-width: 768px) {
12
+ .tool-grid {
13
+ grid-template-columns: repeat(2, 1fr);
14
+ }
15
+ }
16
+ .fade-in {
17
+ opacity: 0;
18
+ transform: translateY(20px);
19
+ transition: all 0.6s ease;
20
+ }
21
+ .fade-in.animate-in {
22
+ opacity: 1;
23
+ transform: translateY(0);
24
+ }
25
+ </style>
26
+ <div class="fade-in">
27
+ <div class="tool-grid mb-8"></div>
28
+ <div class="text-center">
29
+ <p class="text-gray-600 text-lg">
30
+ ...and 500+ more tools in our directory
31
+ </p>
32
+ <a href="/tools" class="inline-flex items-center text-primary font-semibold mt-4">
33
+ <span>Explore All Tools</span>
34
+ <i data-feather="arrow-right" class="w-4 h-4 ml-2"></i>
35
+ </a>
36
+ </div>
37
+ </div>
38
+ `;
39
+ }
40
+ }
41
+
42
+ customElements.define('custom-tools-carousel', CustomToolsCarousel);
index.html CHANGED
@@ -1,19 +1,213 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>UgottaConnect - Your Automation Orchestrator</title>
7
+ <link rel="icon" type="image/x-icon" href="/static/favicon.ico">
8
+ <link rel="stylesheet" href="style.css">
9
+ <script src="https://cdn.tailwindcss.com"></script>
10
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
11
+ <script src="https://unpkg.com/feather-icons"></script>
12
+ <script>
13
+ tailwind.config = {
14
+ theme: {
15
+ extend: {
16
+ colors: {
17
+ primary: '#2563eb',
18
+ secondary: '#7c3aed',
19
+ accent: '#f59e0b',
20
+ 'accent-cyan': '#06b6d4'
21
+ }
22
+ }
23
+ }
24
+ }
25
+ </script>
26
+ </head>
27
+ <body class="bg-gradient-to-br from-slate-50 to-blue-50 min-h-screen">
28
+ <!-- Navigation -->
29
+ <custom-navbar></custom-navbar>
30
+
31
+ <!-- Hero Section -->
32
+ <section class="relative overflow-hidden">
33
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-20 lg:py-32">
34
+ <div class="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center">
35
+ <div class="space-y-8">
36
+ <h1 class="text-5xl lg:text-6xl font-bold text-gray-900 leading-tight">
37
+ Stop Building. <span class="text-primary">Start Connecting.</span>
38
+ </h1>
39
+ <p class="text-xl text-gray-600 leading-relaxed">
40
+ AI-powered automation planning that turns your ideas into workflows. Discover the perfect tools and connections to streamline your business.
41
+ </p>
42
+ <div class="flex flex-col sm:flex-row gap-4">
43
+ <a href="#pricing" class="bg-gradient-to-r from-primary to-secondary text-white px-8 py-4 rounded-xl font-semibold text-lg hover:shadow-lg transition-all duration-300 transform hover:-translate-y-1 text-center">
44
+ Get Your Free Automation Plan
45
+ </a>
46
+ <a href="#how-it-works" class="border-2 border-primary text-primary px-8 py-4 rounded-xl font-semibold text-lg hover:bg-primary hover:text-white transition-all duration-300 text-center">
47
+ See How It Works
48
+ </a>
49
+ </div>
50
+ </div>
51
+ <div class="relative">
52
+ <div class="relative z-10 bg-white/80 backdrop-blur-sm rounded-2xl p-8 shadow-2xl">
53
+ <div class="grid grid-cols-3 gap-4" id="node-visualization">
54
+ <!-- Node visualization will be populated by JavaScript -->
55
+ </div>
56
+ </div>
57
+ <div class="absolute inset-0 bg-gradient-to-r from-primary/20 to-secondary/20 rounded-2xl transform rotate-6"></div>
58
+ </div>
59
+ </div>
60
+ </div>
61
+ </section>
62
+
63
+ <!-- How It Works -->
64
+ <section id="how-it-works" class="py-20 bg-white">
65
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
66
+ <div class="text-center mb-16">
67
+ <h2 class="text-4xl font-bold text-gray-900 mb-4">How It Works</h2>
68
+ <p class="text-xl text-gray-600 max-w-3xl mx-auto">Transform your workflow ideas into automated reality in just three simple steps</p>
69
+ </div>
70
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-8">
71
+ <div class="text-center p-8 rounded-2xl bg-gradient-to-br from-blue-50 to-purple-50 hover:shadow-lg transition-all duration-300">
72
+ <div class="w-16 h-16 bg-primary text-white rounded-full flex items-center justify-center text-2xl font-bold mx-auto mb-6">1</div>
73
+ <h3 class="text-2xl font-bold text-gray-900 mb-4">Tell Us What You Need</h3>
74
+ <p class="text-gray-600">Describe your project or workflow challenge. Our AI understands natural language and business context.</p>
75
+ </div>
76
+ <div class="text-center p-8 rounded-2xl bg-gradient-to-br from-purple-50 to-pink-50 hover:shadow-lg transition-all duration-300">
77
+ <div class="w-16 h-16 bg-secondary text-white rounded-full flex items-center justify-center text-2xl font-bold mx-auto mb-6">2</div>
78
+ <h3 class="text-2xl font-bold text-gray-900 mb-4">Get Your Blueprint</h3>
79
+ <p class="text-gray-600">Receive AI-analyzed recommendations with optimal tool combinations and connection strategies.</p>
80
+ </div>
81
+ <div class="text-center p-8 rounded-2xl bg-gradient-to-br from-pink-50 to-orange-50 hover:shadow-lg transition-all duration-300">
82
+ <div class="w-16 h-16 bg-accent text-white rounded-full flex items-center justify-center text-2xl font-bold mx-auto mb-6">3</div>
83
+ <h3 class="text-2xl font-bold text-gray-900 mb-4">Connect & Automate</h3>
84
+ <p class="text-gray-600">Follow our step-by-step setup guide or let our experts build the automation for you.</p>
85
+ </div>
86
+ </div>
87
+ </div>
88
+ </section>
89
+
90
+ <!-- Featured Solutions -->
91
+ <section class="py-20 bg-gradient-to-br from-slate-50 to-blue-50">
92
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
93
+ <div class="text-center mb-16">
94
+ <h2 class="text-4xl font-bold text-gray-900 mb-4">Featured Solutions</h2>
95
+ <p class="text-xl text-gray-600">Pre-built automation templates for common business challenges</p>
96
+ </div>
97
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
98
+ <custom-solution-card
99
+ title="Content Creation Pipeline"
100
+ description="Automate content planning, creation, and distribution across multiple platforms"
101
+ icon="file-text"
102
+ category="Marketing"
103
+ ></custom-solution-card>
104
+ <custom-solution-card
105
+ title="Lead Generation & CRM"
106
+ description="Capture, qualify, and nurture leads automatically with smart CRM integration"
107
+ icon="users"
108
+ category="Sales"
109
+ ></custom-solution-card>
110
+ <custom-solution-card
111
+ title="Social Media Automation"
112
+ description="Schedule, publish, and analyze social media content across all channels"
113
+ icon="share-2"
114
+ category="Marketing"
115
+ ></custom-solution-card>
116
+ <custom-solution-card
117
+ title="E-commerce Operations"
118
+ description="Streamline inventory, orders, shipping, and customer communication"
119
+ icon="shopping-cart"
120
+ category="E-commerce"
121
+ ></custom-solution-card>
122
+ <custom-solution-card
123
+ title="Development Workflows"
124
+ description="Automate testing, deployment, and code management for development teams"
125
+ icon="code"
126
+ category="Development"
127
+ ></custom-solution-card>
128
+ <custom-solution-card
129
+ title="Data Analytics & Reporting"
130
+ description="Collect, process, and visualize data automatically with real-time dashboards"
131
+ icon="bar-chart-2"
132
+ category="Analytics"
133
+ ></custom-solution-card>
134
+ </div>
135
+ </div>
136
+ </section>
137
+
138
+ <!-- Tools We Connect -->
139
+ <section class="py-20 bg-white">
140
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
141
+ <div class="text-center mb-16">
142
+ <h2 class="text-4xl font-bold text-gray-900 mb-4">Tools We Connect</h2>
143
+ <p class="text-xl text-gray-600">Integrate with your favorite tools and discover new ones</p>
144
+ </div>
145
+ <custom-tools-carousel></custom-tools-carousel>
146
+ </div>
147
+ </section>
148
+
149
+ <!-- Pricing -->
150
+ <section id="pricing" class="py-20 bg-gradient-to-br from-slate-50 to-blue-50">
151
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
152
+ <div class="text-center mb-16">
153
+ <h2 class="text-4xl font-bold text-gray-900 mb-4">Simple, Transparent Pricing</h2>
154
+ <p class="text-xl text-gray-600">Choose the plan that fits your automation needs</p>
155
+ </div>
156
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-8 max-w-5xl mx-auto">
157
+ <custom-pricing-card
158
+ plan="Blueprint"
159
+ price="Free"
160
+ description="Perfect for getting started with automation"
161
+ features='["1 automation plan per month", "Basic tool recommendations", "Community support", "Email setup guides"]'
162
+ cta-text="Get Started"
163
+ popular="false"
164
+ ></custom-pricing-card>
165
+ <custom-pricing-card
166
+ plan="Architect"
167
+ price="$29"
168
+ period="/month"
169
+ description="For growing businesses and teams"
170
+ features='["Unlimited automation plans", "Priority AI recommendations", "Advanced workflow templates", "Email & chat support", "API access"]'
171
+ cta-text="Start Free Trial"
172
+ popular="true"
173
+ ></custom-pricing-card>
174
+ <custom-pricing-card
175
+ plan="White Glove"
176
+ price="Custom"
177
+ description="Full-service automation implementation"
178
+ features='["Everything in Architect", "Dedicated automation expert", "Custom tool integration", "24/7 priority support", "SLA guarantees"]'
179
+ cta-text="Contact Sales"
180
+ popular="false"
181
+ ></custom-pricing-card>
182
+ </div>
183
+ </div>
184
+ </section>
185
+
186
+ <!-- Newsletter -->
187
+ <section class="py-20 bg-gradient-to-r from-primary to-secondary">
188
+ <div class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 text-center">
189
+ <h2 class="text-3xl font-bold text-white mb-4">Weekly Automation Tips & New Tool Alerts</h2>
190
+ <p class="text-blue-100 text-xl mb-8">Stay updated with the latest automation strategies and tool discoveries</p>
191
+ <custom-newsletter-form></custom-newsletter-form>
192
+ </div>
193
+ </section>
194
+
195
+ <!-- Footer -->
196
+ <custom-footer></custom-footer>
197
+
198
+ <!-- Component Scripts -->
199
+ <script src="components/navbar.js"></script>
200
+ <script src="components/solution-card.js"></script>
201
+ <script src="components/tools-carousel.js"></script>
202
+ <script src="components/pricing-card.js"></script>
203
+ <script src="components/newsletter-form.js"></script>
204
+ <script src="components/footer.js"></script>
205
+
206
+ <!-- Main Script -->
207
+ <script src="script.js"></script>
208
+ <script>
209
+ feather.replace();
210
+ </script>
211
+ <script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
212
+ </body>
213
+ </html>
script.js ADDED
@@ -0,0 +1,277 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Main JavaScript for UgottaConnect
2
+ document.addEventListener('DOMContentLoaded', function() {
3
+ initializeNodeVisualization();
4
+ initializeToolCarousel();
5
+ initializeNewsletterForm();
6
+ initializeDarkModeToggle();
7
+ });
8
+
9
+ // Node connection visualization
10
+ function initializeNodeVisualization() {
11
+ const container = document.getElementById('node-visualization');
12
+ if (!container) return;
13
+
14
+ const tools = [
15
+ { name: 'n8n', icon: 'box', color: 'bg-blue-500' },
16
+ { name: 'Zapier', icon: 'zap', color: 'bg-orange-500' },
17
+ { name: 'Airtable', icon: 'database', color: 'bg-purple-500' },
18
+ { name: 'Notion', icon: 'file-text', color: 'bg-gray-800' },
19
+ { name: 'GitHub', icon: 'github', color: 'bg-gray-900' },
20
+ { name: 'Stripe', icon: 'credit-card', color: 'bg-blue-600' },
21
+ { name: 'OpenAI', icon: 'cpu', color: 'bg-green-600' },
22
+ { name: 'Slack', icon: 'message-circle', color: 'bg-purple-600' },
23
+ { name: 'Google', icon: 'mail', color: 'bg-red-500' }
24
+ ];
25
+
26
+ // Create nodes
27
+ tools.forEach((tool, index) => {
28
+ const node = document.createElement('div');
29
+ node.className = `node ${tool.color} text-white flex flex-col items-center justify-center p-2 rounded-xl shadow-lg`;
30
+ node.innerHTML = `
31
+ <i data-feather="${tool.icon}"></i>
32
+ <span class="text-xs mt-1 font-medium">${tool.name}</span>
33
+ `;
34
+ container.appendChild(node);
35
+ });
36
+
37
+ // Animate connections
38
+ setTimeout(() => {
39
+ createConnections();
40
+ }, 1000);
41
+ }
42
+
43
+ function createConnections() {
44
+ const nodes = document.querySelectorAll('.node');
45
+ const container = document.getElementById('node-visualization');
46
+
47
+ nodes.forEach((node, index) => {
48
+ if (index < nodes.length - 1) {
49
+ const nextNode = nodes[index + 1];
50
+ const line = document.createElement('div');
51
+ line.className = 'connection-line';
52
+
53
+ const rect1 = node.getBoundingClientRect();
54
+ const rect2 = nextNode.getBoundingClientRect();
55
+ const containerRect = container.getBoundingClientRect();
56
+
57
+ const x1 = rect1.left + rect1.width / 2 - containerRect.left;
58
+ const y1 = rect1.top + rect1.height / 2 - containerRect.top;
59
+ const x2 = rect2.left + rect2.width / 2 - containerRect.left;
60
+ const y2 = rect2.top + rect2.height / 2 - containerRect.top;
61
+
62
+ const length = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);
63
+ const angle = Math.atan2(y2 - y1, x2 - x1) * 180 / Math.PI;
64
+
65
+ line.style.width = `${length}px`;
66
+ line.style.transform = `rotate(${angle}deg)`;
67
+ line.style.top = `${y1}px`;
68
+ line.style.left = `${x1}px`;
69
+
70
+ container.appendChild(line);
71
+ }
72
+ });
73
+ }
74
+
75
+ // Tool carousel functionality
76
+ function initializeToolCarousel() {
77
+ const carousel = document.querySelector('custom-tools-carousel');
78
+ if (!carousel) return;
79
+
80
+ let currentIndex = 0;
81
+ const tools = [
82
+ 'n8n', 'Zapier', 'Make', 'Airtable', 'Notion', 'GitHub', 'Cloudflare',
83
+ 'Stripe', 'OpenAI', 'Slack', 'Google', 'Microsoft', 'Salesforce',
84
+ 'HubSpot', 'Mailchimp', 'Twitter', 'Facebook', 'Instagram', 'YouTube'
85
+ ];
86
+
87
+ function updateCarousel() {
88
+ const shadow = carousel.shadowRoot;
89
+ if (!shadow) return;
90
+
91
+ const toolGrid = shadow.querySelector('.tool-grid');
92
+ if (!toolGrid) return;
93
+
94
+ // Rotate tools
95
+ const visibleTools = tools.slice(currentIndex, currentIndex + 8);
96
+ if (visibleTools.length < 8) {
97
+ visibleTools.push(...tools.slice(0, 8 - visibleTools.length));
98
+ }
99
+
100
+ toolGrid.innerHTML = '';
101
+ visibleTools.forEach(tool => {
102
+ const toolElement = document.createElement('div');
103
+ toolElement.className = 'tool-card bg-white p-4 rounded-xl shadow-md border border-gray-100 flex items-center justify-center hover:shadow-lg transition-all duration-300';
104
+ toolElement.innerHTML = `
105
+ <div class="text-center">
106
+ <div class="w-12 h-12 bg-gradient-to-r from-primary to-secondary rounded-lg flex items-center justify-center mx-auto mb-2">
107
+ <i data-feather="${getToolIcon(tool)}"></i>
108
+ </div>
109
+ <span class="text-sm font-medium text-gray-700">${tool}</span>
110
+ </div>
111
+ `;
112
+ toolGrid.appendChild(toolElement);
113
+ });
114
+
115
+ currentIndex = (currentIndex + 1) % tools.length;
116
+ }
117
+
118
+ // Update carousel every 3 seconds
119
+ setInterval(updateCarousel, 3000);
120
+ updateCarousel(); // Initial call
121
+ }
122
+
123
+ function getToolIcon(toolName) {
124
+ const iconMap = {
125
+ 'n8n': 'box',
126
+ 'Zapier': 'zap',
127
+ 'Make': 'settings',
128
+ 'Airtable': 'database',
129
+ 'Notion': 'file-text',
130
+ 'GitHub': 'github',
131
+ 'Cloudflare': 'cloud',
132
+ 'Stripe': 'credit-card',
133
+ 'OpenAI': 'cpu',
134
+ 'Slack': 'message-circle',
135
+ 'Google': 'mail',
136
+ 'Microsoft': 'briefcase',
137
+ 'Salesforce': 'trending-up',
138
+ 'HubSpot': 'target',
139
+ 'Mailchimp': 'send',
140
+ 'Twitter': 'twitter',
141
+ 'Facebook': 'facebook',
142
+ 'Instagram': 'instagram',
143
+ 'YouTube': 'youtube'
144
+ };
145
+ return iconMap[toolName] || 'link';
146
+ }
147
+
148
+ // Newsletter form handling
149
+ function initializeNewsletterForm() {
150
+ const form = document.querySelector('custom-newsletter-form');
151
+ if (!form) return;
152
+
153
+ form.addEventListener('submit', function(e) {
154
+ e.preventDefault();
155
+ const shadow = form.shadowRoot;
156
+ const emailInput = shadow.querySelector('input[type="email"]');
157
+ const submitBtn = shadow.querySelector('button[type="submit"]');
158
+
159
+ if (!validateEmail(emailInput.value)) {
160
+ showFormError(shadow, 'Please enter a valid email address');
161
+ return;
162
+ }
163
+
164
+ // Simulate API call
165
+ submitBtn.disabled = true;
166
+ submitBtn.innerHTML = '<div class="spinner"></div>';
167
+
168
+ setTimeout(() => {
169
+ showFormSuccess(shadow, 'Success! You\'ve been added to our newsletter.');
170
+ emailInput.value = '';
171
+ submitBtn.disabled = false;
172
+ submitBtn.textContent = 'Subscribe';
173
+ }, 1500);
174
+ });
175
+ }
176
+
177
+ function validateEmail(email) {
178
+ const re = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
179
+ return re.test(email);
180
+ }
181
+
182
+ function showFormError(shadow, message) {
183
+ let errorDiv = shadow.querySelector('.error-message');
184
+ if (!errorDiv) {
185
+ errorDiv = document.createElement('div');
186
+ errorDiv.className = 'error-message text-center mt-2';
187
+ shadow.querySelector('form').appendChild(errorDiv);
188
+ }
189
+ errorDiv.textContent = message;
190
+
191
+ setTimeout(() => {
192
+ errorDiv.textContent = '';
193
+ }, 5000);
194
+ }
195
+
196
+ function showFormSuccess(shadow, message) {
197
+ const successDiv = document.createElement('div');
198
+ successDiv.className = 'text-green-600 text-center mt-2 font-medium';
199
+ successDiv.textContent = message;
200
+ shadow.querySelector('form').appendChild(successDiv);
201
+
202
+ setTimeout(() => {
203
+ successDiv.remove();
204
+ }, 5000);
205
+ }
206
+
207
+ // Dark mode functionality
208
+ function initializeDarkModeToggle() {
209
+ const toggle = document.querySelector('[data-dark-mode-toggle]');
210
+ if (!toggle) return;
211
+
212
+ toggle.addEventListener('click', function() {
213
+ const html = document.documentElement;
214
+ if (html.classList.contains('dark')) {
215
+ html.classList.remove('dark');
216
+ localStorage.setItem('darkMode', 'false');
217
+ } else {
218
+ html.classList.add('dark');
219
+ localStorage.setItem('darkMode', 'true');
220
+ }
221
+ feather.replace();
222
+ });
223
+
224
+ // Check for saved dark mode preference
225
+ if (localStorage.getItem('darkMode') === 'true') {
226
+ document.documentElement.classList.add('dark');
227
+ }
228
+ }
229
+
230
+ // Intersection Observer for animations
231
+ function initializeScrollAnimations() {
232
+ const observer = new IntersectionObserver((entries) => {
233
+ entries.forEach(entry => {
234
+ if (entry.isIntersecting) {
235
+ entry.target.classList.add('animate-in');
236
+ }
237
+ });
238
+ }, {
239
+ threshold: 0.1
240
+ });
241
+
242
+ // Observe elements that should animate on scroll
243
+ document.querySelectorAll('.fade-in').forEach(el => {
244
+ observer.observe(el);
245
+ });
246
+ }
247
+
248
+ // API status check
249
+ async function checkAPIStatus() {
250
+ try {
251
+ const response = await fetch('https://api.ugottaconnect.com/status');
252
+ const data = await response.json();
253
+ updateStatusIndicators(data);
254
+ } catch (error) {
255
+ console.error('Failed to fetch API status:', error);
256
+ }
257
+ }
258
+
259
+ function updateStatusIndicators(statusData) {
260
+ // Update status indicators in the UI
261
+ const indicators = document.querySelectorAll('[data-api-status]');
262
+ indicators.forEach(indicator => {
263
+ const service = indicator.dataset.apiService;
264
+ if (statusData[service] === 'operational') {
265
+ indicator.className = 'w-2 h-2 bg-green-500 rounded-full';
266
+ } else {
267
+ indicator.className = 'w-2 h-2 bg-red-500 rounded-full';
268
+ }
269
+ });
270
+ }
271
+
272
+ // Initialize when DOM is loaded
273
+ if (document.readyState === 'loading') {
274
+ document.addEventListener('DOMContentLoaded', initializeScrollAnimations);
275
+ } else {
276
+ initializeScrollAnimations();
277
+ }
style.css CHANGED
@@ -1,28 +1,135 @@
1
- body {
2
- padding: 2rem;
3
- font-family: -apple-system, BlinkMacSystemFont, "Arial", sans-serif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  }
5
 
6
- h1 {
7
- font-size: 16px;
8
- margin-top: 0;
9
  }
10
 
11
- p {
12
- color: rgb(107, 114, 128);
13
- font-size: 15px;
14
- margin-bottom: 10px;
15
- margin-top: 5px;
16
  }
17
 
18
- .card {
19
- max-width: 620px;
20
- margin: 0 auto;
21
- padding: 16px;
22
- border: 1px solid lightgray;
23
- border-radius: 16px;
24
  }
25
 
26
- .card p:last-child {
27
- margin-bottom: 0;
 
28
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Custom styles for UgottaConnect */
2
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap');
3
+
4
+ * {
5
+ font-family: 'Inter', sans-serif;
6
+ }
7
+
8
+ /* Smooth scrolling */
9
+ html {
10
+ scroll-behavior: smooth;
11
+ }
12
+
13
+ /* Custom gradient backgrounds */
14
+ .gradient-bg {
15
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
16
+ }
17
+
18
+ /* Glass morphism effect */
19
+ .glass {
20
+ background: rgba(255, 255, 255, 0.1);
21
+ backdrop-filter: blur(10px);
22
+ border: 1px solid rgba(255, 255, 255, 0.2);
23
+ }
24
+
25
+ /* Node animation styles */
26
+ .node {
27
+ width: 60px;
28
+ height: 60px;
29
+ border-radius: 12px;
30
+ display: flex;
31
+ align-items: center;
32
+ justify-content: center;
33
+ transition: all 0.3s ease;
34
+ cursor: pointer;
35
+ }
36
+
37
+ .node:hover {
38
+ transform: scale(1.1);
39
+ box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15);
40
+ }
41
+
42
+ .connection-line {
43
+ position: absolute;
44
+ background: linear-gradient(90deg, #3b82f6, #8b5cf6);
45
+ height: 2px;
46
+ transform-origin: left center;
47
+ z-index: -1;
48
+ }
49
+
50
+ /* Tool card hover effects */
51
+ .tool-card {
52
+ transition: all 0.3s ease;
53
+ }
54
+
55
+ .tool-card:hover {
56
+ transform: translateY(-5px);
57
+ box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
58
  }
59
 
60
+ /* Pricing card popular badge */
61
+ .popular-badge {
62
+ background: linear-gradient(135deg, #f59e0b, #d97706);
63
  }
64
 
65
+ /* Custom scrollbar */
66
+ ::-webkit-scrollbar {
67
+ width: 8px;
 
 
68
  }
69
 
70
+ ::-webkit-scrollbar-track {
71
+ background: #f1f5f9;
 
 
 
 
72
  }
73
 
74
+ ::-webkit-scrollbar-thumb {
75
+ background: linear-gradient(135deg, #3b82f6, #8b5cf6);
76
+ border-radius: 4px;
77
  }
78
+
79
+ ::-webkit-scrollbar-thumb:hover {
80
+ background: linear-gradient(135deg, #2563eb, #7c3aed);
81
+ }
82
+
83
+ /* Animation keyframes */
84
+ @keyframes float {
85
+ 0%, 100% {
86
+ transform: translateY(0px);
87
+ }
88
+ 50% {
89
+ transform: translateY(-10px);
90
+ }
91
+ }
92
+
93
+ .float-animation {
94
+ animation: float 3s ease-in-out infinite;
95
+ }
96
+
97
+ /* Loading spinner */
98
+ .spinner {
99
+ border: 2px solid #f3f4f6;
100
+ border-top: 2px solid #3b82f6;
101
+ border-radius: 50%;
102
+ width: 20px;
103
+ height: 20px;
104
+ animation: spin 1s linear infinite;
105
+ }
106
+
107
+ @keyframes spin {
108
+ 0% { transform: rotate(0deg); }
109
+ 100% { transform: rotate(360deg); }
110
+ }
111
+
112
+ /* Responsive text sizes */
113
+ @media (max-width: 640px) {
114
+ .hero-text {
115
+ font-size: 2.5rem;
116
+ }
117
+ }
118
+
119
+ /* Focus states for accessibility */
120
+ button:focus,
121
+ a:focus {
122
+ outline: 2px solid #3b82f6;
123
+ outline-offset: 2px;
124
+ }
125
+
126
+ /* Form validation styles */
127
+ .input-error {
128
+ border-color: #ef4444;
129
+ }
130
+
131
+ .error-message {
132
+ color: #ef4444;
133
+ font-size: 0.875rem;
134
+ margin-top: 0.25rem;
135
+ }