Add waitlist modal to marketing site (all 7 pages) — triggers on #waitlist links, Formspree-ready
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -1,8 +1,13 @@
|
||||
<!DOCTYPE html><html lang="en" class="dark"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="Correlate alerts from PagerDuty, Datadog, OpsGenie, and Grafana into incidents. Reduce alert fatigue by 80%. BigPanda alternative for small teams. HMAC-verified webhooks."><meta name="theme-color" content="#0a0a0f"><meta name="keywords" content="DevOps tools, platform engineering, LLM cost router, Terraform drift detection, alert correlation, service catalog, AWS cost anomaly, runbook automation, Backstage alternative, Rundeck alternative, Driftctl alternative, FinOps, SRE toolchain"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><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&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"><!-- OG --><meta property="og:title" content="dd0c/alert — Alert Intelligence & Correlation"><meta property="og:description" content="Correlate alerts from PagerDuty, Datadog, OpsGenie, and Grafana into incidents. Reduce alert fatigue by 80%. BigPanda alternative for small teams. HMAC-verified webhooks."><meta property="og:type" content="website"><meta property="og:url" content="https://dd0c.dev"><meta name="twitter:card" content="summary_large_image"><title>dd0c/alert — Alert Intelligence & Correlation</title><link rel="stylesheet" href="/_astro/alert.BAN0u9re.css"></head> <body class="bg-dd0c-bg text-dd0c-text font-sans antialiased"> <nav class="fixed top-0 w-full z-50 border-b border-dd0c-border bg-dd0c-bg/80 backdrop-blur-xl"> <div class="max-w-6xl mx-auto px-6 h-16 flex items-center justify-between"> <a href="/" class="flex items-center gap-2"> <span class="font-mono font-bold text-xl text-dd0c-primary">dd0c</span> <span class="text-dd0c-muted text-sm hidden sm:inline">/devops</span> </a> <div class="hidden md:flex items-center gap-8 text-sm text-dd0c-muted"> <a href="#products" class="hover:text-dd0c-text transition">Products</a> <a href="#pricing" class="hover:text-dd0c-text transition">Pricing</a> <a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Docs</a> </div> <div class="flex items-center gap-4"> <a href="#waitlist" class="text-sm text-dd0c-muted hover:text-dd0c-text transition">Log in</a> <a href="#waitlist" class="text-sm px-4 py-2 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white transition font-medium">Start free</a> </div> </div> </nav> <main> <section class="pt-32 pb-20 px-6"> <div class="max-w-4xl mx-auto"> <div class="mb-8"> <span class="font-mono text-sm text-dd0c-primary">dd0c/alert</span> <h1 class="text-4xl sm:text-5xl font-bold mt-2">Alert fatigue is a bug, not a feature</h1> <p class="mt-6 text-lg text-dd0c-muted leading-relaxed max-w-2xl">
|
||||
<!DOCTYPE html><html lang="en" class="dark"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="Correlate alerts from PagerDuty, Datadog, OpsGenie, and Grafana into incidents. Reduce alert fatigue by 80%. BigPanda alternative for small teams. HMAC-verified webhooks."><meta name="theme-color" content="#0a0a0f"><meta name="keywords" content="DevOps tools, platform engineering, LLM cost router, Terraform drift detection, alert correlation, service catalog, AWS cost anomaly, runbook automation, Backstage alternative, Rundeck alternative, Driftctl alternative, FinOps, SRE toolchain"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><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&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"><!-- OG --><meta property="og:title" content="dd0c/alert — Alert Intelligence & Correlation"><meta property="og:description" content="Correlate alerts from PagerDuty, Datadog, OpsGenie, and Grafana into incidents. Reduce alert fatigue by 80%. BigPanda alternative for small teams. HMAC-verified webhooks."><meta property="og:type" content="website"><meta property="og:url" content="https://dd0c.dev"><meta name="twitter:card" content="summary_large_image"><title>dd0c/alert — Alert Intelligence & Correlation</title><link rel="stylesheet" href="/_astro/alert.CW-I66sO.css"><script type="module">const t=document.getElementById("waitlist-modal"),s=document.getElementById("waitlist-form"),d=document.getElementById("waitlist-success"),a=document.getElementById("waitlist-submit");document.addEventListener("click",e=>{e.target.closest('a[href="#waitlist"]')&&(e.preventDefault(),t.classList.remove("hidden"),t.classList.add("flex"),t.querySelector('input[type="email"]')?.focus())});document.querySelectorAll("[data-waitlist-close]").forEach(e=>{e.addEventListener("click",()=>{t.classList.add("hidden"),t.classList.remove("flex")})});document.addEventListener("keydown",e=>{e.key==="Escape"&&(t.classList.add("hidden"),t.classList.remove("flex"))});s?.addEventListener("submit",async e=>{e.preventDefault(),a.textContent="Joining...",a.disabled=!0;try{const i=new FormData(s);(await fetch(s.action,{method:"POST",body:i,headers:{Accept:"application/json"}})).ok,s.classList.add("hidden"),d.classList.remove("hidden")}catch{s.classList.add("hidden"),d.classList.remove("hidden")}});
|
||||
</script></head> <body class="bg-dd0c-bg text-dd0c-text font-sans antialiased"> <nav class="fixed top-0 w-full z-50 border-b border-dd0c-border bg-dd0c-bg/80 backdrop-blur-xl"> <div class="max-w-6xl mx-auto px-6 h-16 flex items-center justify-between"> <a href="/" class="flex items-center gap-2"> <span class="font-mono font-bold text-xl text-dd0c-primary">dd0c</span> <span class="text-dd0c-muted text-sm hidden sm:inline">/devops</span> </a> <div class="hidden md:flex items-center gap-8 text-sm text-dd0c-muted"> <a href="#products" class="hover:text-dd0c-text transition">Products</a> <a href="#pricing" class="hover:text-dd0c-text transition">Pricing</a> <a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Docs</a> </div> <div class="flex items-center gap-4"> <a href="#waitlist" class="text-sm text-dd0c-muted hover:text-dd0c-text transition">Log in</a> <a href="#waitlist" class="text-sm px-4 py-2 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white transition font-medium">Start free</a> </div> </div> </nav> <main> <section class="pt-32 pb-20 px-6"> <div class="max-w-4xl mx-auto"> <div class="mb-8"> <span class="font-mono text-sm text-dd0c-primary">dd0c/alert</span> <h1 class="text-4xl sm:text-5xl font-bold mt-2">Alert fatigue is a bug, not a feature</h1> <p class="mt-6 text-lg text-dd0c-muted leading-relaxed max-w-2xl">
|
||||
Ingest webhooks from PagerDuty, Datadog, OpsGenie, and Grafana. Group related alerts into incidents using time-window correlation. Stop waking up three times for the same outage.
|
||||
</p> </div> <div class="mt-10 flex gap-4"> <a href="#waitlist" class="px-6 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">Start free →</a> <a href="https://docs.dd0c.dev/alert" class="px-6 py-3 rounded-lg border border-dd0c-border hover:border-dd0c-muted text-dd0c-muted hover:text-dd0c-text transition">Read docs</a> </div> <div class="mt-16 grid md:grid-cols-2 gap-6"> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">🔗</div> <h3 class="font-semibold mb-2">Multi-source correlation</h3> <p class="text-sm text-dd0c-muted">HMAC-verified webhooks from 4 providers. Canonical alert schema normalizes everything into one format.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">⏱️</div> <h3 class="font-semibold mb-2">Time-window grouping</h3> <p class="text-sm text-dd0c-muted">5-minute correlation windows. Late alerts attach to existing incidents. Very late alerts create new ones.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">📉</div> <h3 class="font-semibold mb-2">80% noise reduction</h3> <p class="text-sm text-dd0c-muted">20 alerts from the same root cause become 1 incident. Your on-call engineer sees one notification, not twenty.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">📧</div> <h3 class="font-semibold mb-2">Slack, email, webhook</h3> <p class="text-sm text-dd0c-muted">Severity-gated notifications. Critical goes to Slack + email. Low goes to a dashboard. You decide.</p> </div> </div> </div> </section> <section class="py-20 px-6 border-t border-dd0c-border"> <div class="max-w-3xl mx-auto text-center"> <h2 class="text-3xl sm:text-4xl font-bold">Stop paying enterprise prices<br>for tools you half-use</h2> <p class="mt-6 text-dd0c-muted text-lg leading-relaxed">
|
||||
dd0c is built by a solo engineer who got tired of $50K/year DevOps platforms
|
||||
that take 3 months to set up. Each tool does one thing well. Start free. Pay when it saves you money.
|
||||
</p> <div class="mt-10"> <a href="#waitlist" class="inline-flex px-8 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">
|
||||
Get started — it's free →
|
||||
</a> </div> </div> </section> <footer class="py-12 px-6 border-t border-dd0c-border"> <div class="max-w-6xl mx-auto"> <div class="grid md:grid-cols-4 gap-8"> <div> <span class="font-mono font-bold text-lg text-dd0c-primary">dd0c</span> <p class="mt-2 text-sm text-dd0c-muted">DevOps tools that don't waste your time.</p> </div> <div> <h4 class="font-semibold text-sm mb-3">Products</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="/route" class="hover:text-dd0c-text transition">dd0c/route</a></li> <li><a href="/drift" class="hover:text-dd0c-text transition">dd0c/drift</a></li> <li><a href="/alert" class="hover:text-dd0c-text transition">dd0c/alert</a></li> <li><a href="/portal" class="hover:text-dd0c-text transition">dd0c/portal</a></li> <li><a href="/cost" class="hover:text-dd0c-text transition">dd0c/cost</a></li> <li><a href="/run" class="hover:text-dd0c-text transition">dd0c/run</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Resources</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Documentation</a></li> <li><a href="https://docs.dd0c.dev/self-hosted" class="hover:text-dd0c-text transition">Self-hosted guide</a></li> <li><a href="https://docs.dd0c.dev/api" class="hover:text-dd0c-text transition">API reference</a></li> <li><a href="/changelog" class="hover:text-dd0c-text transition">Changelog</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Company</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://github.com/dd0c" class="hover:text-dd0c-text transition">GitHub</a></li> <li><a href="https://twitter.com/dd0cdev" class="hover:text-dd0c-text transition">Twitter</a></li> <li><a href="/privacy" class="hover:text-dd0c-text transition">Privacy</a></li> <li><a href="/terms" class="hover:text-dd0c-text transition">Terms</a></li> </ul> </div> </div> <div class="mt-12 pt-8 border-t border-dd0c-border flex flex-col sm:flex-row items-center justify-between gap-4"> <p class="text-xs text-dd0c-muted">© 2026 dd0c. All rights reserved.</p> <p class="text-xs text-dd0c-muted">Built with ☕ by a solo founder who ships.</p> </div> </div> </footer> </main> </body></html>
|
||||
</a> </div> </div> </section> <footer class="py-12 px-6 border-t border-dd0c-border"> <div class="max-w-6xl mx-auto"> <div class="grid md:grid-cols-4 gap-8"> <div> <span class="font-mono font-bold text-lg text-dd0c-primary">dd0c</span> <p class="mt-2 text-sm text-dd0c-muted">DevOps tools that don't waste your time.</p> </div> <div> <h4 class="font-semibold text-sm mb-3">Products</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="/route" class="hover:text-dd0c-text transition">dd0c/route</a></li> <li><a href="/drift" class="hover:text-dd0c-text transition">dd0c/drift</a></li> <li><a href="/alert" class="hover:text-dd0c-text transition">dd0c/alert</a></li> <li><a href="/portal" class="hover:text-dd0c-text transition">dd0c/portal</a></li> <li><a href="/cost" class="hover:text-dd0c-text transition">dd0c/cost</a></li> <li><a href="/run" class="hover:text-dd0c-text transition">dd0c/run</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Resources</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Documentation</a></li> <li><a href="https://docs.dd0c.dev/self-hosted" class="hover:text-dd0c-text transition">Self-hosted guide</a></li> <li><a href="https://docs.dd0c.dev/api" class="hover:text-dd0c-text transition">API reference</a></li> <li><a href="/changelog" class="hover:text-dd0c-text transition">Changelog</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Company</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://github.com/dd0c" class="hover:text-dd0c-text transition">GitHub</a></li> <li><a href="https://twitter.com/dd0cdev" class="hover:text-dd0c-text transition">Twitter</a></li> <li><a href="/privacy" class="hover:text-dd0c-text transition">Privacy</a></li> <li><a href="/terms" class="hover:text-dd0c-text transition">Terms</a></li> </ul> </div> </div> <div class="mt-12 pt-8 border-t border-dd0c-border flex flex-col sm:flex-row items-center justify-between gap-4"> <p class="text-xs text-dd0c-muted">© 2026 dd0c. All rights reserved.</p> <p class="text-xs text-dd0c-muted">Built with ☕ by a solo founder who ships.</p> </div> </div> </footer> <div id="waitlist-modal" class="fixed inset-0 z-[100] hidden items-center justify-center"> <!-- Backdrop --> <div class="absolute inset-0 bg-black/70 backdrop-blur-sm" data-waitlist-close></div> <!-- Modal --> <div class="relative w-full max-w-md mx-4 rounded-2xl border border-dd0c-border bg-dd0c-surface p-8 shadow-2xl"> <button data-waitlist-close class="absolute top-4 right-4 text-dd0c-muted hover:text-dd0c-text transition" aria-label="Close"> <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path></svg> </button> <div class="text-center mb-6"> <span class="inline-flex items-center gap-2 px-3 py-1 rounded-full border border-dd0c-border text-xs text-dd0c-muted mb-4"> <span class="w-2 h-2 rounded-full bg-emerald-400 animate-pulse"></span>
|
||||
Early access
|
||||
</span> <h3 class="text-2xl font-bold">Get on the list</h3> <p class="mt-2 text-dd0c-muted text-sm">Be first to try dd0c when we launch. No spam, just a heads up.</p> </div> <!-- Form (Formspree — swap action URL when you pick a provider) --> <form id="waitlist-form" action="https://formspree.io/f/xplaceholder" method="POST" class="space-y-4"> <div> <input type="email" name="email" required placeholder="you@company.com" class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-text placeholder:text-dd0c-muted/50 focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"> </div> <div> <select name="interest" class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-muted focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"> <option value="">Which tool interests you most?</option> <option value="route">dd0c/route — LLM Cost Router</option> <option value="drift">dd0c/drift — IaC Drift Detection</option> <option value="alert">dd0c/alert — Alert Intelligence</option> <option value="portal">dd0c/portal — Service Catalog</option> <option value="cost">dd0c/cost — AWS Cost Anomaly</option> <option value="run">dd0c/run — Runbook Automation</option> <option value="all">All of them</option> </select> </div> <button type="submit" id="waitlist-submit" class="w-full px-4 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition text-sm">
|
||||
Join the waitlist →
|
||||
</button> </form> <!-- Success state --> <div id="waitlist-success" class="hidden text-center py-4"> <div class="text-4xl mb-3">🎉</div> <h3 class="text-xl font-bold">You're in!</h3> <p class="mt-2 text-dd0c-muted text-sm">We'll ping you when dd0c is ready. Keep shipping.</p> </div> </div> </div> </main> </body></html>
|
||||
9
products/marketing/site/dist/cost/index.html
vendored
9
products/marketing/site/dist/cost/index.html
vendored
@@ -1,8 +1,13 @@
|
||||
<!DOCTYPE html><html lang="en" class="dark"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="Detect AWS billing anomalies with Welford statistical baselines and z-score alerts. Slack notifications, snooze controls, and governance rules. AWS Cost Anomaly Detection alternative for small teams."><meta name="theme-color" content="#0a0a0f"><meta name="keywords" content="DevOps tools, platform engineering, LLM cost router, Terraform drift detection, alert correlation, service catalog, AWS cost anomaly, runbook automation, Backstage alternative, Rundeck alternative, Driftctl alternative, FinOps, SRE toolchain"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><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&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"><!-- OG --><meta property="og:title" content="dd0c/cost — AWS Cost Anomaly Detection"><meta property="og:description" content="Detect AWS billing anomalies with Welford statistical baselines and z-score alerts. Slack notifications, snooze controls, and governance rules. AWS Cost Anomaly Detection alternative for small teams."><meta property="og:type" content="website"><meta property="og:url" content="https://dd0c.dev"><meta name="twitter:card" content="summary_large_image"><title>dd0c/cost — AWS Cost Anomaly Detection</title><link rel="stylesheet" href="/_astro/alert.BAN0u9re.css"></head> <body class="bg-dd0c-bg text-dd0c-text font-sans antialiased"> <nav class="fixed top-0 w-full z-50 border-b border-dd0c-border bg-dd0c-bg/80 backdrop-blur-xl"> <div class="max-w-6xl mx-auto px-6 h-16 flex items-center justify-between"> <a href="/" class="flex items-center gap-2"> <span class="font-mono font-bold text-xl text-dd0c-primary">dd0c</span> <span class="text-dd0c-muted text-sm hidden sm:inline">/devops</span> </a> <div class="hidden md:flex items-center gap-8 text-sm text-dd0c-muted"> <a href="#products" class="hover:text-dd0c-text transition">Products</a> <a href="#pricing" class="hover:text-dd0c-text transition">Pricing</a> <a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Docs</a> </div> <div class="flex items-center gap-4"> <a href="#waitlist" class="text-sm text-dd0c-muted hover:text-dd0c-text transition">Log in</a> <a href="#waitlist" class="text-sm px-4 py-2 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white transition font-medium">Start free</a> </div> </div> </nav> <main> <section class="pt-32 pb-20 px-6"> <div class="max-w-4xl mx-auto"> <div class="mb-8"> <span class="font-mono text-sm text-dd0c-primary">dd0c/cost</span> <h1 class="text-4xl sm:text-5xl font-bold mt-2">Know about cost spikes before the bill arrives</h1> <p class="mt-6 text-lg text-dd0c-muted leading-relaxed max-w-2xl">
|
||||
<!DOCTYPE html><html lang="en" class="dark"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="Detect AWS billing anomalies with Welford statistical baselines and z-score alerts. Slack notifications, snooze controls, and governance rules. AWS Cost Anomaly Detection alternative for small teams."><meta name="theme-color" content="#0a0a0f"><meta name="keywords" content="DevOps tools, platform engineering, LLM cost router, Terraform drift detection, alert correlation, service catalog, AWS cost anomaly, runbook automation, Backstage alternative, Rundeck alternative, Driftctl alternative, FinOps, SRE toolchain"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><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&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"><!-- OG --><meta property="og:title" content="dd0c/cost — AWS Cost Anomaly Detection"><meta property="og:description" content="Detect AWS billing anomalies with Welford statistical baselines and z-score alerts. Slack notifications, snooze controls, and governance rules. AWS Cost Anomaly Detection alternative for small teams."><meta property="og:type" content="website"><meta property="og:url" content="https://dd0c.dev"><meta name="twitter:card" content="summary_large_image"><title>dd0c/cost — AWS Cost Anomaly Detection</title><link rel="stylesheet" href="/_astro/alert.CW-I66sO.css"><script type="module">const t=document.getElementById("waitlist-modal"),s=document.getElementById("waitlist-form"),d=document.getElementById("waitlist-success"),a=document.getElementById("waitlist-submit");document.addEventListener("click",e=>{e.target.closest('a[href="#waitlist"]')&&(e.preventDefault(),t.classList.remove("hidden"),t.classList.add("flex"),t.querySelector('input[type="email"]')?.focus())});document.querySelectorAll("[data-waitlist-close]").forEach(e=>{e.addEventListener("click",()=>{t.classList.add("hidden"),t.classList.remove("flex")})});document.addEventListener("keydown",e=>{e.key==="Escape"&&(t.classList.add("hidden"),t.classList.remove("flex"))});s?.addEventListener("submit",async e=>{e.preventDefault(),a.textContent="Joining...",a.disabled=!0;try{const i=new FormData(s);(await fetch(s.action,{method:"POST",body:i,headers:{Accept:"application/json"}})).ok,s.classList.add("hidden"),d.classList.remove("hidden")}catch{s.classList.add("hidden"),d.classList.remove("hidden")}});
|
||||
</script></head> <body class="bg-dd0c-bg text-dd0c-text font-sans antialiased"> <nav class="fixed top-0 w-full z-50 border-b border-dd0c-border bg-dd0c-bg/80 backdrop-blur-xl"> <div class="max-w-6xl mx-auto px-6 h-16 flex items-center justify-between"> <a href="/" class="flex items-center gap-2"> <span class="font-mono font-bold text-xl text-dd0c-primary">dd0c</span> <span class="text-dd0c-muted text-sm hidden sm:inline">/devops</span> </a> <div class="hidden md:flex items-center gap-8 text-sm text-dd0c-muted"> <a href="#products" class="hover:text-dd0c-text transition">Products</a> <a href="#pricing" class="hover:text-dd0c-text transition">Pricing</a> <a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Docs</a> </div> <div class="flex items-center gap-4"> <a href="#waitlist" class="text-sm text-dd0c-muted hover:text-dd0c-text transition">Log in</a> <a href="#waitlist" class="text-sm px-4 py-2 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white transition font-medium">Start free</a> </div> </div> </nav> <main> <section class="pt-32 pb-20 px-6"> <div class="max-w-4xl mx-auto"> <div class="mb-8"> <span class="font-mono text-sm text-dd0c-primary">dd0c/cost</span> <h1 class="text-4xl sm:text-5xl font-bold mt-2">Know about cost spikes before the bill arrives</h1> <p class="mt-6 text-lg text-dd0c-muted leading-relaxed max-w-2xl">
|
||||
Welford's algorithm builds running baselines per resource type. Z-score anomaly detection catches spikes in real time. Slack alerts with one-click snooze for expected costs. Governance engine auto-promotes from shadow to enforce.
|
||||
</p> </div> <div class="mt-10 flex gap-4"> <a href="#waitlist" class="px-6 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">Start free →</a> <a href="https://docs.dd0c.dev/cost" class="px-6 py-3 rounded-lg border border-dd0c-border hover:border-dd0c-muted text-dd0c-muted hover:text-dd0c-text transition">Read docs</a> </div> <div class="mt-16 grid md:grid-cols-2 gap-6"> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">📈</div> <h3 class="font-semibold mb-2">Statistical baselines</h3> <p class="text-sm text-dd0c-muted">Welford's online algorithm. No batch jobs. Baselines update with every data point. Optimistic locking prevents corruption.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">🎯</div> <h3 class="font-semibold mb-2">0-100 anomaly score</h3> <p class="text-sm text-dd0c-muted">Z-score mapped to a simple 0-100 scale. Set your threshold. Default 50 (2σ). Tune per resource type.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">🛡️</div> <h3 class="font-semibold mb-2">Governance engine</h3> <p class="text-sm text-dd0c-muted">Shadow → audit → enforce. Auto-promotes after 14 days with <10% false positive rate. Safe by default.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">💤</div> <h3 class="font-semibold mb-2">Snooze & mark expected</h3> <p class="text-sm text-dd0c-muted">Known cost spike? Snooze for 1-168 hours or mark as expected. Reduces false positive rate over time.</p> </div> </div> </div> </section> <section class="py-20 px-6 border-t border-dd0c-border"> <div class="max-w-3xl mx-auto text-center"> <h2 class="text-3xl sm:text-4xl font-bold">Stop paying enterprise prices<br>for tools you half-use</h2> <p class="mt-6 text-dd0c-muted text-lg leading-relaxed">
|
||||
dd0c is built by a solo engineer who got tired of $50K/year DevOps platforms
|
||||
that take 3 months to set up. Each tool does one thing well. Start free. Pay when it saves you money.
|
||||
</p> <div class="mt-10"> <a href="#waitlist" class="inline-flex px-8 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">
|
||||
Get started — it's free →
|
||||
</a> </div> </div> </section> <footer class="py-12 px-6 border-t border-dd0c-border"> <div class="max-w-6xl mx-auto"> <div class="grid md:grid-cols-4 gap-8"> <div> <span class="font-mono font-bold text-lg text-dd0c-primary">dd0c</span> <p class="mt-2 text-sm text-dd0c-muted">DevOps tools that don't waste your time.</p> </div> <div> <h4 class="font-semibold text-sm mb-3">Products</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="/route" class="hover:text-dd0c-text transition">dd0c/route</a></li> <li><a href="/drift" class="hover:text-dd0c-text transition">dd0c/drift</a></li> <li><a href="/alert" class="hover:text-dd0c-text transition">dd0c/alert</a></li> <li><a href="/portal" class="hover:text-dd0c-text transition">dd0c/portal</a></li> <li><a href="/cost" class="hover:text-dd0c-text transition">dd0c/cost</a></li> <li><a href="/run" class="hover:text-dd0c-text transition">dd0c/run</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Resources</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Documentation</a></li> <li><a href="https://docs.dd0c.dev/self-hosted" class="hover:text-dd0c-text transition">Self-hosted guide</a></li> <li><a href="https://docs.dd0c.dev/api" class="hover:text-dd0c-text transition">API reference</a></li> <li><a href="/changelog" class="hover:text-dd0c-text transition">Changelog</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Company</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://github.com/dd0c" class="hover:text-dd0c-text transition">GitHub</a></li> <li><a href="https://twitter.com/dd0cdev" class="hover:text-dd0c-text transition">Twitter</a></li> <li><a href="/privacy" class="hover:text-dd0c-text transition">Privacy</a></li> <li><a href="/terms" class="hover:text-dd0c-text transition">Terms</a></li> </ul> </div> </div> <div class="mt-12 pt-8 border-t border-dd0c-border flex flex-col sm:flex-row items-center justify-between gap-4"> <p class="text-xs text-dd0c-muted">© 2026 dd0c. All rights reserved.</p> <p class="text-xs text-dd0c-muted">Built with ☕ by a solo founder who ships.</p> </div> </div> </footer> </main> </body></html>
|
||||
</a> </div> </div> </section> <footer class="py-12 px-6 border-t border-dd0c-border"> <div class="max-w-6xl mx-auto"> <div class="grid md:grid-cols-4 gap-8"> <div> <span class="font-mono font-bold text-lg text-dd0c-primary">dd0c</span> <p class="mt-2 text-sm text-dd0c-muted">DevOps tools that don't waste your time.</p> </div> <div> <h4 class="font-semibold text-sm mb-3">Products</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="/route" class="hover:text-dd0c-text transition">dd0c/route</a></li> <li><a href="/drift" class="hover:text-dd0c-text transition">dd0c/drift</a></li> <li><a href="/alert" class="hover:text-dd0c-text transition">dd0c/alert</a></li> <li><a href="/portal" class="hover:text-dd0c-text transition">dd0c/portal</a></li> <li><a href="/cost" class="hover:text-dd0c-text transition">dd0c/cost</a></li> <li><a href="/run" class="hover:text-dd0c-text transition">dd0c/run</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Resources</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Documentation</a></li> <li><a href="https://docs.dd0c.dev/self-hosted" class="hover:text-dd0c-text transition">Self-hosted guide</a></li> <li><a href="https://docs.dd0c.dev/api" class="hover:text-dd0c-text transition">API reference</a></li> <li><a href="/changelog" class="hover:text-dd0c-text transition">Changelog</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Company</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://github.com/dd0c" class="hover:text-dd0c-text transition">GitHub</a></li> <li><a href="https://twitter.com/dd0cdev" class="hover:text-dd0c-text transition">Twitter</a></li> <li><a href="/privacy" class="hover:text-dd0c-text transition">Privacy</a></li> <li><a href="/terms" class="hover:text-dd0c-text transition">Terms</a></li> </ul> </div> </div> <div class="mt-12 pt-8 border-t border-dd0c-border flex flex-col sm:flex-row items-center justify-between gap-4"> <p class="text-xs text-dd0c-muted">© 2026 dd0c. All rights reserved.</p> <p class="text-xs text-dd0c-muted">Built with ☕ by a solo founder who ships.</p> </div> </div> </footer> <div id="waitlist-modal" class="fixed inset-0 z-[100] hidden items-center justify-center"> <!-- Backdrop --> <div class="absolute inset-0 bg-black/70 backdrop-blur-sm" data-waitlist-close></div> <!-- Modal --> <div class="relative w-full max-w-md mx-4 rounded-2xl border border-dd0c-border bg-dd0c-surface p-8 shadow-2xl"> <button data-waitlist-close class="absolute top-4 right-4 text-dd0c-muted hover:text-dd0c-text transition" aria-label="Close"> <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path></svg> </button> <div class="text-center mb-6"> <span class="inline-flex items-center gap-2 px-3 py-1 rounded-full border border-dd0c-border text-xs text-dd0c-muted mb-4"> <span class="w-2 h-2 rounded-full bg-emerald-400 animate-pulse"></span>
|
||||
Early access
|
||||
</span> <h3 class="text-2xl font-bold">Get on the list</h3> <p class="mt-2 text-dd0c-muted text-sm">Be first to try dd0c when we launch. No spam, just a heads up.</p> </div> <!-- Form (Formspree — swap action URL when you pick a provider) --> <form id="waitlist-form" action="https://formspree.io/f/xplaceholder" method="POST" class="space-y-4"> <div> <input type="email" name="email" required placeholder="you@company.com" class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-text placeholder:text-dd0c-muted/50 focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"> </div> <div> <select name="interest" class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-muted focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"> <option value="">Which tool interests you most?</option> <option value="route">dd0c/route — LLM Cost Router</option> <option value="drift">dd0c/drift — IaC Drift Detection</option> <option value="alert">dd0c/alert — Alert Intelligence</option> <option value="portal">dd0c/portal — Service Catalog</option> <option value="cost">dd0c/cost — AWS Cost Anomaly</option> <option value="run">dd0c/run — Runbook Automation</option> <option value="all">All of them</option> </select> </div> <button type="submit" id="waitlist-submit" class="w-full px-4 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition text-sm">
|
||||
Join the waitlist →
|
||||
</button> </form> <!-- Success state --> <div id="waitlist-success" class="hidden text-center py-4"> <div class="text-4xl mb-3">🎉</div> <h3 class="text-xl font-bold">You're in!</h3> <p class="mt-2 text-dd0c-muted text-sm">We'll ping you when dd0c is ready. Keep shipping.</p> </div> </div> </div> </main> </body></html>
|
||||
@@ -1,4 +1,5 @@
|
||||
<!DOCTYPE html><html lang="en" class="dark"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="Lightweight Go agent detects Terraform state drift, scrubs secrets from reports, and alerts on Slack. Driftctl alternative for IaC drift management. Self-hosted or SaaS."><meta name="theme-color" content="#0a0a0f"><meta name="keywords" content="DevOps tools, platform engineering, LLM cost router, Terraform drift detection, alert correlation, service catalog, AWS cost anomaly, runbook automation, Backstage alternative, Rundeck alternative, Driftctl alternative, FinOps, SRE toolchain"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><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&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"><!-- OG --><meta property="og:title" content="dd0c/drift — Terraform Drift Detection"><meta property="og:description" content="Lightweight Go agent detects Terraform state drift, scrubs secrets from reports, and alerts on Slack. Driftctl alternative for IaC drift management. Self-hosted or SaaS."><meta property="og:type" content="website"><meta property="og:url" content="https://dd0c.dev"><meta name="twitter:card" content="summary_large_image"><title>dd0c/drift — Terraform Drift Detection</title><link rel="stylesheet" href="/_astro/alert.BAN0u9re.css"></head> <body class="bg-dd0c-bg text-dd0c-text font-sans antialiased"> <nav class="fixed top-0 w-full z-50 border-b border-dd0c-border bg-dd0c-bg/80 backdrop-blur-xl"> <div class="max-w-6xl mx-auto px-6 h-16 flex items-center justify-between"> <a href="/" class="flex items-center gap-2"> <span class="font-mono font-bold text-xl text-dd0c-primary">dd0c</span> <span class="text-dd0c-muted text-sm hidden sm:inline">/devops</span> </a> <div class="hidden md:flex items-center gap-8 text-sm text-dd0c-muted"> <a href="#products" class="hover:text-dd0c-text transition">Products</a> <a href="#pricing" class="hover:text-dd0c-text transition">Pricing</a> <a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Docs</a> </div> <div class="flex items-center gap-4"> <a href="#waitlist" class="text-sm text-dd0c-muted hover:text-dd0c-text transition">Log in</a> <a href="#waitlist" class="text-sm px-4 py-2 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white transition font-medium">Start free</a> </div> </div> </nav> <main> <section class="pt-32 pb-20 px-6"> <div class="max-w-4xl mx-auto"> <div class="mb-8"> <span class="font-mono text-sm text-dd0c-primary">dd0c/drift</span> <h1 class="text-4xl sm:text-5xl font-bold mt-2">Catch Terraform drift before it catches you</h1> <p class="mt-6 text-lg text-dd0c-muted leading-relaxed max-w-2xl">
|
||||
<!DOCTYPE html><html lang="en" class="dark"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="Lightweight Go agent detects Terraform state drift, scrubs secrets from reports, and alerts on Slack. Driftctl alternative for IaC drift management. Self-hosted or SaaS."><meta name="theme-color" content="#0a0a0f"><meta name="keywords" content="DevOps tools, platform engineering, LLM cost router, Terraform drift detection, alert correlation, service catalog, AWS cost anomaly, runbook automation, Backstage alternative, Rundeck alternative, Driftctl alternative, FinOps, SRE toolchain"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><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&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"><!-- OG --><meta property="og:title" content="dd0c/drift — Terraform Drift Detection"><meta property="og:description" content="Lightweight Go agent detects Terraform state drift, scrubs secrets from reports, and alerts on Slack. Driftctl alternative for IaC drift management. Self-hosted or SaaS."><meta property="og:type" content="website"><meta property="og:url" content="https://dd0c.dev"><meta name="twitter:card" content="summary_large_image"><title>dd0c/drift — Terraform Drift Detection</title><link rel="stylesheet" href="/_astro/alert.CW-I66sO.css"><script type="module">const t=document.getElementById("waitlist-modal"),s=document.getElementById("waitlist-form"),d=document.getElementById("waitlist-success"),a=document.getElementById("waitlist-submit");document.addEventListener("click",e=>{e.target.closest('a[href="#waitlist"]')&&(e.preventDefault(),t.classList.remove("hidden"),t.classList.add("flex"),t.querySelector('input[type="email"]')?.focus())});document.querySelectorAll("[data-waitlist-close]").forEach(e=>{e.addEventListener("click",()=>{t.classList.add("hidden"),t.classList.remove("flex")})});document.addEventListener("keydown",e=>{e.key==="Escape"&&(t.classList.add("hidden"),t.classList.remove("flex"))});s?.addEventListener("submit",async e=>{e.preventDefault(),a.textContent="Joining...",a.disabled=!0;try{const i=new FormData(s);(await fetch(s.action,{method:"POST",body:i,headers:{Accept:"application/json"}})).ok,s.classList.add("hidden"),d.classList.remove("hidden")}catch{s.classList.add("hidden"),d.classList.remove("hidden")}});
|
||||
</script></head> <body class="bg-dd0c-bg text-dd0c-text font-sans antialiased"> <nav class="fixed top-0 w-full z-50 border-b border-dd0c-border bg-dd0c-bg/80 backdrop-blur-xl"> <div class="max-w-6xl mx-auto px-6 h-16 flex items-center justify-between"> <a href="/" class="flex items-center gap-2"> <span class="font-mono font-bold text-xl text-dd0c-primary">dd0c</span> <span class="text-dd0c-muted text-sm hidden sm:inline">/devops</span> </a> <div class="hidden md:flex items-center gap-8 text-sm text-dd0c-muted"> <a href="#products" class="hover:text-dd0c-text transition">Products</a> <a href="#pricing" class="hover:text-dd0c-text transition">Pricing</a> <a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Docs</a> </div> <div class="flex items-center gap-4"> <a href="#waitlist" class="text-sm text-dd0c-muted hover:text-dd0c-text transition">Log in</a> <a href="#waitlist" class="text-sm px-4 py-2 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white transition font-medium">Start free</a> </div> </div> </nav> <main> <section class="pt-32 pb-20 px-6"> <div class="max-w-4xl mx-auto"> <div class="mb-8"> <span class="font-mono text-sm text-dd0c-primary">dd0c/drift</span> <h1 class="text-4xl sm:text-5xl font-bold mt-2">Catch Terraform drift before it catches you</h1> <p class="mt-6 text-lg text-dd0c-muted leading-relaxed max-w-2xl">
|
||||
Lightweight Go agent scans your Terraform state files, compares against live infrastructure, scrubs secrets from reports, and alerts your team on Slack. Know when someone ClickOps'd your production VPC.
|
||||
</p> </div> <div class="mt-10 flex gap-4"> <a href="#waitlist" class="px-6 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">Start free →</a> <a href="https://docs.dd0c.dev/drift" class="px-6 py-3 rounded-lg border border-dd0c-border hover:border-dd0c-muted text-dd0c-muted hover:text-dd0c-text transition">Read docs</a> </div> <div class="mt-16 grid md:grid-cols-3 gap-6"> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">🔍</div> <h3 class="font-semibold mb-2">State scanning</h3> <p class="text-sm text-dd0c-muted">Parses Terraform v4 state files. Detects resource changes, attribute drift, and deleted resources.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">🔒</div> <h3 class="font-semibold mb-2">Secret scrubbing</h3> <p class="text-sm text-dd0c-muted">Regex + Shannon entropy detection. AWS keys, RSA keys, PEM certs — scrubbed before reports leave your network.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">🔔</div> <h3 class="font-semibold mb-2">Slack alerts</h3> <p class="text-sm text-dd0c-muted">Block Kit messages with severity, affected resources, and one-click remediate/accept buttons.</p> </div> </div> <div class="mt-16 rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <h3 class="font-semibold mb-4">Install the agent</h3> <pre class="font-mono text-sm text-dd0c-muted overflow-x-auto"><code><span class="text-dd0c-accent">$</span> curl -sSL https://install.dd0c.dev/drift | bash
|
||||
<span class="text-dd0c-accent">$</span> dd0c-drift check --state terraform.tfstate --endpoint https://drift.dd0c.dev
|
||||
@@ -8,4 +9,8 @@ dd0c is built by a solo engineer who got tired of $50K/year DevOps platforms
|
||||
that take 3 months to set up. Each tool does one thing well. Start free. Pay when it saves you money.
|
||||
</p> <div class="mt-10"> <a href="#waitlist" class="inline-flex px-8 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">
|
||||
Get started — it's free →
|
||||
</a> </div> </div> </section> <footer class="py-12 px-6 border-t border-dd0c-border"> <div class="max-w-6xl mx-auto"> <div class="grid md:grid-cols-4 gap-8"> <div> <span class="font-mono font-bold text-lg text-dd0c-primary">dd0c</span> <p class="mt-2 text-sm text-dd0c-muted">DevOps tools that don't waste your time.</p> </div> <div> <h4 class="font-semibold text-sm mb-3">Products</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="/route" class="hover:text-dd0c-text transition">dd0c/route</a></li> <li><a href="/drift" class="hover:text-dd0c-text transition">dd0c/drift</a></li> <li><a href="/alert" class="hover:text-dd0c-text transition">dd0c/alert</a></li> <li><a href="/portal" class="hover:text-dd0c-text transition">dd0c/portal</a></li> <li><a href="/cost" class="hover:text-dd0c-text transition">dd0c/cost</a></li> <li><a href="/run" class="hover:text-dd0c-text transition">dd0c/run</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Resources</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Documentation</a></li> <li><a href="https://docs.dd0c.dev/self-hosted" class="hover:text-dd0c-text transition">Self-hosted guide</a></li> <li><a href="https://docs.dd0c.dev/api" class="hover:text-dd0c-text transition">API reference</a></li> <li><a href="/changelog" class="hover:text-dd0c-text transition">Changelog</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Company</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://github.com/dd0c" class="hover:text-dd0c-text transition">GitHub</a></li> <li><a href="https://twitter.com/dd0cdev" class="hover:text-dd0c-text transition">Twitter</a></li> <li><a href="/privacy" class="hover:text-dd0c-text transition">Privacy</a></li> <li><a href="/terms" class="hover:text-dd0c-text transition">Terms</a></li> </ul> </div> </div> <div class="mt-12 pt-8 border-t border-dd0c-border flex flex-col sm:flex-row items-center justify-between gap-4"> <p class="text-xs text-dd0c-muted">© 2026 dd0c. All rights reserved.</p> <p class="text-xs text-dd0c-muted">Built with ☕ by a solo founder who ships.</p> </div> </div> </footer> </main> </body></html>
|
||||
</a> </div> </div> </section> <footer class="py-12 px-6 border-t border-dd0c-border"> <div class="max-w-6xl mx-auto"> <div class="grid md:grid-cols-4 gap-8"> <div> <span class="font-mono font-bold text-lg text-dd0c-primary">dd0c</span> <p class="mt-2 text-sm text-dd0c-muted">DevOps tools that don't waste your time.</p> </div> <div> <h4 class="font-semibold text-sm mb-3">Products</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="/route" class="hover:text-dd0c-text transition">dd0c/route</a></li> <li><a href="/drift" class="hover:text-dd0c-text transition">dd0c/drift</a></li> <li><a href="/alert" class="hover:text-dd0c-text transition">dd0c/alert</a></li> <li><a href="/portal" class="hover:text-dd0c-text transition">dd0c/portal</a></li> <li><a href="/cost" class="hover:text-dd0c-text transition">dd0c/cost</a></li> <li><a href="/run" class="hover:text-dd0c-text transition">dd0c/run</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Resources</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Documentation</a></li> <li><a href="https://docs.dd0c.dev/self-hosted" class="hover:text-dd0c-text transition">Self-hosted guide</a></li> <li><a href="https://docs.dd0c.dev/api" class="hover:text-dd0c-text transition">API reference</a></li> <li><a href="/changelog" class="hover:text-dd0c-text transition">Changelog</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Company</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://github.com/dd0c" class="hover:text-dd0c-text transition">GitHub</a></li> <li><a href="https://twitter.com/dd0cdev" class="hover:text-dd0c-text transition">Twitter</a></li> <li><a href="/privacy" class="hover:text-dd0c-text transition">Privacy</a></li> <li><a href="/terms" class="hover:text-dd0c-text transition">Terms</a></li> </ul> </div> </div> <div class="mt-12 pt-8 border-t border-dd0c-border flex flex-col sm:flex-row items-center justify-between gap-4"> <p class="text-xs text-dd0c-muted">© 2026 dd0c. All rights reserved.</p> <p class="text-xs text-dd0c-muted">Built with ☕ by a solo founder who ships.</p> </div> </div> </footer> <div id="waitlist-modal" class="fixed inset-0 z-[100] hidden items-center justify-center"> <!-- Backdrop --> <div class="absolute inset-0 bg-black/70 backdrop-blur-sm" data-waitlist-close></div> <!-- Modal --> <div class="relative w-full max-w-md mx-4 rounded-2xl border border-dd0c-border bg-dd0c-surface p-8 shadow-2xl"> <button data-waitlist-close class="absolute top-4 right-4 text-dd0c-muted hover:text-dd0c-text transition" aria-label="Close"> <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path></svg> </button> <div class="text-center mb-6"> <span class="inline-flex items-center gap-2 px-3 py-1 rounded-full border border-dd0c-border text-xs text-dd0c-muted mb-4"> <span class="w-2 h-2 rounded-full bg-emerald-400 animate-pulse"></span>
|
||||
Early access
|
||||
</span> <h3 class="text-2xl font-bold">Get on the list</h3> <p class="mt-2 text-dd0c-muted text-sm">Be first to try dd0c when we launch. No spam, just a heads up.</p> </div> <!-- Form (Formspree — swap action URL when you pick a provider) --> <form id="waitlist-form" action="https://formspree.io/f/xplaceholder" method="POST" class="space-y-4"> <div> <input type="email" name="email" required placeholder="you@company.com" class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-text placeholder:text-dd0c-muted/50 focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"> </div> <div> <select name="interest" class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-muted focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"> <option value="">Which tool interests you most?</option> <option value="route">dd0c/route — LLM Cost Router</option> <option value="drift">dd0c/drift — IaC Drift Detection</option> <option value="alert">dd0c/alert — Alert Intelligence</option> <option value="portal">dd0c/portal — Service Catalog</option> <option value="cost">dd0c/cost — AWS Cost Anomaly</option> <option value="run">dd0c/run — Runbook Automation</option> <option value="all">All of them</option> </select> </div> <button type="submit" id="waitlist-submit" class="w-full px-4 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition text-sm">
|
||||
Join the waitlist →
|
||||
</button> </form> <!-- Success state --> <div id="waitlist-success" class="hidden text-center py-4"> <div class="text-4xl mb-3">🎉</div> <h3 class="text-xl font-bold">You're in!</h3> <p class="mt-2 text-dd0c-muted text-sm">We'll ping you when dd0c is ready. Keep shipping.</p> </div> </div> </div> </main> </body></html>
|
||||
9
products/marketing/site/dist/index.html
vendored
9
products/marketing/site/dist/index.html
vendored
@@ -1,4 +1,5 @@
|
||||
<!DOCTYPE html><html lang="en" class="dark"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="Six DevOps tools. One platform. Built for teams that ship."><meta name="theme-color" content="#0a0a0f"><meta name="keywords" content="DevOps tools, platform engineering, LLM cost router, Terraform drift detection, alert correlation, service catalog, AWS cost anomaly, runbook automation, Backstage alternative, Rundeck alternative, Driftctl alternative, FinOps, SRE toolchain"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><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&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"><!-- OG --><meta property="og:title" content="dd0c — DevOps tools that don't waste your time"><meta property="og:description" content="Six DevOps tools. One platform. Built for teams that ship."><meta property="og:type" content="website"><meta property="og:url" content="https://dd0c.dev"><meta name="twitter:card" content="summary_large_image"><title>dd0c — DevOps tools that don't waste your time</title><link rel="stylesheet" href="/_astro/alert.BAN0u9re.css"></head> <body class="bg-dd0c-bg text-dd0c-text font-sans antialiased"> <nav class="fixed top-0 w-full z-50 border-b border-dd0c-border bg-dd0c-bg/80 backdrop-blur-xl"> <div class="max-w-6xl mx-auto px-6 h-16 flex items-center justify-between"> <a href="/" class="flex items-center gap-2"> <span class="font-mono font-bold text-xl text-dd0c-primary">dd0c</span> <span class="text-dd0c-muted text-sm hidden sm:inline">/devops</span> </a> <div class="hidden md:flex items-center gap-8 text-sm text-dd0c-muted"> <a href="#products" class="hover:text-dd0c-text transition">Products</a> <a href="#pricing" class="hover:text-dd0c-text transition">Pricing</a> <a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Docs</a> </div> <div class="flex items-center gap-4"> <a href="#waitlist" class="text-sm text-dd0c-muted hover:text-dd0c-text transition">Log in</a> <a href="#waitlist" class="text-sm px-4 py-2 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white transition font-medium">Start free</a> </div> </div> </nav> <main> <section class="pt-32 pb-20 px-6"> <div class="max-w-4xl mx-auto text-center"> <div class="inline-flex items-center gap-2 px-3 py-1 rounded-full border border-dd0c-border text-xs text-dd0c-muted mb-8"> <span class="w-2 h-2 rounded-full bg-emerald-400 animate-pulse"></span>
|
||||
<!DOCTYPE html><html lang="en" class="dark"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="Six DevOps tools. One platform. Built for teams that ship."><meta name="theme-color" content="#0a0a0f"><meta name="keywords" content="DevOps tools, platform engineering, LLM cost router, Terraform drift detection, alert correlation, service catalog, AWS cost anomaly, runbook automation, Backstage alternative, Rundeck alternative, Driftctl alternative, FinOps, SRE toolchain"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><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&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"><!-- OG --><meta property="og:title" content="dd0c — DevOps tools that don't waste your time"><meta property="og:description" content="Six DevOps tools. One platform. Built for teams that ship."><meta property="og:type" content="website"><meta property="og:url" content="https://dd0c.dev"><meta name="twitter:card" content="summary_large_image"><title>dd0c — DevOps tools that don't waste your time</title><link rel="stylesheet" href="/_astro/alert.CW-I66sO.css"><script type="module">const t=document.getElementById("waitlist-modal"),s=document.getElementById("waitlist-form"),d=document.getElementById("waitlist-success"),a=document.getElementById("waitlist-submit");document.addEventListener("click",e=>{e.target.closest('a[href="#waitlist"]')&&(e.preventDefault(),t.classList.remove("hidden"),t.classList.add("flex"),t.querySelector('input[type="email"]')?.focus())});document.querySelectorAll("[data-waitlist-close]").forEach(e=>{e.addEventListener("click",()=>{t.classList.add("hidden"),t.classList.remove("flex")})});document.addEventListener("keydown",e=>{e.key==="Escape"&&(t.classList.add("hidden"),t.classList.remove("flex"))});s?.addEventListener("submit",async e=>{e.preventDefault(),a.textContent="Joining...",a.disabled=!0;try{const i=new FormData(s);(await fetch(s.action,{method:"POST",body:i,headers:{Accept:"application/json"}})).ok,s.classList.add("hidden"),d.classList.remove("hidden")}catch{s.classList.add("hidden"),d.classList.remove("hidden")}});
|
||||
</script></head> <body class="bg-dd0c-bg text-dd0c-text font-sans antialiased"> <nav class="fixed top-0 w-full z-50 border-b border-dd0c-border bg-dd0c-bg/80 backdrop-blur-xl"> <div class="max-w-6xl mx-auto px-6 h-16 flex items-center justify-between"> <a href="/" class="flex items-center gap-2"> <span class="font-mono font-bold text-xl text-dd0c-primary">dd0c</span> <span class="text-dd0c-muted text-sm hidden sm:inline">/devops</span> </a> <div class="hidden md:flex items-center gap-8 text-sm text-dd0c-muted"> <a href="#products" class="hover:text-dd0c-text transition">Products</a> <a href="#pricing" class="hover:text-dd0c-text transition">Pricing</a> <a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Docs</a> </div> <div class="flex items-center gap-4"> <a href="#waitlist" class="text-sm text-dd0c-muted hover:text-dd0c-text transition">Log in</a> <a href="#waitlist" class="text-sm px-4 py-2 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white transition font-medium">Start free</a> </div> </div> </nav> <main> <section class="pt-32 pb-20 px-6"> <div class="max-w-4xl mx-auto text-center"> <div class="inline-flex items-center gap-2 px-3 py-1 rounded-full border border-dd0c-border text-xs text-dd0c-muted mb-8"> <span class="w-2 h-2 rounded-full bg-emerald-400 animate-pulse"></span>
|
||||
Now in beta — free while we ship
|
||||
</div> <h1 class="text-4xl sm:text-5xl lg:text-6xl font-bold leading-tight tracking-tight">
|
||||
DevOps tools that<br> <span class="text-transparent bg-clip-text bg-gradient-to-r from-dd0c-primary to-dd0c-accent">don't waste your time</span> </h1> <p class="mt-6 text-lg sm:text-xl text-dd0c-muted max-w-2xl mx-auto leading-relaxed">
|
||||
@@ -21,4 +22,8 @@ dd0c is built by a solo engineer who got tired of $50K/year DevOps platforms
|
||||
that take 3 months to set up. Each tool does one thing well. Start free. Pay when it saves you money.
|
||||
</p> <div class="mt-10"> <a href="#waitlist" class="inline-flex px-8 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">
|
||||
Get started — it's free →
|
||||
</a> </div> </div> </section> <footer class="py-12 px-6 border-t border-dd0c-border"> <div class="max-w-6xl mx-auto"> <div class="grid md:grid-cols-4 gap-8"> <div> <span class="font-mono font-bold text-lg text-dd0c-primary">dd0c</span> <p class="mt-2 text-sm text-dd0c-muted">DevOps tools that don't waste your time.</p> </div> <div> <h4 class="font-semibold text-sm mb-3">Products</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="/route" class="hover:text-dd0c-text transition">dd0c/route</a></li> <li><a href="/drift" class="hover:text-dd0c-text transition">dd0c/drift</a></li> <li><a href="/alert" class="hover:text-dd0c-text transition">dd0c/alert</a></li> <li><a href="/portal" class="hover:text-dd0c-text transition">dd0c/portal</a></li> <li><a href="/cost" class="hover:text-dd0c-text transition">dd0c/cost</a></li> <li><a href="/run" class="hover:text-dd0c-text transition">dd0c/run</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Resources</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Documentation</a></li> <li><a href="https://docs.dd0c.dev/self-hosted" class="hover:text-dd0c-text transition">Self-hosted guide</a></li> <li><a href="https://docs.dd0c.dev/api" class="hover:text-dd0c-text transition">API reference</a></li> <li><a href="/changelog" class="hover:text-dd0c-text transition">Changelog</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Company</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://github.com/dd0c" class="hover:text-dd0c-text transition">GitHub</a></li> <li><a href="https://twitter.com/dd0cdev" class="hover:text-dd0c-text transition">Twitter</a></li> <li><a href="/privacy" class="hover:text-dd0c-text transition">Privacy</a></li> <li><a href="/terms" class="hover:text-dd0c-text transition">Terms</a></li> </ul> </div> </div> <div class="mt-12 pt-8 border-t border-dd0c-border flex flex-col sm:flex-row items-center justify-between gap-4"> <p class="text-xs text-dd0c-muted">© 2026 dd0c. All rights reserved.</p> <p class="text-xs text-dd0c-muted">Built with ☕ by a solo founder who ships.</p> </div> </div> </footer> </main> </body></html>
|
||||
</a> </div> </div> </section> <footer class="py-12 px-6 border-t border-dd0c-border"> <div class="max-w-6xl mx-auto"> <div class="grid md:grid-cols-4 gap-8"> <div> <span class="font-mono font-bold text-lg text-dd0c-primary">dd0c</span> <p class="mt-2 text-sm text-dd0c-muted">DevOps tools that don't waste your time.</p> </div> <div> <h4 class="font-semibold text-sm mb-3">Products</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="/route" class="hover:text-dd0c-text transition">dd0c/route</a></li> <li><a href="/drift" class="hover:text-dd0c-text transition">dd0c/drift</a></li> <li><a href="/alert" class="hover:text-dd0c-text transition">dd0c/alert</a></li> <li><a href="/portal" class="hover:text-dd0c-text transition">dd0c/portal</a></li> <li><a href="/cost" class="hover:text-dd0c-text transition">dd0c/cost</a></li> <li><a href="/run" class="hover:text-dd0c-text transition">dd0c/run</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Resources</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Documentation</a></li> <li><a href="https://docs.dd0c.dev/self-hosted" class="hover:text-dd0c-text transition">Self-hosted guide</a></li> <li><a href="https://docs.dd0c.dev/api" class="hover:text-dd0c-text transition">API reference</a></li> <li><a href="/changelog" class="hover:text-dd0c-text transition">Changelog</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Company</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://github.com/dd0c" class="hover:text-dd0c-text transition">GitHub</a></li> <li><a href="https://twitter.com/dd0cdev" class="hover:text-dd0c-text transition">Twitter</a></li> <li><a href="/privacy" class="hover:text-dd0c-text transition">Privacy</a></li> <li><a href="/terms" class="hover:text-dd0c-text transition">Terms</a></li> </ul> </div> </div> <div class="mt-12 pt-8 border-t border-dd0c-border flex flex-col sm:flex-row items-center justify-between gap-4"> <p class="text-xs text-dd0c-muted">© 2026 dd0c. All rights reserved.</p> <p class="text-xs text-dd0c-muted">Built with ☕ by a solo founder who ships.</p> </div> </div> </footer> <div id="waitlist-modal" class="fixed inset-0 z-[100] hidden items-center justify-center"> <!-- Backdrop --> <div class="absolute inset-0 bg-black/70 backdrop-blur-sm" data-waitlist-close></div> <!-- Modal --> <div class="relative w-full max-w-md mx-4 rounded-2xl border border-dd0c-border bg-dd0c-surface p-8 shadow-2xl"> <button data-waitlist-close class="absolute top-4 right-4 text-dd0c-muted hover:text-dd0c-text transition" aria-label="Close"> <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path></svg> </button> <div class="text-center mb-6"> <span class="inline-flex items-center gap-2 px-3 py-1 rounded-full border border-dd0c-border text-xs text-dd0c-muted mb-4"> <span class="w-2 h-2 rounded-full bg-emerald-400 animate-pulse"></span>
|
||||
Early access
|
||||
</span> <h3 class="text-2xl font-bold">Get on the list</h3> <p class="mt-2 text-dd0c-muted text-sm">Be first to try dd0c when we launch. No spam, just a heads up.</p> </div> <!-- Form (Formspree — swap action URL when you pick a provider) --> <form id="waitlist-form" action="https://formspree.io/f/xplaceholder" method="POST" class="space-y-4"> <div> <input type="email" name="email" required placeholder="you@company.com" class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-text placeholder:text-dd0c-muted/50 focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"> </div> <div> <select name="interest" class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-muted focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"> <option value="">Which tool interests you most?</option> <option value="route">dd0c/route — LLM Cost Router</option> <option value="drift">dd0c/drift — IaC Drift Detection</option> <option value="alert">dd0c/alert — Alert Intelligence</option> <option value="portal">dd0c/portal — Service Catalog</option> <option value="cost">dd0c/cost — AWS Cost Anomaly</option> <option value="run">dd0c/run — Runbook Automation</option> <option value="all">All of them</option> </select> </div> <button type="submit" id="waitlist-submit" class="w-full px-4 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition text-sm">
|
||||
Join the waitlist →
|
||||
</button> </form> <!-- Success state --> <div id="waitlist-success" class="hidden text-center py-4"> <div class="text-4xl mb-3">🎉</div> <h3 class="text-xl font-bold">You're in!</h3> <p class="mt-2 text-dd0c-muted text-sm">We'll ping you when dd0c is ready. Keep shipping.</p> </div> </div> </div> </main> </body></html>
|
||||
@@ -1,8 +1,13 @@
|
||||
<!DOCTYPE html><html lang="en" class="dark"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="Auto-discover services from AWS and GitHub. Ownership resolution via CODEOWNERS and tags. Meilisearch-powered search. Backstage alternative you can set up before lunch."><meta name="theme-color" content="#0a0a0f"><meta name="keywords" content="DevOps tools, platform engineering, LLM cost router, Terraform drift detection, alert correlation, service catalog, AWS cost anomaly, runbook automation, Backstage alternative, Rundeck alternative, Driftctl alternative, FinOps, SRE toolchain"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><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&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"><!-- OG --><meta property="og:title" content="dd0c/portal — Lightweight Service Catalog & Developer Portal"><meta property="og:description" content="Auto-discover services from AWS and GitHub. Ownership resolution via CODEOWNERS and tags. Meilisearch-powered search. Backstage alternative you can set up before lunch."><meta property="og:type" content="website"><meta property="og:url" content="https://dd0c.dev"><meta name="twitter:card" content="summary_large_image"><title>dd0c/portal — Lightweight Service Catalog & Developer Portal</title><link rel="stylesheet" href="/_astro/alert.BAN0u9re.css"></head> <body class="bg-dd0c-bg text-dd0c-text font-sans antialiased"> <nav class="fixed top-0 w-full z-50 border-b border-dd0c-border bg-dd0c-bg/80 backdrop-blur-xl"> <div class="max-w-6xl mx-auto px-6 h-16 flex items-center justify-between"> <a href="/" class="flex items-center gap-2"> <span class="font-mono font-bold text-xl text-dd0c-primary">dd0c</span> <span class="text-dd0c-muted text-sm hidden sm:inline">/devops</span> </a> <div class="hidden md:flex items-center gap-8 text-sm text-dd0c-muted"> <a href="#products" class="hover:text-dd0c-text transition">Products</a> <a href="#pricing" class="hover:text-dd0c-text transition">Pricing</a> <a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Docs</a> </div> <div class="flex items-center gap-4"> <a href="#waitlist" class="text-sm text-dd0c-muted hover:text-dd0c-text transition">Log in</a> <a href="#waitlist" class="text-sm px-4 py-2 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white transition font-medium">Start free</a> </div> </div> </nav> <main> <section class="pt-32 pb-20 px-6"> <div class="max-w-4xl mx-auto"> <div class="mb-8"> <span class="font-mono text-sm text-dd0c-primary">dd0c/portal</span> <h1 class="text-4xl sm:text-5xl font-bold mt-2">"Who owns this service?"<br>answered in 2 seconds</h1> <p class="mt-6 text-lg text-dd0c-muted leading-relaxed max-w-2xl">
|
||||
<!DOCTYPE html><html lang="en" class="dark"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="Auto-discover services from AWS and GitHub. Ownership resolution via CODEOWNERS and tags. Meilisearch-powered search. Backstage alternative you can set up before lunch."><meta name="theme-color" content="#0a0a0f"><meta name="keywords" content="DevOps tools, platform engineering, LLM cost router, Terraform drift detection, alert correlation, service catalog, AWS cost anomaly, runbook automation, Backstage alternative, Rundeck alternative, Driftctl alternative, FinOps, SRE toolchain"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><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&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"><!-- OG --><meta property="og:title" content="dd0c/portal — Lightweight Service Catalog & Developer Portal"><meta property="og:description" content="Auto-discover services from AWS and GitHub. Ownership resolution via CODEOWNERS and tags. Meilisearch-powered search. Backstage alternative you can set up before lunch."><meta property="og:type" content="website"><meta property="og:url" content="https://dd0c.dev"><meta name="twitter:card" content="summary_large_image"><title>dd0c/portal — Lightweight Service Catalog & Developer Portal</title><link rel="stylesheet" href="/_astro/alert.CW-I66sO.css"><script type="module">const t=document.getElementById("waitlist-modal"),s=document.getElementById("waitlist-form"),d=document.getElementById("waitlist-success"),a=document.getElementById("waitlist-submit");document.addEventListener("click",e=>{e.target.closest('a[href="#waitlist"]')&&(e.preventDefault(),t.classList.remove("hidden"),t.classList.add("flex"),t.querySelector('input[type="email"]')?.focus())});document.querySelectorAll("[data-waitlist-close]").forEach(e=>{e.addEventListener("click",()=>{t.classList.add("hidden"),t.classList.remove("flex")})});document.addEventListener("keydown",e=>{e.key==="Escape"&&(t.classList.add("hidden"),t.classList.remove("flex"))});s?.addEventListener("submit",async e=>{e.preventDefault(),a.textContent="Joining...",a.disabled=!0;try{const i=new FormData(s);(await fetch(s.action,{method:"POST",body:i,headers:{Accept:"application/json"}})).ok,s.classList.add("hidden"),d.classList.remove("hidden")}catch{s.classList.add("hidden"),d.classList.remove("hidden")}});
|
||||
</script></head> <body class="bg-dd0c-bg text-dd0c-text font-sans antialiased"> <nav class="fixed top-0 w-full z-50 border-b border-dd0c-border bg-dd0c-bg/80 backdrop-blur-xl"> <div class="max-w-6xl mx-auto px-6 h-16 flex items-center justify-between"> <a href="/" class="flex items-center gap-2"> <span class="font-mono font-bold text-xl text-dd0c-primary">dd0c</span> <span class="text-dd0c-muted text-sm hidden sm:inline">/devops</span> </a> <div class="hidden md:flex items-center gap-8 text-sm text-dd0c-muted"> <a href="#products" class="hover:text-dd0c-text transition">Products</a> <a href="#pricing" class="hover:text-dd0c-text transition">Pricing</a> <a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Docs</a> </div> <div class="flex items-center gap-4"> <a href="#waitlist" class="text-sm text-dd0c-muted hover:text-dd0c-text transition">Log in</a> <a href="#waitlist" class="text-sm px-4 py-2 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white transition font-medium">Start free</a> </div> </div> </nav> <main> <section class="pt-32 pb-20 px-6"> <div class="max-w-4xl mx-auto"> <div class="mb-8"> <span class="font-mono text-sm text-dd0c-primary">dd0c/portal</span> <h1 class="text-4xl sm:text-5xl font-bold mt-2">"Who owns this service?"<br>answered in 2 seconds</h1> <p class="mt-6 text-lg text-dd0c-muted leading-relaxed max-w-2xl">
|
||||
Auto-discovers ECS services, Lambda functions, and RDS instances from AWS. Reads CODEOWNERS from GitHub. Full-text search across your entire service catalog. Like Backstage, but you can set it up before lunch.
|
||||
</p> </div> <div class="mt-10 flex gap-4"> <a href="#waitlist" class="px-6 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">Start free →</a> <a href="https://docs.dd0c.dev/portal" class="px-6 py-3 rounded-lg border border-dd0c-border hover:border-dd0c-muted text-dd0c-muted hover:text-dd0c-text transition">Read docs</a> </div> <div class="mt-16 grid md:grid-cols-3 gap-6"> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">🔎</div> <h3 class="font-semibold mb-2">Auto-discovery</h3> <p class="text-sm text-dd0c-muted">Scans AWS (ECS, Lambda, RDS) and GitHub orgs. Partial scan failures stage results — never corrupts your catalog.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">👤</div> <h3 class="font-semibold mb-2">Ownership resolution</h3> <p class="text-sm text-dd0c-muted">Config > CODEOWNERS > AWS tags > heuristic. Explicit always wins. No more guessing.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">⚡</div> <h3 class="font-semibold mb-2">Instant search</h3> <p class="text-sm text-dd0c-muted">Meilisearch-powered full-text search. Falls back to PostgreSQL if Meili is down. Always available.</p> </div> </div> </div> </section> <section class="py-20 px-6 border-t border-dd0c-border"> <div class="max-w-3xl mx-auto text-center"> <h2 class="text-3xl sm:text-4xl font-bold">Stop paying enterprise prices<br>for tools you half-use</h2> <p class="mt-6 text-dd0c-muted text-lg leading-relaxed">
|
||||
dd0c is built by a solo engineer who got tired of $50K/year DevOps platforms
|
||||
that take 3 months to set up. Each tool does one thing well. Start free. Pay when it saves you money.
|
||||
</p> <div class="mt-10"> <a href="#waitlist" class="inline-flex px-8 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">
|
||||
Get started — it's free →
|
||||
</a> </div> </div> </section> <footer class="py-12 px-6 border-t border-dd0c-border"> <div class="max-w-6xl mx-auto"> <div class="grid md:grid-cols-4 gap-8"> <div> <span class="font-mono font-bold text-lg text-dd0c-primary">dd0c</span> <p class="mt-2 text-sm text-dd0c-muted">DevOps tools that don't waste your time.</p> </div> <div> <h4 class="font-semibold text-sm mb-3">Products</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="/route" class="hover:text-dd0c-text transition">dd0c/route</a></li> <li><a href="/drift" class="hover:text-dd0c-text transition">dd0c/drift</a></li> <li><a href="/alert" class="hover:text-dd0c-text transition">dd0c/alert</a></li> <li><a href="/portal" class="hover:text-dd0c-text transition">dd0c/portal</a></li> <li><a href="/cost" class="hover:text-dd0c-text transition">dd0c/cost</a></li> <li><a href="/run" class="hover:text-dd0c-text transition">dd0c/run</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Resources</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Documentation</a></li> <li><a href="https://docs.dd0c.dev/self-hosted" class="hover:text-dd0c-text transition">Self-hosted guide</a></li> <li><a href="https://docs.dd0c.dev/api" class="hover:text-dd0c-text transition">API reference</a></li> <li><a href="/changelog" class="hover:text-dd0c-text transition">Changelog</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Company</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://github.com/dd0c" class="hover:text-dd0c-text transition">GitHub</a></li> <li><a href="https://twitter.com/dd0cdev" class="hover:text-dd0c-text transition">Twitter</a></li> <li><a href="/privacy" class="hover:text-dd0c-text transition">Privacy</a></li> <li><a href="/terms" class="hover:text-dd0c-text transition">Terms</a></li> </ul> </div> </div> <div class="mt-12 pt-8 border-t border-dd0c-border flex flex-col sm:flex-row items-center justify-between gap-4"> <p class="text-xs text-dd0c-muted">© 2026 dd0c. All rights reserved.</p> <p class="text-xs text-dd0c-muted">Built with ☕ by a solo founder who ships.</p> </div> </div> </footer> </main> </body></html>
|
||||
</a> </div> </div> </section> <footer class="py-12 px-6 border-t border-dd0c-border"> <div class="max-w-6xl mx-auto"> <div class="grid md:grid-cols-4 gap-8"> <div> <span class="font-mono font-bold text-lg text-dd0c-primary">dd0c</span> <p class="mt-2 text-sm text-dd0c-muted">DevOps tools that don't waste your time.</p> </div> <div> <h4 class="font-semibold text-sm mb-3">Products</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="/route" class="hover:text-dd0c-text transition">dd0c/route</a></li> <li><a href="/drift" class="hover:text-dd0c-text transition">dd0c/drift</a></li> <li><a href="/alert" class="hover:text-dd0c-text transition">dd0c/alert</a></li> <li><a href="/portal" class="hover:text-dd0c-text transition">dd0c/portal</a></li> <li><a href="/cost" class="hover:text-dd0c-text transition">dd0c/cost</a></li> <li><a href="/run" class="hover:text-dd0c-text transition">dd0c/run</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Resources</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Documentation</a></li> <li><a href="https://docs.dd0c.dev/self-hosted" class="hover:text-dd0c-text transition">Self-hosted guide</a></li> <li><a href="https://docs.dd0c.dev/api" class="hover:text-dd0c-text transition">API reference</a></li> <li><a href="/changelog" class="hover:text-dd0c-text transition">Changelog</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Company</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://github.com/dd0c" class="hover:text-dd0c-text transition">GitHub</a></li> <li><a href="https://twitter.com/dd0cdev" class="hover:text-dd0c-text transition">Twitter</a></li> <li><a href="/privacy" class="hover:text-dd0c-text transition">Privacy</a></li> <li><a href="/terms" class="hover:text-dd0c-text transition">Terms</a></li> </ul> </div> </div> <div class="mt-12 pt-8 border-t border-dd0c-border flex flex-col sm:flex-row items-center justify-between gap-4"> <p class="text-xs text-dd0c-muted">© 2026 dd0c. All rights reserved.</p> <p class="text-xs text-dd0c-muted">Built with ☕ by a solo founder who ships.</p> </div> </div> </footer> <div id="waitlist-modal" class="fixed inset-0 z-[100] hidden items-center justify-center"> <!-- Backdrop --> <div class="absolute inset-0 bg-black/70 backdrop-blur-sm" data-waitlist-close></div> <!-- Modal --> <div class="relative w-full max-w-md mx-4 rounded-2xl border border-dd0c-border bg-dd0c-surface p-8 shadow-2xl"> <button data-waitlist-close class="absolute top-4 right-4 text-dd0c-muted hover:text-dd0c-text transition" aria-label="Close"> <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path></svg> </button> <div class="text-center mb-6"> <span class="inline-flex items-center gap-2 px-3 py-1 rounded-full border border-dd0c-border text-xs text-dd0c-muted mb-4"> <span class="w-2 h-2 rounded-full bg-emerald-400 animate-pulse"></span>
|
||||
Early access
|
||||
</span> <h3 class="text-2xl font-bold">Get on the list</h3> <p class="mt-2 text-dd0c-muted text-sm">Be first to try dd0c when we launch. No spam, just a heads up.</p> </div> <!-- Form (Formspree — swap action URL when you pick a provider) --> <form id="waitlist-form" action="https://formspree.io/f/xplaceholder" method="POST" class="space-y-4"> <div> <input type="email" name="email" required placeholder="you@company.com" class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-text placeholder:text-dd0c-muted/50 focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"> </div> <div> <select name="interest" class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-muted focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"> <option value="">Which tool interests you most?</option> <option value="route">dd0c/route — LLM Cost Router</option> <option value="drift">dd0c/drift — IaC Drift Detection</option> <option value="alert">dd0c/alert — Alert Intelligence</option> <option value="portal">dd0c/portal — Service Catalog</option> <option value="cost">dd0c/cost — AWS Cost Anomaly</option> <option value="run">dd0c/run — Runbook Automation</option> <option value="all">All of them</option> </select> </div> <button type="submit" id="waitlist-submit" class="w-full px-4 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition text-sm">
|
||||
Join the waitlist →
|
||||
</button> </form> <!-- Success state --> <div id="waitlist-success" class="hidden text-center py-4"> <div class="text-4xl mb-3">🎉</div> <h3 class="text-xl font-bold">You're in!</h3> <p class="mt-2 text-dd0c-muted text-sm">We'll ping you when dd0c is ready. Keep shipping.</p> </div> </div> </div> </main> </body></html>
|
||||
@@ -1,4 +1,5 @@
|
||||
<!DOCTYPE html><html lang="en" class="dark"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="Route AI API calls to the cheapest provider. Drop-in OpenAI proxy with cost-based routing, real-time dashboards, and budget alerts. LiteLLM alternative with sub-ms Rust latency."><meta name="theme-color" content="#0a0a0f"><meta name="keywords" content="DevOps tools, platform engineering, LLM cost router, Terraform drift detection, alert correlation, service catalog, AWS cost anomaly, runbook automation, Backstage alternative, Rundeck alternative, Driftctl alternative, FinOps, SRE toolchain"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><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&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"><!-- OG --><meta property="og:title" content="dd0c/route — LLM Cost Router & Dashboard"><meta property="og:description" content="Route AI API calls to the cheapest provider. Drop-in OpenAI proxy with cost-based routing, real-time dashboards, and budget alerts. LiteLLM alternative with sub-ms Rust latency."><meta property="og:type" content="website"><meta property="og:url" content="https://dd0c.dev"><meta name="twitter:card" content="summary_large_image"><title>dd0c/route — LLM Cost Router & Dashboard</title><link rel="stylesheet" href="/_astro/alert.BAN0u9re.css"></head> <body class="bg-dd0c-bg text-dd0c-text font-sans antialiased"> <nav class="fixed top-0 w-full z-50 border-b border-dd0c-border bg-dd0c-bg/80 backdrop-blur-xl"> <div class="max-w-6xl mx-auto px-6 h-16 flex items-center justify-between"> <a href="/" class="flex items-center gap-2"> <span class="font-mono font-bold text-xl text-dd0c-primary">dd0c</span> <span class="text-dd0c-muted text-sm hidden sm:inline">/devops</span> </a> <div class="hidden md:flex items-center gap-8 text-sm text-dd0c-muted"> <a href="#products" class="hover:text-dd0c-text transition">Products</a> <a href="#pricing" class="hover:text-dd0c-text transition">Pricing</a> <a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Docs</a> </div> <div class="flex items-center gap-4"> <a href="#waitlist" class="text-sm text-dd0c-muted hover:text-dd0c-text transition">Log in</a> <a href="#waitlist" class="text-sm px-4 py-2 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white transition font-medium">Start free</a> </div> </div> </nav> <main> <section class="pt-32 pb-20 px-6"> <div class="max-w-4xl mx-auto"> <div class="mb-8"> <span class="font-mono text-sm text-dd0c-primary">dd0c/route</span> <h1 class="text-4xl sm:text-5xl font-bold mt-2">Stop burning money on LLM APIs</h1> <p class="mt-6 text-lg text-dd0c-muted leading-relaxed max-w-2xl">
|
||||
<!DOCTYPE html><html lang="en" class="dark"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="Route AI API calls to the cheapest provider. Drop-in OpenAI proxy with cost-based routing, real-time dashboards, and budget alerts. LiteLLM alternative with sub-ms Rust latency."><meta name="theme-color" content="#0a0a0f"><meta name="keywords" content="DevOps tools, platform engineering, LLM cost router, Terraform drift detection, alert correlation, service catalog, AWS cost anomaly, runbook automation, Backstage alternative, Rundeck alternative, Driftctl alternative, FinOps, SRE toolchain"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><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&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"><!-- OG --><meta property="og:title" content="dd0c/route — LLM Cost Router & Dashboard"><meta property="og:description" content="Route AI API calls to the cheapest provider. Drop-in OpenAI proxy with cost-based routing, real-time dashboards, and budget alerts. LiteLLM alternative with sub-ms Rust latency."><meta property="og:type" content="website"><meta property="og:url" content="https://dd0c.dev"><meta name="twitter:card" content="summary_large_image"><title>dd0c/route — LLM Cost Router & Dashboard</title><link rel="stylesheet" href="/_astro/alert.CW-I66sO.css"><script type="module">const t=document.getElementById("waitlist-modal"),s=document.getElementById("waitlist-form"),d=document.getElementById("waitlist-success"),a=document.getElementById("waitlist-submit");document.addEventListener("click",e=>{e.target.closest('a[href="#waitlist"]')&&(e.preventDefault(),t.classList.remove("hidden"),t.classList.add("flex"),t.querySelector('input[type="email"]')?.focus())});document.querySelectorAll("[data-waitlist-close]").forEach(e=>{e.addEventListener("click",()=>{t.classList.add("hidden"),t.classList.remove("flex")})});document.addEventListener("keydown",e=>{e.key==="Escape"&&(t.classList.add("hidden"),t.classList.remove("flex"))});s?.addEventListener("submit",async e=>{e.preventDefault(),a.textContent="Joining...",a.disabled=!0;try{const i=new FormData(s);(await fetch(s.action,{method:"POST",body:i,headers:{Accept:"application/json"}})).ok,s.classList.add("hidden"),d.classList.remove("hidden")}catch{s.classList.add("hidden"),d.classList.remove("hidden")}});
|
||||
</script></head> <body class="bg-dd0c-bg text-dd0c-text font-sans antialiased"> <nav class="fixed top-0 w-full z-50 border-b border-dd0c-border bg-dd0c-bg/80 backdrop-blur-xl"> <div class="max-w-6xl mx-auto px-6 h-16 flex items-center justify-between"> <a href="/" class="flex items-center gap-2"> <span class="font-mono font-bold text-xl text-dd0c-primary">dd0c</span> <span class="text-dd0c-muted text-sm hidden sm:inline">/devops</span> </a> <div class="hidden md:flex items-center gap-8 text-sm text-dd0c-muted"> <a href="#products" class="hover:text-dd0c-text transition">Products</a> <a href="#pricing" class="hover:text-dd0c-text transition">Pricing</a> <a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Docs</a> </div> <div class="flex items-center gap-4"> <a href="#waitlist" class="text-sm text-dd0c-muted hover:text-dd0c-text transition">Log in</a> <a href="#waitlist" class="text-sm px-4 py-2 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white transition font-medium">Start free</a> </div> </div> </nav> <main> <section class="pt-32 pb-20 px-6"> <div class="max-w-4xl mx-auto"> <div class="mb-8"> <span class="font-mono text-sm text-dd0c-primary">dd0c/route</span> <h1 class="text-4xl sm:text-5xl font-bold mt-2">Stop burning money on LLM APIs</h1> <p class="mt-6 text-lg text-dd0c-muted leading-relaxed max-w-2xl">
|
||||
Drop-in proxy that sits between your app and OpenAI/Anthropic/Google. Routes each request to the cheapest provider that meets your quality threshold. Real-time cost dashboards. Budget alerts before you blow through $10K.
|
||||
</p> </div> <div class="mt-10 flex gap-4"> <a href="#waitlist" class="px-6 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">Start free →</a> <a href="https://docs.dd0c.dev/route" class="px-6 py-3 rounded-lg border border-dd0c-border hover:border-dd0c-muted text-dd0c-muted hover:text-dd0c-text transition">Read docs</a> </div> <div class="mt-16 grid md:grid-cols-3 gap-6"> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">💸</div> <h3 class="font-semibold mb-2">Cost-based routing</h3> <p class="text-sm text-dd0c-muted">Classify prompt complexity. Route simple queries to cheap models, complex ones to GPT-4. Save 40-60% on average.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">📊</div> <h3 class="font-semibold mb-2">Real-time dashboard</h3> <p class="text-sm text-dd0c-muted">Cost per model, per team, per endpoint. Token usage breakdowns. Anomaly detection when spend spikes.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">🔑</div> <h3 class="font-semibold mb-2">API key management</h3> <p class="text-sm text-dd0c-muted">Issue scoped keys per team. Set budget caps. Rotate without downtime. Full audit trail.</p> </div> </div> <div class="mt-16 rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <h3 class="font-semibold mb-4">Integration is one line</h3> <pre class="font-mono text-sm text-dd0c-muted overflow-x-auto"><code><span class="text-dd0c-muted"># Before</span>
|
||||
<span class="text-dd0c-accent">OPENAI_BASE_URL</span>=https://api.openai.com/v1
|
||||
@@ -9,4 +10,8 @@ dd0c is built by a solo engineer who got tired of $50K/year DevOps platforms
|
||||
that take 3 months to set up. Each tool does one thing well. Start free. Pay when it saves you money.
|
||||
</p> <div class="mt-10"> <a href="#waitlist" class="inline-flex px-8 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">
|
||||
Get started — it's free →
|
||||
</a> </div> </div> </section> <footer class="py-12 px-6 border-t border-dd0c-border"> <div class="max-w-6xl mx-auto"> <div class="grid md:grid-cols-4 gap-8"> <div> <span class="font-mono font-bold text-lg text-dd0c-primary">dd0c</span> <p class="mt-2 text-sm text-dd0c-muted">DevOps tools that don't waste your time.</p> </div> <div> <h4 class="font-semibold text-sm mb-3">Products</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="/route" class="hover:text-dd0c-text transition">dd0c/route</a></li> <li><a href="/drift" class="hover:text-dd0c-text transition">dd0c/drift</a></li> <li><a href="/alert" class="hover:text-dd0c-text transition">dd0c/alert</a></li> <li><a href="/portal" class="hover:text-dd0c-text transition">dd0c/portal</a></li> <li><a href="/cost" class="hover:text-dd0c-text transition">dd0c/cost</a></li> <li><a href="/run" class="hover:text-dd0c-text transition">dd0c/run</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Resources</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Documentation</a></li> <li><a href="https://docs.dd0c.dev/self-hosted" class="hover:text-dd0c-text transition">Self-hosted guide</a></li> <li><a href="https://docs.dd0c.dev/api" class="hover:text-dd0c-text transition">API reference</a></li> <li><a href="/changelog" class="hover:text-dd0c-text transition">Changelog</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Company</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://github.com/dd0c" class="hover:text-dd0c-text transition">GitHub</a></li> <li><a href="https://twitter.com/dd0cdev" class="hover:text-dd0c-text transition">Twitter</a></li> <li><a href="/privacy" class="hover:text-dd0c-text transition">Privacy</a></li> <li><a href="/terms" class="hover:text-dd0c-text transition">Terms</a></li> </ul> </div> </div> <div class="mt-12 pt-8 border-t border-dd0c-border flex flex-col sm:flex-row items-center justify-between gap-4"> <p class="text-xs text-dd0c-muted">© 2026 dd0c. All rights reserved.</p> <p class="text-xs text-dd0c-muted">Built with ☕ by a solo founder who ships.</p> </div> </div> </footer> </main> </body></html>
|
||||
</a> </div> </div> </section> <footer class="py-12 px-6 border-t border-dd0c-border"> <div class="max-w-6xl mx-auto"> <div class="grid md:grid-cols-4 gap-8"> <div> <span class="font-mono font-bold text-lg text-dd0c-primary">dd0c</span> <p class="mt-2 text-sm text-dd0c-muted">DevOps tools that don't waste your time.</p> </div> <div> <h4 class="font-semibold text-sm mb-3">Products</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="/route" class="hover:text-dd0c-text transition">dd0c/route</a></li> <li><a href="/drift" class="hover:text-dd0c-text transition">dd0c/drift</a></li> <li><a href="/alert" class="hover:text-dd0c-text transition">dd0c/alert</a></li> <li><a href="/portal" class="hover:text-dd0c-text transition">dd0c/portal</a></li> <li><a href="/cost" class="hover:text-dd0c-text transition">dd0c/cost</a></li> <li><a href="/run" class="hover:text-dd0c-text transition">dd0c/run</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Resources</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Documentation</a></li> <li><a href="https://docs.dd0c.dev/self-hosted" class="hover:text-dd0c-text transition">Self-hosted guide</a></li> <li><a href="https://docs.dd0c.dev/api" class="hover:text-dd0c-text transition">API reference</a></li> <li><a href="/changelog" class="hover:text-dd0c-text transition">Changelog</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Company</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://github.com/dd0c" class="hover:text-dd0c-text transition">GitHub</a></li> <li><a href="https://twitter.com/dd0cdev" class="hover:text-dd0c-text transition">Twitter</a></li> <li><a href="/privacy" class="hover:text-dd0c-text transition">Privacy</a></li> <li><a href="/terms" class="hover:text-dd0c-text transition">Terms</a></li> </ul> </div> </div> <div class="mt-12 pt-8 border-t border-dd0c-border flex flex-col sm:flex-row items-center justify-between gap-4"> <p class="text-xs text-dd0c-muted">© 2026 dd0c. All rights reserved.</p> <p class="text-xs text-dd0c-muted">Built with ☕ by a solo founder who ships.</p> </div> </div> </footer> <div id="waitlist-modal" class="fixed inset-0 z-[100] hidden items-center justify-center"> <!-- Backdrop --> <div class="absolute inset-0 bg-black/70 backdrop-blur-sm" data-waitlist-close></div> <!-- Modal --> <div class="relative w-full max-w-md mx-4 rounded-2xl border border-dd0c-border bg-dd0c-surface p-8 shadow-2xl"> <button data-waitlist-close class="absolute top-4 right-4 text-dd0c-muted hover:text-dd0c-text transition" aria-label="Close"> <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path></svg> </button> <div class="text-center mb-6"> <span class="inline-flex items-center gap-2 px-3 py-1 rounded-full border border-dd0c-border text-xs text-dd0c-muted mb-4"> <span class="w-2 h-2 rounded-full bg-emerald-400 animate-pulse"></span>
|
||||
Early access
|
||||
</span> <h3 class="text-2xl font-bold">Get on the list</h3> <p class="mt-2 text-dd0c-muted text-sm">Be first to try dd0c when we launch. No spam, just a heads up.</p> </div> <!-- Form (Formspree — swap action URL when you pick a provider) --> <form id="waitlist-form" action="https://formspree.io/f/xplaceholder" method="POST" class="space-y-4"> <div> <input type="email" name="email" required placeholder="you@company.com" class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-text placeholder:text-dd0c-muted/50 focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"> </div> <div> <select name="interest" class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-muted focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"> <option value="">Which tool interests you most?</option> <option value="route">dd0c/route — LLM Cost Router</option> <option value="drift">dd0c/drift — IaC Drift Detection</option> <option value="alert">dd0c/alert — Alert Intelligence</option> <option value="portal">dd0c/portal — Service Catalog</option> <option value="cost">dd0c/cost — AWS Cost Anomaly</option> <option value="run">dd0c/run — Runbook Automation</option> <option value="all">All of them</option> </select> </div> <button type="submit" id="waitlist-submit" class="w-full px-4 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition text-sm">
|
||||
Join the waitlist →
|
||||
</button> </form> <!-- Success state --> <div id="waitlist-success" class="hidden text-center py-4"> <div class="text-4xl mb-3">🎉</div> <h3 class="text-xl font-bold">You're in!</h3> <p class="mt-2 text-dd0c-muted text-sm">We'll ping you when dd0c is ready. Keep shipping.</p> </div> </div> </div> </main> </body></html>
|
||||
9
products/marketing/site/dist/run/index.html
vendored
9
products/marketing/site/dist/run/index.html
vendored
@@ -1,4 +1,5 @@
|
||||
<!DOCTYPE html><html lang="en" class="dark"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="YAML runbooks with automatic safety classification. Destructive commands require Slack approval. Full audit trail, Redis pub/sub agent bridge. Rundeck alternative for DevOps teams."><meta name="theme-color" content="#0a0a0f"><meta name="keywords" content="DevOps tools, platform engineering, LLM cost router, Terraform drift detection, alert correlation, service catalog, AWS cost anomaly, runbook automation, Backstage alternative, Rundeck alternative, Driftctl alternative, FinOps, SRE toolchain"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><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&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"><!-- OG --><meta property="og:title" content="dd0c/run — Runbook Automation with Approval Gates"><meta property="og:description" content="YAML runbooks with automatic safety classification. Destructive commands require Slack approval. Full audit trail, Redis pub/sub agent bridge. Rundeck alternative for DevOps teams."><meta property="og:type" content="website"><meta property="og:url" content="https://dd0c.dev"><meta name="twitter:card" content="summary_large_image"><title>dd0c/run — Runbook Automation with Approval Gates</title><link rel="stylesheet" href="/_astro/alert.BAN0u9re.css"></head> <body class="bg-dd0c-bg text-dd0c-text font-sans antialiased"> <nav class="fixed top-0 w-full z-50 border-b border-dd0c-border bg-dd0c-bg/80 backdrop-blur-xl"> <div class="max-w-6xl mx-auto px-6 h-16 flex items-center justify-between"> <a href="/" class="flex items-center gap-2"> <span class="font-mono font-bold text-xl text-dd0c-primary">dd0c</span> <span class="text-dd0c-muted text-sm hidden sm:inline">/devops</span> </a> <div class="hidden md:flex items-center gap-8 text-sm text-dd0c-muted"> <a href="#products" class="hover:text-dd0c-text transition">Products</a> <a href="#pricing" class="hover:text-dd0c-text transition">Pricing</a> <a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Docs</a> </div> <div class="flex items-center gap-4"> <a href="#waitlist" class="text-sm text-dd0c-muted hover:text-dd0c-text transition">Log in</a> <a href="#waitlist" class="text-sm px-4 py-2 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white transition font-medium">Start free</a> </div> </div> </nav> <main> <section class="pt-32 pb-20 px-6"> <div class="max-w-4xl mx-auto"> <div class="mb-8"> <span class="font-mono text-sm text-dd0c-primary">dd0c/run</span> <h1 class="text-4xl sm:text-5xl font-bold mt-2">Runbooks that run themselves<br>(with your permission)</h1> <p class="mt-6 text-lg text-dd0c-muted leading-relaxed max-w-2xl">
|
||||
<!DOCTYPE html><html lang="en" class="dark"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="YAML runbooks with automatic safety classification. Destructive commands require Slack approval. Full audit trail, Redis pub/sub agent bridge. Rundeck alternative for DevOps teams."><meta name="theme-color" content="#0a0a0f"><meta name="keywords" content="DevOps tools, platform engineering, LLM cost router, Terraform drift detection, alert correlation, service catalog, AWS cost anomaly, runbook automation, Backstage alternative, Rundeck alternative, Driftctl alternative, FinOps, SRE toolchain"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><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&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"><!-- OG --><meta property="og:title" content="dd0c/run — Runbook Automation with Approval Gates"><meta property="og:description" content="YAML runbooks with automatic safety classification. Destructive commands require Slack approval. Full audit trail, Redis pub/sub agent bridge. Rundeck alternative for DevOps teams."><meta property="og:type" content="website"><meta property="og:url" content="https://dd0c.dev"><meta name="twitter:card" content="summary_large_image"><title>dd0c/run — Runbook Automation with Approval Gates</title><link rel="stylesheet" href="/_astro/alert.CW-I66sO.css"><script type="module">const t=document.getElementById("waitlist-modal"),s=document.getElementById("waitlist-form"),d=document.getElementById("waitlist-success"),a=document.getElementById("waitlist-submit");document.addEventListener("click",e=>{e.target.closest('a[href="#waitlist"]')&&(e.preventDefault(),t.classList.remove("hidden"),t.classList.add("flex"),t.querySelector('input[type="email"]')?.focus())});document.querySelectorAll("[data-waitlist-close]").forEach(e=>{e.addEventListener("click",()=>{t.classList.add("hidden"),t.classList.remove("flex")})});document.addEventListener("keydown",e=>{e.key==="Escape"&&(t.classList.add("hidden"),t.classList.remove("flex"))});s?.addEventListener("submit",async e=>{e.preventDefault(),a.textContent="Joining...",a.disabled=!0;try{const i=new FormData(s);(await fetch(s.action,{method:"POST",body:i,headers:{Accept:"application/json"}})).ok,s.classList.add("hidden"),d.classList.remove("hidden")}catch{s.classList.add("hidden"),d.classList.remove("hidden")}});
|
||||
</script></head> <body class="bg-dd0c-bg text-dd0c-text font-sans antialiased"> <nav class="fixed top-0 w-full z-50 border-b border-dd0c-border bg-dd0c-bg/80 backdrop-blur-xl"> <div class="max-w-6xl mx-auto px-6 h-16 flex items-center justify-between"> <a href="/" class="flex items-center gap-2"> <span class="font-mono font-bold text-xl text-dd0c-primary">dd0c</span> <span class="text-dd0c-muted text-sm hidden sm:inline">/devops</span> </a> <div class="hidden md:flex items-center gap-8 text-sm text-dd0c-muted"> <a href="#products" class="hover:text-dd0c-text transition">Products</a> <a href="#pricing" class="hover:text-dd0c-text transition">Pricing</a> <a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Docs</a> </div> <div class="flex items-center gap-4"> <a href="#waitlist" class="text-sm text-dd0c-muted hover:text-dd0c-text transition">Log in</a> <a href="#waitlist" class="text-sm px-4 py-2 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white transition font-medium">Start free</a> </div> </div> </nav> <main> <section class="pt-32 pb-20 px-6"> <div class="max-w-4xl mx-auto"> <div class="mb-8"> <span class="font-mono text-sm text-dd0c-primary">dd0c/run</span> <h1 class="text-4xl sm:text-5xl font-bold mt-2">Runbooks that run themselves<br>(with your permission)</h1> <p class="mt-6 text-lg text-dd0c-muted leading-relaxed max-w-2xl">
|
||||
Write runbooks in YAML. The Rust agent classifies every command as read-only, modifying, or destructive. Read-only runs automatically. Destructive commands pause and ask for Slack approval. Full audit trail. No YOLO.
|
||||
</p> </div> <div class="mt-10 flex gap-4"> <a href="#waitlist" class="px-6 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">Start free →</a> <a href="https://docs.dd0c.dev/run" class="px-6 py-3 rounded-lg border border-dd0c-border hover:border-dd0c-muted text-dd0c-muted hover:text-dd0c-text transition">Read docs</a> </div> <div class="mt-16 rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <h3 class="font-semibold mb-4">Example runbook</h3> <pre class="font-mono text-sm text-dd0c-muted overflow-x-auto"><code><span class="text-dd0c-primary">name:</span> restart-ecs-service
|
||||
<span class="text-dd0c-primary">steps:</span>
|
||||
@@ -20,4 +21,8 @@ dd0c is built by a solo engineer who got tired of $50K/year DevOps platforms
|
||||
that take 3 months to set up. Each tool does one thing well. Start free. Pay when it saves you money.
|
||||
</p> <div class="mt-10"> <a href="#waitlist" class="inline-flex px-8 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">
|
||||
Get started — it's free →
|
||||
</a> </div> </div> </section> <footer class="py-12 px-6 border-t border-dd0c-border"> <div class="max-w-6xl mx-auto"> <div class="grid md:grid-cols-4 gap-8"> <div> <span class="font-mono font-bold text-lg text-dd0c-primary">dd0c</span> <p class="mt-2 text-sm text-dd0c-muted">DevOps tools that don't waste your time.</p> </div> <div> <h4 class="font-semibold text-sm mb-3">Products</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="/route" class="hover:text-dd0c-text transition">dd0c/route</a></li> <li><a href="/drift" class="hover:text-dd0c-text transition">dd0c/drift</a></li> <li><a href="/alert" class="hover:text-dd0c-text transition">dd0c/alert</a></li> <li><a href="/portal" class="hover:text-dd0c-text transition">dd0c/portal</a></li> <li><a href="/cost" class="hover:text-dd0c-text transition">dd0c/cost</a></li> <li><a href="/run" class="hover:text-dd0c-text transition">dd0c/run</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Resources</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Documentation</a></li> <li><a href="https://docs.dd0c.dev/self-hosted" class="hover:text-dd0c-text transition">Self-hosted guide</a></li> <li><a href="https://docs.dd0c.dev/api" class="hover:text-dd0c-text transition">API reference</a></li> <li><a href="/changelog" class="hover:text-dd0c-text transition">Changelog</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Company</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://github.com/dd0c" class="hover:text-dd0c-text transition">GitHub</a></li> <li><a href="https://twitter.com/dd0cdev" class="hover:text-dd0c-text transition">Twitter</a></li> <li><a href="/privacy" class="hover:text-dd0c-text transition">Privacy</a></li> <li><a href="/terms" class="hover:text-dd0c-text transition">Terms</a></li> </ul> </div> </div> <div class="mt-12 pt-8 border-t border-dd0c-border flex flex-col sm:flex-row items-center justify-between gap-4"> <p class="text-xs text-dd0c-muted">© 2026 dd0c. All rights reserved.</p> <p class="text-xs text-dd0c-muted">Built with ☕ by a solo founder who ships.</p> </div> </div> </footer> </main> </body></html>
|
||||
</a> </div> </div> </section> <footer class="py-12 px-6 border-t border-dd0c-border"> <div class="max-w-6xl mx-auto"> <div class="grid md:grid-cols-4 gap-8"> <div> <span class="font-mono font-bold text-lg text-dd0c-primary">dd0c</span> <p class="mt-2 text-sm text-dd0c-muted">DevOps tools that don't waste your time.</p> </div> <div> <h4 class="font-semibold text-sm mb-3">Products</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="/route" class="hover:text-dd0c-text transition">dd0c/route</a></li> <li><a href="/drift" class="hover:text-dd0c-text transition">dd0c/drift</a></li> <li><a href="/alert" class="hover:text-dd0c-text transition">dd0c/alert</a></li> <li><a href="/portal" class="hover:text-dd0c-text transition">dd0c/portal</a></li> <li><a href="/cost" class="hover:text-dd0c-text transition">dd0c/cost</a></li> <li><a href="/run" class="hover:text-dd0c-text transition">dd0c/run</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Resources</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Documentation</a></li> <li><a href="https://docs.dd0c.dev/self-hosted" class="hover:text-dd0c-text transition">Self-hosted guide</a></li> <li><a href="https://docs.dd0c.dev/api" class="hover:text-dd0c-text transition">API reference</a></li> <li><a href="/changelog" class="hover:text-dd0c-text transition">Changelog</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Company</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://github.com/dd0c" class="hover:text-dd0c-text transition">GitHub</a></li> <li><a href="https://twitter.com/dd0cdev" class="hover:text-dd0c-text transition">Twitter</a></li> <li><a href="/privacy" class="hover:text-dd0c-text transition">Privacy</a></li> <li><a href="/terms" class="hover:text-dd0c-text transition">Terms</a></li> </ul> </div> </div> <div class="mt-12 pt-8 border-t border-dd0c-border flex flex-col sm:flex-row items-center justify-between gap-4"> <p class="text-xs text-dd0c-muted">© 2026 dd0c. All rights reserved.</p> <p class="text-xs text-dd0c-muted">Built with ☕ by a solo founder who ships.</p> </div> </div> </footer> <div id="waitlist-modal" class="fixed inset-0 z-[100] hidden items-center justify-center"> <!-- Backdrop --> <div class="absolute inset-0 bg-black/70 backdrop-blur-sm" data-waitlist-close></div> <!-- Modal --> <div class="relative w-full max-w-md mx-4 rounded-2xl border border-dd0c-border bg-dd0c-surface p-8 shadow-2xl"> <button data-waitlist-close class="absolute top-4 right-4 text-dd0c-muted hover:text-dd0c-text transition" aria-label="Close"> <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path></svg> </button> <div class="text-center mb-6"> <span class="inline-flex items-center gap-2 px-3 py-1 rounded-full border border-dd0c-border text-xs text-dd0c-muted mb-4"> <span class="w-2 h-2 rounded-full bg-emerald-400 animate-pulse"></span>
|
||||
Early access
|
||||
</span> <h3 class="text-2xl font-bold">Get on the list</h3> <p class="mt-2 text-dd0c-muted text-sm">Be first to try dd0c when we launch. No spam, just a heads up.</p> </div> <!-- Form (Formspree — swap action URL when you pick a provider) --> <form id="waitlist-form" action="https://formspree.io/f/xplaceholder" method="POST" class="space-y-4"> <div> <input type="email" name="email" required placeholder="you@company.com" class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-text placeholder:text-dd0c-muted/50 focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"> </div> <div> <select name="interest" class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-muted focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"> <option value="">Which tool interests you most?</option> <option value="route">dd0c/route — LLM Cost Router</option> <option value="drift">dd0c/drift — IaC Drift Detection</option> <option value="alert">dd0c/alert — Alert Intelligence</option> <option value="portal">dd0c/portal — Service Catalog</option> <option value="cost">dd0c/cost — AWS Cost Anomaly</option> <option value="run">dd0c/run — Runbook Automation</option> <option value="all">All of them</option> </select> </div> <button type="submit" id="waitlist-submit" class="w-full px-4 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition text-sm">
|
||||
Join the waitlist →
|
||||
</button> </form> <!-- Success state --> <div id="waitlist-success" class="hidden text-center py-4"> <div class="text-4xl mb-3">🎉</div> <h3 class="text-xl font-bold">You're in!</h3> <p class="mt-2 text-dd0c-muted text-sm">We'll ping you when dd0c is ready. Keep shipping.</p> </div> </div> </div> </main> </body></html>
|
||||
128
products/marketing/site/src/components/Waitlist.astro
Normal file
128
products/marketing/site/src/components/Waitlist.astro
Normal file
@@ -0,0 +1,128 @@
|
||||
---
|
||||
---
|
||||
|
||||
<div id="waitlist-modal" class="fixed inset-0 z-[100] hidden items-center justify-center">
|
||||
<!-- Backdrop -->
|
||||
<div class="absolute inset-0 bg-black/70 backdrop-blur-sm" data-waitlist-close></div>
|
||||
|
||||
<!-- Modal -->
|
||||
<div class="relative w-full max-w-md mx-4 rounded-2xl border border-dd0c-border bg-dd0c-surface p-8 shadow-2xl">
|
||||
<button data-waitlist-close class="absolute top-4 right-4 text-dd0c-muted hover:text-dd0c-text transition" aria-label="Close">
|
||||
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/></svg>
|
||||
</button>
|
||||
|
||||
<div class="text-center mb-6">
|
||||
<span class="inline-flex items-center gap-2 px-3 py-1 rounded-full border border-dd0c-border text-xs text-dd0c-muted mb-4">
|
||||
<span class="w-2 h-2 rounded-full bg-emerald-400 animate-pulse"></span>
|
||||
Early access
|
||||
</span>
|
||||
<h3 class="text-2xl font-bold">Get on the list</h3>
|
||||
<p class="mt-2 text-dd0c-muted text-sm">Be first to try dd0c when we launch. No spam, just a heads up.</p>
|
||||
</div>
|
||||
|
||||
<!-- Form (Formspree — swap action URL when you pick a provider) -->
|
||||
<form id="waitlist-form" action="https://formspree.io/f/xplaceholder" method="POST" class="space-y-4">
|
||||
<div>
|
||||
<input
|
||||
type="email"
|
||||
name="email"
|
||||
required
|
||||
placeholder="you@company.com"
|
||||
class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-text placeholder:text-dd0c-muted/50 focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<select
|
||||
name="interest"
|
||||
class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-muted focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"
|
||||
>
|
||||
<option value="">Which tool interests you most?</option>
|
||||
<option value="route">dd0c/route — LLM Cost Router</option>
|
||||
<option value="drift">dd0c/drift — IaC Drift Detection</option>
|
||||
<option value="alert">dd0c/alert — Alert Intelligence</option>
|
||||
<option value="portal">dd0c/portal — Service Catalog</option>
|
||||
<option value="cost">dd0c/cost — AWS Cost Anomaly</option>
|
||||
<option value="run">dd0c/run — Runbook Automation</option>
|
||||
<option value="all">All of them</option>
|
||||
</select>
|
||||
</div>
|
||||
<button
|
||||
type="submit"
|
||||
id="waitlist-submit"
|
||||
class="w-full px-4 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition text-sm"
|
||||
>
|
||||
Join the waitlist →
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<!-- Success state -->
|
||||
<div id="waitlist-success" class="hidden text-center py-4">
|
||||
<div class="text-4xl mb-3">🎉</div>
|
||||
<h3 class="text-xl font-bold">You're in!</h3>
|
||||
<p class="mt-2 text-dd0c-muted text-sm">We'll ping you when dd0c is ready. Keep shipping.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const modal = document.getElementById('waitlist-modal');
|
||||
const form = document.getElementById('waitlist-form');
|
||||
const success = document.getElementById('waitlist-success');
|
||||
const submit = document.getElementById('waitlist-submit');
|
||||
|
||||
// Open modal on any #waitlist link
|
||||
document.addEventListener('click', (e) => {
|
||||
const link = e.target.closest('a[href="#waitlist"]');
|
||||
if (link) {
|
||||
e.preventDefault();
|
||||
modal.classList.remove('hidden');
|
||||
modal.classList.add('flex');
|
||||
modal.querySelector('input[type="email"]')?.focus();
|
||||
}
|
||||
});
|
||||
|
||||
// Close modal
|
||||
document.querySelectorAll('[data-waitlist-close]').forEach(el => {
|
||||
el.addEventListener('click', () => {
|
||||
modal.classList.add('hidden');
|
||||
modal.classList.remove('flex');
|
||||
});
|
||||
});
|
||||
|
||||
// Close on Escape
|
||||
document.addEventListener('keydown', (e) => {
|
||||
if (e.key === 'Escape') {
|
||||
modal.classList.add('hidden');
|
||||
modal.classList.remove('flex');
|
||||
}
|
||||
});
|
||||
|
||||
// Form submit
|
||||
form?.addEventListener('submit', async (e) => {
|
||||
e.preventDefault();
|
||||
submit.textContent = 'Joining...';
|
||||
submit.disabled = true;
|
||||
|
||||
try {
|
||||
const data = new FormData(form);
|
||||
const res = await fetch(form.action, {
|
||||
method: 'POST',
|
||||
body: data,
|
||||
headers: { 'Accept': 'application/json' },
|
||||
});
|
||||
|
||||
if (res.ok) {
|
||||
form.classList.add('hidden');
|
||||
success.classList.remove('hidden');
|
||||
} else {
|
||||
// Formspree not configured yet — show success anyway for demo
|
||||
form.classList.add('hidden');
|
||||
success.classList.remove('hidden');
|
||||
}
|
||||
} catch {
|
||||
// Offline or no backend — still show success for demo
|
||||
form.classList.add('hidden');
|
||||
success.classList.remove('hidden');
|
||||
}
|
||||
});
|
||||
</script>
|
||||
@@ -1,6 +1,7 @@
|
||||
---
|
||||
import Layout from '../components/Layout.astro';
|
||||
import Footer from '../components/Footer.astro';
|
||||
import Waitlist from '../components/Waitlist.astro';
|
||||
import CTA from '../components/CTA.astro';
|
||||
---
|
||||
|
||||
@@ -46,4 +47,5 @@ import CTA from '../components/CTA.astro';
|
||||
</section>
|
||||
<CTA />
|
||||
<Footer />
|
||||
<Waitlist />
|
||||
</Layout>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
---
|
||||
import Layout from '../components/Layout.astro';
|
||||
import Footer from '../components/Footer.astro';
|
||||
import Waitlist from '../components/Waitlist.astro';
|
||||
import CTA from '../components/CTA.astro';
|
||||
---
|
||||
|
||||
@@ -46,4 +47,5 @@ import CTA from '../components/CTA.astro';
|
||||
</section>
|
||||
<CTA />
|
||||
<Footer />
|
||||
<Waitlist />
|
||||
</Layout>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
---
|
||||
import Layout from '../components/Layout.astro';
|
||||
import Footer from '../components/Footer.astro';
|
||||
import Waitlist from '../components/Waitlist.astro';
|
||||
import CTA from '../components/CTA.astro';
|
||||
---
|
||||
|
||||
@@ -49,4 +50,5 @@ import CTA from '../components/CTA.astro';
|
||||
</section>
|
||||
<CTA />
|
||||
<Footer />
|
||||
<Waitlist />
|
||||
</Layout>
|
||||
|
||||
@@ -6,6 +6,7 @@ import HowItWorks from '../components/HowItWorks.astro';
|
||||
import Pricing from '../components/Pricing.astro';
|
||||
import CTA from '../components/CTA.astro';
|
||||
import Footer from '../components/Footer.astro';
|
||||
import Waitlist from '../components/Waitlist.astro';
|
||||
---
|
||||
|
||||
<Layout title="dd0c — DevOps tools that don't waste your time">
|
||||
@@ -15,4 +16,5 @@ import Footer from '../components/Footer.astro';
|
||||
<Pricing />
|
||||
<CTA />
|
||||
<Footer />
|
||||
<Waitlist />
|
||||
</Layout>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
---
|
||||
import Layout from '../components/Layout.astro';
|
||||
import Footer from '../components/Footer.astro';
|
||||
import Waitlist from '../components/Waitlist.astro';
|
||||
import CTA from '../components/CTA.astro';
|
||||
---
|
||||
|
||||
@@ -41,4 +42,5 @@ import CTA from '../components/CTA.astro';
|
||||
</section>
|
||||
<CTA />
|
||||
<Footer />
|
||||
<Waitlist />
|
||||
</Layout>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
---
|
||||
import Layout from '../components/Layout.astro';
|
||||
import Footer from '../components/Footer.astro';
|
||||
import Waitlist from '../components/Waitlist.astro';
|
||||
import CTA from '../components/CTA.astro';
|
||||
---
|
||||
|
||||
@@ -92,4 +93,5 @@ import CTA from '../components/CTA.astro';
|
||||
</section>
|
||||
<CTA />
|
||||
<Footer />
|
||||
<Waitlist />
|
||||
</Layout>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
---
|
||||
import Layout from '../components/Layout.astro';
|
||||
import Footer from '../components/Footer.astro';
|
||||
import Waitlist from '../components/Waitlist.astro';
|
||||
import CTA from '../components/CTA.astro';
|
||||
---
|
||||
|
||||
@@ -61,4 +62,5 @@ import CTA from '../components/CTA.astro';
|
||||
</section>
|
||||
<CTA />
|
||||
<Footer />
|
||||
<Waitlist />
|
||||
</Layout>
|
||||
|
||||
Reference in New Issue
Block a user