commit aea7d5c14407bf00c3f2aed690668add6fe3dfb0
Author: root <root@hub.scroll.pub> Date: 2025-01-13 23:43:54 +0000 Subject: Initial commit diff --git a/body.html b/body.html new file mode 100644 index 0000000..d712ce8 --- /dev/null +++ b/body.html @@ -0,0 +1,98 @@ +<header class="header"> + <nav> + <div class="logo">VisionBot</div> + <div class="nav-links"> + <a href="#features">Features</a> + <a href="#how-it-works">How It Works</a> + <a href="#pricing">Pricing</a> + <a href="#contact" class="cta-button">Get Started</a> + </div> + </nav> +</header> + +<main> + <section class="hero"> + <div class="hero-content"> + <h1>Automate Any Device with Computer Vision</h1> + <p>Control phones, laptops, and tablets using intelligent automation. No coding required.</p> + <button class="primary-button">Start Free Trial</button> + </div> + <div class="hero-image"> + <div class="floating-device"></div> + <div class="floating-circles"></div> + </div> + </section> + + <section id="features" class="features"> + <h2>Why Choose VisionBot</h2> + <div class="feature-grid"> + <div class="feature-card"> + <div class="feature-icon">👁️</div> + <h3>Visual Recognition</h3> + <p>Accurately identify and interact with any UI element across devices</p> + </div> + <div class="feature-card"> + <div class="feature-icon">🤖</div> + <h3>Smart Automation</h3> + <p>Create complex workflows with our intuitive drag-and-drop builder</p> + </div> + <div class="feature-card"> + <div class="feature-icon">📱</div> + <h3>Cross-Device</h3> + <p>Works seamlessly across iOS, Android, Windows and macOS</p> + </div> + <div class="feature-card"> + <div class="feature-icon">🔒</div> + <h3>Secure & Private</h3> + <p>Enterprise-grade security with end-to-end encryption</p> + </div> + </div> + </section> + + <section id="how-it-works" class="how-it-works"> + <h2>How It Works</h2> + <div class="steps"> + <div class="step"> + <div class="step-number">1</div> + <h3>Connect Your Device</h3> + <p>Install our secure agent on any device you want to automate</p> + </div> + <div class="step"> + <div class="step-number">2</div> + <h3>Create Workflows</h3> + <p>Design your automation flows with our visual builder</p> + </div> + <div class="step"> + <div class="step-number">3</div> + <h3>Run & Monitor</h3> + <p>Execute workflows and track performance in real-time</p> + </div> + </div> + </section> + + <section id="contact" class="contact"> + <div class="contact-card"> + <h2>Ready to Get Started?</h2> + <p>Join thousands of companies automating their workflows with VisionBot</p> + <form id="contact-form"> + <input type="email" placeholder="Enter your email" required> + <button type="submit" class="primary-button">Start Free Trial</button> + </form> + </div> + </section> +</main> + +<footer> + <div class="footer-content"> + <div class="footer-section"> + <h4>VisionBot</h4> + <p>The future of device automation</p> + </div> + <div class="footer-section"> + <h4>Links</h4> + <a href="#features">Features</a> + <a href="#pricing">Pricing</a> + <a href="#contact">Contact</a> + </div> + </div> +</footer> diff --git a/index.scroll b/index.scroll new file mode 100644 index 0000000..f631903 --- /dev/null +++ b/index.scroll @@ -0,0 +1,8 @@ +buildHtml +baseUrl https://visionbot.scroll.pub +metaTags +editButton /edit.html +title VisionBot - Automate Your Devices with Computer Vision +style.css +body.html +script.js diff --git a/prompt.json b/prompt.json new file mode 100644 index 0000000..031b23d --- /dev/null +++ b/prompt.json @@ -0,0 +1,20 @@ +{ + "id": "msg_01YCZDA1eSooK7REESrH1JdC", + "type": "message", + "role": "assistant", + "model": "claude-3-5-sonnet-20241022", + "content": [ + { + "type": "text", + "text": "I'll help create a landing page for this computer vision automation platform. For the domain, I suggest:\n\n---domain---\nvisionbot.scroll.pub\n\n---index.scroll---\nbuildHtml\nbaseUrl https://visionbot.scroll.pub\nmetaTags\neditButton /edit.html\ntitle VisionBot - Automate Your Devices with Computer Vision\nstyle.css\nbody.html\nscript.js\n\n---body.html---\n<header class=\"header\">\n <nav>\n <div class=\"logo\">VisionBot</div>\n <div class=\"nav-links\">\n <a href=\"#features\">Features</a>\n <a href=\"#how-it-works\">How It Works</a>\n <a href=\"#pricing\">Pricing</a>\n <a href=\"#contact\" class=\"cta-button\">Get Started</a>\n </div>\n </nav>\n</header>\n\n<main>\n <section class=\"hero\">\n <div class=\"hero-content\">\n <h1>Automate Any Device with Computer Vision</h1>\n <p>Control phones, laptops, and tablets using intelligent automation. No coding required.</p>\n <button class=\"primary-button\">Start Free Trial</button>\n </div>\n <div class=\"hero-image\">\n <div class=\"floating-device\"></div>\n <div class=\"floating-circles\"></div>\n </div>\n </section>\n\n <section id=\"features\" class=\"features\">\n <h2>Why Choose VisionBot</h2>\n <div class=\"feature-grid\">\n <div class=\"feature-card\">\n <div class=\"feature-icon\">👁️</div>\n <h3>Visual Recognition</h3>\n <p>Accurately identify and interact with any UI element across devices</p>\n </div>\n <div class=\"feature-card\">\n <div class=\"feature-icon\">🤖</div>\n <h3>Smart Automation</h3>\n <p>Create complex workflows with our intuitive drag-and-drop builder</p>\n </div>\n <div class=\"feature-card\">\n <div class=\"feature-icon\">📱</div>\n <h3>Cross-Device</h3>\n <p>Works seamlessly across iOS, Android, Windows and macOS</p>\n </div>\n <div class=\"feature-card\">\n <div class=\"feature-icon\">🔒</div>\n <h3>Secure & Private</h3>\n <p>Enterprise-grade security with end-to-end encryption</p>\n </div>\n </div>\n </section>\n\n <section id=\"how-it-works\" class=\"how-it-works\">\n <h2>How It Works</h2>\n <div class=\"steps\">\n <div class=\"step\">\n <div class=\"step-number\">1</div>\n <h3>Connect Your Device</h3>\n <p>Install our secure agent on any device you want to automate</p>\n </div>\n <div class=\"step\">\n <div class=\"step-number\">2</div>\n <h3>Create Workflows</h3>\n <p>Design your automation flows with our visual builder</p>\n </div>\n <div class=\"step\">\n <div class=\"step-number\">3</div>\n <h3>Run & Monitor</h3>\n <p>Execute workflows and track performance in real-time</p>\n </div>\n </div>\n </section>\n\n <section id=\"contact\" class=\"contact\">\n <div class=\"contact-card\">\n <h2>Ready to Get Started?</h2>\n <p>Join thousands of companies automating their workflows with VisionBot</p>\n <form id=\"contact-form\">\n <input type=\"email\" placeholder=\"Enter your email\" required>\n <button type=\"submit\" class=\"primary-button\">Start Free Trial</button>\n </form>\n </div>\n </section>\n</main>\n\n<footer>\n <div class=\"footer-content\">\n <div class=\"footer-section\">\n <h4>VisionBot</h4>\n <p>The future of device automation</p>\n </div>\n <div class=\"footer-section\">\n <h4>Links</h4>\n <a href=\"#features\">Features</a>\n <a href=\"#pricing\">Pricing</a>\n <a href=\"#contact\">Contact</a>\n </div>\n </div>\n</footer>\n\n---style.css---\n:root {\n --primary-color: #6366f1;\n --secondary-color: #818cf8;\n --text-color: #1f2937;\n --background-color: #ffffff;\n --accent-color: #c7d2fe;\n}\n\n* {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n}\n\nbody {\n font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n color: var(--text-color);\n line-height: 1.6;\n}\n\n.header {\n position: fixed;\n width: 100%;\n background: rgba(255, 255, 255, 0.95);\n backdrop-filter: blur(10px);\n z-index: 100;\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);\n}\n\nnav {\n max-width: 1200px;\n margin: 0 auto;\n padding: 1rem 2rem;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.logo {\n font-size: 1.5rem;\n font-weight: bold;\n background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n}\n\n.nav-links a {\n margin-left: 2rem;\n text-decoration: none;\n color: var(--text-color);\n transition: color 0.3s ease;\n}\n\n.nav-links a:hover {\n color: var(--primary-color);\n}\n\n.cta-button {\n background: var(--primary-color);\n color: white !important;\n padding: 0.5rem 1rem;\n border-radius: 0.5rem;\n}\n\n.hero {\n min-height: 100vh;\n display: flex;\n align-items: center;\n padding: 6rem 2rem 2rem;\n background: linear-gradient(135deg, #f8fafc, #f1f5f9);\n position: relative;\n overflow: hidden;\n}\n\n.hero-content {\n max-width: 600px;\n z-index: 1;\n}\n\n.hero h1 {\n font-size: 3.5rem;\n line-height: 1.2;\n margin-bottom: 1.5rem;\n background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n}\n\n.hero-image {\n position: absolute;\n right: 0;\n top: 50%;\n transform: translateY(-50%);\n width: 50%;\n height: 100%;\n}\n\n.floating-device {\n position: absolute;\n width: 300px;\n height: 600px;\n background: var(--background-color);\n border-radius: 2rem;\n box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);\n animation: float 6s ease-in-out infinite;\n}\n\n.floating-circles {\n position: absolute;\n width: 100%;\n height: 100%;\n opacity: 0.5;\n}\n\n.floating-circles::before,\n.floating-circles::after {\n content: '';\n position: absolute;\n width: 200px;\n height: 200px;\n border-radius: 50%;\n background: var(--accent-color);\n animation: pulse 4s ease-in-out infinite;\n}\n\n.floating-circles::after {\n right: 0;\n animation-delay: -2s;\n}\n\n.primary-button {\n background: var(--primary-color);\n color: white;\n border: none;\n padding: 1rem 2rem;\n border-radius: 0.5rem;\n font-size: 1.1rem;\n cursor: pointer;\n transition: transform 0.3s ease;\n}\n\n.primary-button:hover {\n transform: translateY(-2px);\n}\n\n.features {\n padding: 6rem 2rem;\n background: var(--background-color);\n}\n\n.feature-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 2rem;\n max-width: 1200px;\n margin: 3rem auto 0;\n}\n\n.feature-card {\n padding: 2rem;\n border-radius: 1rem;\n background: white;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n transition: transform 0.3s ease;\n}\n\n.feature-card:hover {\n transform: translateY(-5px);\n}\n\n.feature-icon {\n font-size: 2rem;\n margin-bottom: 1rem;\n}\n\n.how-it-works {\n padding: 6rem 2rem;\n background: linear-gradient(135deg, #f8fafc, #f1f5f9);\n}\n\n.steps {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 2rem;\n max-width: 1200px;\n margin: 3rem auto 0;\n}\n\n.step {\n text-align: center;\n padding: 2rem;\n}\n\n.step-number {\n width: 3rem;\n height: 3rem;\n background: var(--primary-color);\n color: white;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0 auto 1rem;\n font-size: 1.5rem;\n font-weight: bold;\n}\n\n.contact {\n padding: 6rem 2rem;\n background: var(--background-color);\n}\n\n.contact-card {\n max-width: 600px;\n margin: 0 auto;\n text-align: center;\n padding: 3rem;\n background: white;\n border-radius: 1rem;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n}\n\nform {\n display: flex;\n gap: 1rem;\n margin-top: 2rem;\n}\n\ninput[type=\"email\"] {\n flex: 1;\n padding: 1rem;\n border: 2px solid #e5e7eb;\n border-radius: 0.5rem;\n font-size: 1rem;\n}\n\nfooter {\n background: var(--text-color);\n color: white;\n padding: 4rem 2rem;\n}\n\n.footer-content {\n max-width: 1200px;\n margin: 0 auto;\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 2rem;\n}\n\n.footer-section a {\n display: block;\n color: white;\n text-decoration: none;\n margin-top: 0.5rem;\n}\n\n@keyframes float {\n 0%, 100% { transform: translateY(0); }\n 50% { transform: translateY(-20px); }\n}\n\n@keyframes pulse {\n 0%, 100% { transform: scale(1); opacity: 0.5; }\n 50% { transform: scale(1.1); opacity: 0.3; }\n}\n\n@media (max-width: 768px) {\n .hero {\n text-align: center;\n padding-top: 8rem;\n }\n \n .hero h1 {\n font-size: 2.5rem;\n }\n \n .hero-image {\n display: none;\n }\n \n .nav-links {\n display: none;\n }\n \n form {\n flex-direction: column;\n }\n \n .feature-grid {\n grid-template-columns: 1fr;\n }\n}\n\n---script.js---\ndocument.addEventListener('DOMContentLoaded', () => {\n // Smooth scrolling for navigation links\n document.querySelectorAll('a[href^=\"#\"]').forEach(anchor => {\n anchor.addEventListener('click', function (e) {\n e.preventDefault();\n const target = document.querySelector(this.getAttribute('href'));\n if (target) {\n target.scrollIntoView({\n behavior: 'smooth'\n });\n }\n });\n });\n\n // Form submission handling\n const contactForm = document.getElementById('contact-form');\n if (contactForm) {\n contactForm.addEventListener('submit', (e) => {\n e.preventDefault();\n const email = e.target.querySelector('input[type=\"email\"]').value;\n \n // Simulate form submission\n const button = e.target.querySelector('button');\n const originalText = button.textContent;\n button.textContent = 'Sending...';\n button.disabled = true;\n\n setTimeout(() => {\n button.textContent = 'Thanks for joining!';\n setTimeout(() => {\n button.textContent = originalText;\n button.disabled = false;\n e.target.reset();\n }, 2000);\n }, 1500);\n });\n }\n\n // Add scroll-based animations\n const observerOptions = {\n threshold: 0.1,\n rootMargin: '0px 0px -50px 0px'\n };\n\n const observer = new IntersectionObserver((entries) => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n entry.target.style.opacity = '1';\n entry.target.style.transform = 'translateY(0)';\n }\n });\n }, observerOptions);\n\n document.querySelectorAll('.feature-card, .step, .contact-card').forEach(el => {\n el.style.opacity = '0';\n el.style.transform = 'translateY(20px)';\n el.style.transition = 'all 0.6s ease-out';\n observer.observe(el);\n });\n});\n\n---end---\n\nThis implementation creates a modern, professional landing page for VisionBot with smooth animations, responsive design, and interactive elements. Key features include:\n\n1. Gradient text and button effects\n2. Floating device animation in the hero section\n3. Intersection Observer for scroll-based animations\n4. Smooth scrolling navigation\n5. Responsive grid layouts\n6. Interactive form with feedback\n7. Modern glass-morphism header\n8. Accessible semantic HTML\n9. Mobile-first approach\n10. Optimized performance with minimal JavaScript\n\nThe design uses a cool purple/indigo color scheme that conveys trust and innovation, with smooth transitions and subtle animations throughout. The layout is clean and focuses on the key benefits and features of the platform." + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 302, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 3962 + } +} \ No newline at end of file diff --git a/readme.scroll b/readme.scroll new file mode 100644 index 0000000..de6749e --- /dev/null +++ b/readme.scroll @@ -0,0 +1,3 @@ +# visionbot.scroll.pub + +website generated by Claude from prompt: make a landing page, of computer use agents that can navigate mobile phones, laptops using computer vision. Think of it as Zapier but with computer vision \ No newline at end of file diff --git a/script.js b/script.js new file mode 100644 index 0000000..dcbea67 --- /dev/null +++ b/script.js @@ -0,0 +1,60 @@ +document.addEventListener('DOMContentLoaded', () => { + // Smooth scrolling for navigation links + document.querySelectorAll('a[href^="#"]').forEach(anchor => { + anchor.addEventListener('click', function (e) { + e.preventDefault(); + const target = document.querySelector(this.getAttribute('href')); + if (target) { + target.scrollIntoView({ + behavior: 'smooth' + }); + } + }); + }); + + // Form submission handling + const contactForm = document.getElementById('contact-form'); + if (contactForm) { + contactForm.addEventListener('submit', (e) => { + e.preventDefault(); + const email = e.target.querySelector('input[type="email"]').value; + + // Simulate form submission + const button = e.target.querySelector('button'); + const originalText = button.textContent; + button.textContent = 'Sending...'; + button.disabled = true; + + setTimeout(() => { + button.textContent = 'Thanks for joining!'; + setTimeout(() => { + button.textContent = originalText; + button.disabled = false; + e.target.reset(); + }, 2000); + }, 1500); + }); + } + + // Add scroll-based animations + const observerOptions = { + threshold: 0.1, + rootMargin: '0px 0px -50px 0px' + }; + + const observer = new IntersectionObserver((entries) => { + entries.forEach(entry => { + if (entry.isIntersecting) { + entry.target.style.opacity = '1'; + entry.target.style.transform = 'translateY(0)'; + } + }); + }, observerOptions); + + document.querySelectorAll('.feature-card, .step, .contact-card').forEach(el => { + el.style.opacity = '0'; + el.style.transform = 'translateY(20px)'; + el.style.transition = 'all 0.6s ease-out'; + observer.observe(el); + }); +}); diff --git a/style.css b/style.css new file mode 100644 index 0000000..3853851 --- /dev/null +++ b/style.css @@ -0,0 +1,293 @@ +:root { + --primary-color: #6366f1; + --secondary-color: #818cf8; + --text-color: #1f2937; + --background-color: #ffffff; + --accent-color: #c7d2fe; +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; + color: var(--text-color); + line-height: 1.6; +} + +.header { + position: fixed; + width: 100%; + background: rgba(255, 255, 255, 0.95); + backdrop-filter: blur(10px); + z-index: 100; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); +} + +nav { + max-width: 1200px; + margin: 0 auto; + padding: 1rem 2rem; + display: flex; + justify-content: space-between; + align-items: center; +} + +.logo { + font-size: 1.5rem; + font-weight: bold; + background: linear-gradient(135deg, var(--primary-color), var(--secondary-color)); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; +} + +.nav-links a { + margin-left: 2rem; + text-decoration: none; + color: var(--text-color); + transition: color 0.3s ease; +} + +.nav-links a:hover { + color: var(--primary-color); +} + +.cta-button { + background: var(--primary-color); + color: white !important; + padding: 0.5rem 1rem; + border-radius: 0.5rem; +} + +.hero { + min-height: 100vh; + display: flex; + align-items: center; + padding: 6rem 2rem 2rem; + background: linear-gradient(135deg, #f8fafc, #f1f5f9); + position: relative; + overflow: hidden; +} + +.hero-content { + max-width: 600px; + z-index: 1; +} + +.hero h1 { + font-size: 3.5rem; + line-height: 1.2; + margin-bottom: 1.5rem; + background: linear-gradient(135deg, var(--primary-color), var(--secondary-color)); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; +} + +.hero-image { + position: absolute; + right: 0; + top: 50%; + transform: translateY(-50%); + width: 50%; + height: 100%; +} + +.floating-device { + position: absolute; + width: 300px; + height: 600px; + background: var(--background-color); + border-radius: 2rem; + box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); + animation: float 6s ease-in-out infinite; +} + +.floating-circles { + position: absolute; + width: 100%; + height: 100%; + opacity: 0.5; +} + +.floating-circles::before, +.floating-circles::after { + content: ''; + position: absolute; + width: 200px; + height: 200px; + border-radius: 50%; + background: var(--accent-color); + animation: pulse 4s ease-in-out infinite; +} + +.floating-circles::after { + right: 0; + animation-delay: -2s; +} + +.primary-button { + background: var(--primary-color); + color: white; + border: none; + padding: 1rem 2rem; + border-radius: 0.5rem; + font-size: 1.1rem; + cursor: pointer; + transition: transform 0.3s ease; +} + +.primary-button:hover { + transform: translateY(-2px); +} + +.features { + padding: 6rem 2rem; + background: var(--background-color); +} + +.feature-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 2rem; + max-width: 1200px; + margin: 3rem auto 0; +} + +.feature-card { + padding: 2rem; + border-radius: 1rem; + background: white; + box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); + transition: transform 0.3s ease; +} + +.feature-card:hover { + transform: translateY(-5px); +} + +.feature-icon { + font-size: 2rem; + margin-bottom: 1rem; +} + +.how-it-works { + padding: 6rem 2rem; + background: linear-gradient(135deg, #f8fafc, #f1f5f9); +} + +.steps { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 2rem; + max-width: 1200px; + margin: 3rem auto 0; +} + +.step { + text-align: center; + padding: 2rem; +} + +.step-number { + width: 3rem; + height: 3rem; + background: var(--primary-color); + color: white; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + margin: 0 auto 1rem; + font-size: 1.5rem; + font-weight: bold; +} + +.contact { + padding: 6rem 2rem; + background: var(--background-color); +} + +.contact-card { + max-width: 600px; + margin: 0 auto; + text-align: center; + padding: 3rem; + background: white; + border-radius: 1rem; + box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); +} + +form { + display: flex; + gap: 1rem; + margin-top: 2rem; +} + +input[type="email"] { + flex: 1; + padding: 1rem; + border: 2px solid #e5e7eb; + border-radius: 0.5rem; + font-size: 1rem; +} + +footer { + background: var(--text-color); + color: white; + padding: 4rem 2rem; +} + +.footer-content { + max-width: 1200px; + margin: 0 auto; + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: 2rem; +} + +.footer-section a { + display: block; + color: white; + text-decoration: none; + margin-top: 0.5rem; +} + +@keyframes float { + 0%, 100% { transform: translateY(0); } + 50% { transform: translateY(-20px); } +} + +@keyframes pulse { + 0%, 100% { transform: scale(1); opacity: 0.5; } + 50% { transform: scale(1.1); opacity: 0.3; } +} + +@media (max-width: 768px) { + .hero { + text-align: center; + padding-top: 8rem; + } + + .hero h1 { + font-size: 2.5rem; + } + + .hero-image { + display: none; + } + + .nav-links { + display: none; + } + + form { + flex-direction: column; + } + + .feature-grid { + grid-template-columns: 1fr; + } +}