commit b5113203c2d3e23b87aedfe2fb875041b9adb000 Author: Oliver Date: Thu Jul 24 17:32:53 2025 -0300 init diff --git a/app.js b/app.js new file mode 100644 index 0000000..0ff60c1 --- /dev/null +++ b/app.js @@ -0,0 +1,147 @@ +// Accordion script +const accTitles = document.querySelectorAll('.accordion-title'); + +accTitles.forEach(title => { + title.addEventListener('click', () => { + // Close all other accordions + accTitles.forEach(otherTitle => { + if (otherTitle !== title) { + otherTitle.classList.remove('active'); + otherTitle.nextElementSibling.style.display = 'none'; + } + }); + + // Toggle the clicked one + const content = title.nextElementSibling; + const isOpen = content.style.display === 'block'; + title.classList.toggle('active'); + content.style.display = isOpen ? 'none' : 'block'; + }); +}); + +// Slider script +const slides = document.querySelectorAll('.slide'); +let currentIndex = 0; + +function nextSlide() { + if (slides.length === 0) return; + + slides[currentIndex].classList.remove('active'); + currentIndex = (currentIndex + 1) % slides.length; + slides[currentIndex].classList.add('active'); +} + +// Initial display +if (slides.length > 0) { + slides[currentIndex].classList.add('active'); + // Change slide every 10 seconds + setInterval(nextSlide, 10000); +} + +// Chat widget script +(function () { + const preamble = ` +We use what we preach — this chatbot is powered by our own n8n automation 🤖 to help you quickly find what you need. + +Want to talk to a real automation expert? Just buy a service pack 💼 — it includes a 1-hour get-to-know session with our team 👥. + +If it’s not the right fit, no worries — we’ll refund you 💸. +`; + + const logo="logo.svg" + const api='https://ai.odoo4projects.com/webhook/81742473-b50b-4845-a5f9-916d9fe60876/chat' + + // Elements + const chatToggle = document.getElementById('cw-chatToggle'); + const chatWidget = document.getElementById('cw-chatWidget'); + const chatForm = document.getElementById('cw-chatForm'); + const chatInput = document.getElementById('cw-chatInput'); + const chatMessages = document.getElementById('cw-chatMessages'); + const sessionId = crypto.randomUUID(); + + let chatOpened = false; + + function appendMessage(text, sender) { + const msg = document.createElement('div'); + msg.classList.add('mywidget-message', sender === 'user' ? 'user' : 'bot'); + msg.innerHTML = text; + + chatMessages.appendChild(msg); + chatMessages.scrollTop = chatMessages.scrollHeight; + } + + chatToggle.addEventListener('click', () => { + const isVisible = chatWidget.classList.toggle('active'); + if (isVisible && !chatOpened) { + appendMessage( + preamble, + 'bot' + ); + chatOpened = true; + } + }); + + chatForm.addEventListener('submit', async (e) => { + e.preventDefault(); + const input = chatInput.value.trim(); + if (!input) return; + appendMessage(input, 'user'); + chatInput.value = ''; + chatInput.focus(); + + try { + const response = await fetch(api, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ action: 'sendMessage', sessionId, chatInput: input }) + }); + + const data = await response.json(); + appendMessage(data.output, 'bot'); + } catch (error) { + appendMessage('Fehler beim Verbinden mit dem Server. Bitte versuchen Sie es später erneut.', 'bot'); + console.error(error); + } + }); + + function handleBuyClick(buttonId, message) { + const btn = document.getElementById(buttonId); + if (!btn) return; + + btn.addEventListener('click', (e) => { + e.preventDefault(); + + // Open chat if not already visible + if (!chatWidget.classList.contains('active')) { + chatWidget.classList.add('active'); + if (!chatOpened) { + appendMessage(preamble, 'bot'); + chatOpened = true; + } + } + + // Send predefined message + appendMessage(message, 'user'); + + fetch(api, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ action: 'sendMessage', sessionId, chatInput: message }) + }) + .then((response) => response.json()) + .then((data) => { + appendMessage(data.output, 'bot'); + }) + .catch((error) => { + appendMessage('Fehler beim Verbinden mit dem Server. Bitte versuchen Sie es später erneut.', 'bot'); + console.error(error); + }); + }); + } + + // Attach all three buttons + handleBuyClick('buy-3h', 'I want to buy the 3 Hours pack for $450.'); + handleBuyClick('buy-5h', 'I want to buy the 5 Hours pack for $675.'); + handleBuyClick('buy-10h', 'I want to buy the 10 Hours pack for $1200.'); + handleBuyClick('buy-bundle', 'I want to buy the ODOO and N8N bundle for $395 per year.'); +})(); \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..20ebe3d --- /dev/null +++ b/index.html @@ -0,0 +1,348 @@ + + + + + + + + + OD8N - Odoo & n8n Automation Experts + + + + + +
+
+ Logo +
+
Kundenservice
+
+
+ + +
+
+ + + + + + + + + + + + + + + + + +
+
+

OD8N - Odoo & n8n Automation Experts

+

We charge upfront — this lets us skip the sales talk and give serious clients immediate access to our best engineers.

+
    +
  • One-hour get-to-know session included — not satisfied? Full refund, no questions asked
  • +
  • Experts in Odoo and n8n — no outsourcing, no fluff
  • +
  • Hosting solutions for Odoo & n8n available
  • +
  • Custom development tailored to your workflows
  • +
+ +
+
+ + +
+

Our OD8N Service Packs for Odoo & n8n Automation

+
+
+

3 Hours

+

Quick fixes and small automation improvements.

+ $450 + Choose Plan +
+ +
+

10 Hours

+

Perfect for large projects and advanced automation.

+ $1.200 + Choose Plan +
+ + + + +
+

ODOO & N8N Bundle

+

Perfect for taking conrtol over your company automation installation.

+ $395 per Year + Choose Plan +
+ + + + + + + +
+

All hour packs include 1 Free Consulting Hour for first clients — with a 100% refund if you’re not satisfied!

+
+ + +
+ + +
+
+
+ Oliver Arnold, Odoo & System Design Expert at OD8N +
+
+

Oliver Arnold

+

Expert in Odoo & System Design

+

I am an expert in Odoo and system design with years of experience in consulting.

+
    +
  • Odoo functional consulting & development
  • +
  • N8N workflow design & custom nodes
  • +
  • System integration & architecture design
  • +
+
+
+
+ + +
+
+
+ Mark Gutmann, AI and Process Consulting Expert at OD8N +
+
+

Mark Gutmann

+

Expert in AI and Process Consulting

+

I am an expert in Odoo and system design with years of experience in consulting.

+
    +
  • Odoo functional consulting & development
  • +
  • N8N workflow design & custom nodes
  • +
  • System integration & architecture design
  • +
+
+
+
+ + +
+ + +
+

OD8N Success Stories in Automation

+
+
+ +
+
+

The Challenge: No API, No Problem.

+

+ A growing retail client was struggling with a major operational bottleneck: their shipping provider offered no API for tracking. This meant hours of manual data entry, a high risk of errors, and no real-time visibility into their 800+ daily shipments. +

+

+ We engineered a robust solution using n8n and Puppeteer to create a custom web scraper. This automated system intelligently mimics human interaction to extract shipment statuses twice daily, ensuring near real-time accuracy. +

+

+ The Result: Complete automation, zero manual entry, and a system that provides flawless, up-to-the-minute tracking data. All running seamlessly on our n8n community instance. +

+ +
+
+
+
+ +
+
+

The Challenge: Global Scale, Local Management

+

+ ODOO4projects needed to instantly deploy new Odoo instances for clients worldwide, a process that was manual, time-consuming, and prone to configuration errors. They required a system that could scale globally and provide centralized oversight. +

+

+ We built a smart agent powered by an n8n workflow that completely automates the provisioning of Odoo instances. The system also generates a weekly server status report, providing a clear, consolidated view of their entire infrastructure. +

+

+ The Result: A fully automated, scalable, and reliable system for Odoo instance management, all running on our cost-effective n8n community instance. +

+ +
+
+
+
+ +
+
+

The Challenge: Unlocking the Power of Conversational AI

+

+ A client wanted to move beyond a basic FAQ chatbot. They needed an intelligent agent that could handle complex internal tasks, provide instant knowledge base access, and integrate seamlessly with their Odoo chatter. +

+

+ Leveraging powerful OCA modules and an n8n-powered backend, we built a sophisticated AI agent. This solution connects to LLMs, agents, and RAG pipelines, transforming their Odoo chatter into a powerful, intelligent hub for communication and task management. +

+

+ The Result: A truly intelligent conversational AI that streamlines employee onboarding, provides instant knowledge access, and can be embedded on any website. +

+ +
+
+
+ +
+ +
+
+

The Challenge: Reinventing the Sales Funnel

+

+ We asked ourselves: could we transform a simple conversation into a complete sales transaction? The goal was to create a frictionless procurement workflow that eliminates the need for emails, forms, and spreadsheets. +

+

+ Using only n8n and PayPal, we built a revolutionary checkout process that lives entirely within a chatbox. This allows for a seamless, conversational sales experience, from initial inquiry to final purchase. +

+

+ The Result: A groundbreaking, conversational commerce solution that redefines the client interaction and digital selling. Ready to see it in action? +

+ +
+
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/logo.svg b/logo.svg new file mode 100644 index 0000000..c4c2e77 --- /dev/null +++ b/logo.svg @@ -0,0 +1,50 @@ + + + + + + + + + diff --git a/mark.webp b/mark.webp new file mode 100644 index 0000000..cac1930 Binary files /dev/null and b/mark.webp differ diff --git a/oliver.webp b/oliver.webp new file mode 100644 index 0000000..4f94d47 Binary files /dev/null and b/oliver.webp differ diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..6a47c08 --- /dev/null +++ b/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Allow: / + +Sitemap: https://www.od8n.com/sitemap.xml \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..c6ea99e --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,9 @@ + + + + https://www.od8n.com/ + 2025-07-24 + monthly + 1.0 + + \ No newline at end of file diff --git a/style.css b/style.css new file mode 100644 index 0000000..7e60fae --- /dev/null +++ b/style.css @@ -0,0 +1,421 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: 'Arial', sans-serif; + color: #333; + line-height: 1.6; + background: #f9f9f9; +} + +/* Hero Section */ +.hero { + background: linear-gradient(to right, #4a90e2, #0070c0); + color: #fff; + text-align: center; + padding: 80px 20px; +} + +.hero h1 { + font-size: 2.5rem; + margin-bottom: 20px; +} + +.hero p { + font-size: 1.2rem; + margin-bottom: 30px; +} + +.btn-primary { + background: #fff; + color: #0070c0; + padding: 12px 24px; + text-decoration: none; + border-radius: 25px; + font-weight: bold; + transition: background 0.3s; +} + +.btn-primary:hover { + background: #e0e0e0; +} + +/* Packages */ +.packages { + text-align: center; + padding: 60px 20px; + background: #fff; +} + +.packages h2 { + font-size: 2rem; + margin-bottom: 40px; +} + +.package-list { + display: flex; + justify-content: center; + flex-wrap: wrap; + gap: 20px; +} + +.package { + background: #f5f5f5; + padding: 20px; + border-radius: 12px; + width: 250px; + transition: transform 0.3s; +} + +.package:hover { + transform: translateY(-5px); +} + +.package.featured { + border: 2px solid #0070c0; + background: #eaf4ff; +} + +.price { + font-size: 1.5rem; + color: #0070c0; + display: block; + margin: 15px 0; +} + +.btn-secondary { + background: #0070c0; + color: #fff; + padding: 10px 20px; + text-decoration: none; + border-radius: 20px; + transition: background 0.3s; +} + +.btn-secondary:hover { + background: #005a9e; +} + +.free-offer { + margin-top: 20px; + font-style: italic; +} + +.slider-section { + position: relative; + height: 500px; /* Adjust as needed */ + overflow: hidden; +} + +.slider { + position: relative; + height: 400px; /* Or auto if content is static height */ + overflow: hidden; +} + + .slide { + top: 0; + left: 0; + display: flex; + justify-content: center; + align-items: center; + padding: 40px; + background: linear-gradient(135deg, #f0f4f8, #d9e4f5); + border-radius: 16px; + opacity: 0; + position: absolute; + transition: opacity 1s ease-in-out; + width: 100%; + box-shadow: 0 8px 20px rgba(0, 0, 0, 0.1); + z-index: 1; + } + + .slide-content { + display: flex; + flex-wrap: wrap; + max-width: 1000px; + align-items: center; + gap: 40px; + } + + .slide-image img { + max-width: 300px; + border-radius: 16px; + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2); + } + + .slide-text { + flex: 1; + min-width: 250px; + } + + .slide-text h2 { + font-size: 2rem; + margin-bottom: 8px; + color: #222; + } + + .slide-text h4 { + font-size: 1.2rem; + color: #666; + margin-bottom: 16px; + } + + .slide-text p { + font-size: 1rem; + color: #444; + margin-bottom: 20px; + line-height: 1.5; + } + + .slide-text ul { + list-style-type: disc; + padding-left: 20px; + color: #333; + } + + .slide-text ul li { + margin-bottom: 8px; + font-size: 1rem; + } + + @media (max-width: 768px) { + .slide-content { + flex-direction: column; + text-align: center; + } + + .slide-image img { + max-width: 80%; + } + } + + + .slide.active { + opacity: 1; + z-index: 2; + } + + + + +/* Accordion */ +.accordion-section { + padding: 60px 20px; + background: #fff; +} + +.accordion-item { + margin-bottom: 10px; +} + +.accordion-title { + background: #0070c0; + color: #fff; + padding: 15px; + border: none; + width: 100%; + text-align: left; + font-size: 1rem; + cursor: pointer; + border-radius: 8px; +} + +.accordion-title.active { + background: #005a9e; +} + +.accordion-content { + display: none; + padding: 15px; + background: #f1f1f1; + border-radius: 0 0 8px 8px; +} + +/* Footer */ +footer { + text-align: center; + padding: 20px; + background: #333; + color: #fff; + font-size: 0.9rem; +} +.hero-list { + list-style: none; + text-align: left; + max-width: 600px; + margin: 30px auto 0; + padding: 0; + font-size: 1.1rem; +} + +.hero-list li { + margin-bottom: 12px; + padding-left: 28px; + position: relative; +} + +.hero-list li::before { + content: "✔"; + position: absolute; + left: 0; + color: #fff; + background: #0070c0; + border-radius: 50%; + width: 20px; + height: 20px; + text-align: center; + line-height: 20px; + font-size: 0.9rem; +} + +/* cw.css */ + +/* Container */ +#cw-chatToggle { + position: fixed; + bottom: 24px; + right: 24px; + background-color: #FFA500; + color: white; + padding: 12px 16px; + border-radius: 25px; + font-weight: 600; + cursor: pointer; + display: flex; + flex-direction: column; + align-items: center; + gap: 4px; + z-index: 100000; + border: none; + user-select: none; + transition: background-color 0.3s ease; +} +#cw-chatToggle:hover { + transform: translateY(-5px); +} +#cw-chatToggle div { + display: flex; + align-items: center; + gap: 8px; +} +#cw-chatToggle img { + width: 120px; + height: 40px; +} +#cw-chatToggle span.text-sm { + font-weight: 500; + font-size: 0.875rem; /* 14px */ +} +#cw-chatToggle span.text-xs { + font-size: 0.75rem; /* 12px */ +} + +/* Chat widget container */ +#cw-chatWidget { + display: none; + position: fixed; + bottom: 100px; + right: 24px; + width: 500px; + max-height: 70vh; + background: white; + border: 1px solid #ccc; + border-radius: 12px; + flex-direction: column; + z-index: 100000; + font-family: system-ui, sans-serif; +} +#cw-chatWidget.active { + display: flex; +} + +/* Logo container */ +#cw-chatWidget .logo-container { + display: flex; + justify-content: center; + padding-top: 16px; + padding-bottom: 10px; +} +#cw-chatWidget .logo-container img { + height: 40px; + user-select: none; +} + +/* Header */ +#cw-chatWidget .header { + background-color: #0070c0; + color: white; + padding: 8px 16px; + font-weight: 600; + text-align: center; + user-select: none; +} + +/* Messages container */ +#cw-chatMessages { + flex: 1 1 auto; + overflow-y: auto; + padding: 16px; + font-size: 0.875rem; + line-height: 1.4; + user-select: text; + scroll-behavior: smooth; + background: #fafafa; +} + +/* Chat form */ +#cw-chatForm { + display: flex; + margin: 0px; + border-top: 1px solid #ddd; +} +#cw-chatInput { + flex: 1; + border: none; + padding: 8px 20px; + font-size: 1rem; + outline-offset: 2px; + border-radius: 0 0 0 12px; +} +#cw-chatInput:focus { + outline: 0px solid #0070c0; +} +#cw-chatForm button { + background-color: #0070c0; + border: none; + color: white; + padding: 0 16px; + cursor: pointer; + font-weight: 600; + border-radius: 0 0 12px 0; + transition: background-color 0.3s ease; +} +#cw-chatForm button:hover { + background-color: #005a9e; +} + +/* Message bubbles */ +.cw-message { + max-width: 75%; + margin-bottom: 8px; + padding: 8px 12px; + border-radius: 12px; + word-wrap: break-word; + white-space: pre-wrap; +} +.cw-message.user { + background-color: #eaf4ff; + color: #333; + margin-left: auto; + text-align: right; +} +.cw-message.bot { + background-color: #f5f5f5; + color: #333; + margin-right: auto; + text-align: left; +}