From 23fda04854c6db84490253a099abd44838b7b067 Mon Sep 17 00:00:00 2001 From: Max Mayfield Date: Sun, 1 Mar 2026 22:09:35 +0000 Subject: [PATCH] =?UTF-8?q?Add=20waitlist=20modal=20to=20marketing=20site?= =?UTF-8?q?=20(all=207=20pages)=20=E2=80=94=20triggers=20on=20#waitlist=20?= =?UTF-8?q?links,=20Formspree-ready?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../site/dist/_astro/alert.BAN0u9re.css | 1 - products/marketing/site/dist/alert/index.html | 9 +- products/marketing/site/dist/cost/index.html | 9 +- products/marketing/site/dist/drift/index.html | 9 +- products/marketing/site/dist/index.html | 9 +- .../marketing/site/dist/portal/index.html | 9 +- products/marketing/site/dist/route/index.html | 9 +- products/marketing/site/dist/run/index.html | 9 +- .../site/src/components/Waitlist.astro | 128 ++++++++++++++++++ products/marketing/site/src/pages/alert.astro | 2 + products/marketing/site/src/pages/cost.astro | 2 + products/marketing/site/src/pages/drift.astro | 2 + products/marketing/site/src/pages/index.astro | 2 + .../marketing/site/src/pages/portal.astro | 2 + products/marketing/site/src/pages/route.astro | 2 + products/marketing/site/src/pages/run.astro | 2 + 16 files changed, 191 insertions(+), 15 deletions(-) delete mode 100644 products/marketing/site/dist/_astro/alert.BAN0u9re.css create mode 100644 products/marketing/site/src/components/Waitlist.astro diff --git a/products/marketing/site/dist/_astro/alert.BAN0u9re.css b/products/marketing/site/dist/_astro/alert.BAN0u9re.css deleted file mode 100644 index 04cc569..0000000 --- a/products/marketing/site/dist/_astro/alert.BAN0u9re.css +++ /dev/null @@ -1 +0,0 @@ -*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:JetBrains Mono,Fira Code,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.top-0{top:0}.z-10{z-index:10}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.mb-16{margin-bottom:4rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-2{margin-left:.5rem}.mt-0\.5{margin-top:.125rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mt-16{margin-top:4rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-3{height:.75rem}.w-12{width:3rem}.w-2{width:.5rem}.w-3{width:.75rem}.w-full{width:100%}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-6xl{max-width:72rem}.flex-shrink-0{flex-shrink:0}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.space-y-12>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(3rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(3rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-dd0c-border{--tw-border-opacity: 1;border-color:rgb(30 30 46 / var(--tw-border-opacity, 1))}.border-dd0c-border\/50{border-color:#1e1e2e80}.border-dd0c-primary{--tw-border-opacity: 1;border-color:rgb(99 102 241 / var(--tw-border-opacity, 1))}.border-dd0c-primary\/20{border-color:#6366f133}.bg-dd0c-bg{--tw-bg-opacity: 1;background-color:rgb(10 10 15 / var(--tw-bg-opacity, 1))}.bg-dd0c-bg\/80{background-color:#0a0a0fcc}.bg-dd0c-primary{--tw-bg-opacity: 1;background-color:rgb(99 102 241 / var(--tw-bg-opacity, 1))}.bg-dd0c-primary\/10{background-color:#6366f11a}.bg-dd0c-primary\/5{background-color:#6366f10d}.bg-dd0c-surface{--tw-bg-opacity: 1;background-color:rgb(18 18 26 / var(--tw-bg-opacity, 1))}.bg-emerald-400{--tw-bg-opacity: 1;background-color:rgb(52 211 153 / var(--tw-bg-opacity, 1))}.bg-green-500\/60{background-color:#22c55e99}.bg-red-500\/60{background-color:#ef444499}.bg-yellow-500\/60{background-color:#eab30899}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.bg-gradient-to-t{background-image:linear-gradient(to top,var(--tw-gradient-stops))}.from-amber-500{--tw-gradient-from: #f59e0b var(--tw-gradient-from-position);--tw-gradient-to: rgb(245 158 11 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-500{--tw-gradient-from: #06b6d4 var(--tw-gradient-from-position);--tw-gradient-to: rgb(6 182 212 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-dd0c-bg{--tw-gradient-from: #0a0a0f var(--tw-gradient-from-position);--tw-gradient-to: rgb(10 10 15 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-dd0c-primary{--tw-gradient-from: #6366f1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-emerald-500{--tw-gradient-from: #10b981 var(--tw-gradient-from-position);--tw-gradient-to: rgb(16 185 129 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-500{--tw-gradient-from: #6366f1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-rose-500{--tw-gradient-from: #f43f5e var(--tw-gradient-from-position);--tw-gradient-to: rgb(244 63 94 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-violet-500{--tw-gradient-from: #8b5cf6 var(--tw-gradient-from-position);--tw-gradient-to: rgb(139 92 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-transparent{--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), transparent var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-blue-600{--tw-gradient-to: #2563eb var(--tw-gradient-to-position)}.to-dd0c-accent{--tw-gradient-to: #06b6d4 var(--tw-gradient-to-position)}.to-green-600{--tw-gradient-to: #16a34a var(--tw-gradient-to-position)}.to-orange-600{--tw-gradient-to: #ea580c var(--tw-gradient-to-position)}.to-pink-600{--tw-gradient-to: #db2777 var(--tw-gradient-to-position)}.to-purple-600{--tw-gradient-to: #9333ea var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to: transparent var(--tw-gradient-to-position)}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pb-20{padding-bottom:5rem}.pr-4{padding-right:1rem}.pt-32{padding-top:8rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.font-mono{font-family:JetBrains Mono,Fira Code,monospace}.font-sans{font-family:Inter,system-ui,sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-.025em}.text-amber-400{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.text-dd0c-accent{--tw-text-opacity: 1;color:rgb(6 182 212 / var(--tw-text-opacity, 1))}.text-dd0c-muted{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity, 1))}.text-dd0c-muted\/50{color:#94a3b880}.text-dd0c-primary{--tw-text-opacity: 1;color:rgb(99 102 241 / var(--tw-text-opacity, 1))}.text-dd0c-text{--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity, 1))}.text-emerald-400{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-transparent{color:transparent}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.hover\:border-dd0c-muted:hover{--tw-border-opacity: 1;border-color:rgb(148 163 184 / var(--tw-border-opacity, 1))}.hover\:border-dd0c-primary\/40:hover{border-color:#6366f166}.hover\:bg-dd0c-primary-light:hover{--tw-bg-opacity: 1;background-color:rgb(129 140 248 / var(--tw-bg-opacity, 1))}.hover\:text-dd0c-text:hover{--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:text-dd0c-primary{--tw-text-opacity: 1;color:rgb(99 102 241 / var(--tw-text-opacity, 1))}@media (min-width: 640px){.sm\:inline{display:inline}.sm\:w-auto{width:auto}.sm\:flex-row{flex-direction:row}.sm\:text-4xl{font-size:2.25rem;line-height:2.5rem}.sm\:text-5xl{font-size:3rem;line-height:1}.sm\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width: 768px){.md\:flex{display:flex}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width: 1024px){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:text-6xl{font-size:3.75rem;line-height:1}} diff --git a/products/marketing/site/dist/alert/index.html b/products/marketing/site/dist/alert/index.html index 795b051..5d895e5 100644 --- a/products/marketing/site/dist/alert/index.html +++ b/products/marketing/site/dist/alert/index.html @@ -1,8 +1,13 @@ - dd0c/alert — Alert Intelligence & Correlation
dd0c/alert

Alert fatigue is a bug, not a feature

+ dd0c/alert — Alert Intelligence & Correlation

dd0c/alert

Alert fatigue is a bug, not a feature

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.

🔗

Multi-source correlation

HMAC-verified webhooks from 4 providers. Canonical alert schema normalizes everything into one format.

⏱️

Time-window grouping

5-minute correlation windows. Late alerts attach to existing incidents. Very late alerts create new ones.

📉

80% noise reduction

20 alerts from the same root cause become 1 incident. Your on-call engineer sees one notification, not twenty.

📧

Slack, email, webhook

Severity-gated notifications. Critical goes to Slack + email. Low goes to a dashboard. You decide.

Stop paying enterprise prices
for tools you half-use

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.

\ No newline at end of file +
\ No newline at end of file diff --git a/products/marketing/site/dist/cost/index.html b/products/marketing/site/dist/cost/index.html index 4358c56..65fe0fe 100644 --- a/products/marketing/site/dist/cost/index.html +++ b/products/marketing/site/dist/cost/index.html @@ -1,8 +1,13 @@ - dd0c/cost — AWS Cost Anomaly Detection
dd0c/cost

Know about cost spikes before the bill arrives

+ dd0c/cost — AWS Cost Anomaly Detection

dd0c/cost

Know about cost spikes before the bill arrives

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.

📈

Statistical baselines

Welford's online algorithm. No batch jobs. Baselines update with every data point. Optimistic locking prevents corruption.

🎯

0-100 anomaly score

Z-score mapped to a simple 0-100 scale. Set your threshold. Default 50 (2σ). Tune per resource type.

🛡️

Governance engine

Shadow → audit → enforce. Auto-promotes after 14 days with <10% false positive rate. Safe by default.

💤

Snooze & mark expected

Known cost spike? Snooze for 1-168 hours or mark as expected. Reduces false positive rate over time.

Stop paying enterprise prices
for tools you half-use

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.

\ No newline at end of file +
\ No newline at end of file diff --git a/products/marketing/site/dist/drift/index.html b/products/marketing/site/dist/drift/index.html index d5bfa19..3c7e003 100644 --- a/products/marketing/site/dist/drift/index.html +++ b/products/marketing/site/dist/drift/index.html @@ -1,4 +1,5 @@ - dd0c/drift — Terraform Drift Detection
dd0c/drift

Catch Terraform drift before it catches you

+ dd0c/drift — Terraform Drift Detection

dd0c/drift

Catch Terraform drift before it catches you

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.

🔍

State scanning

Parses Terraform v4 state files. Detects resource changes, attribute drift, and deleted resources.

🔒

Secret scrubbing

Regex + Shannon entropy detection. AWS keys, RSA keys, PEM certs — scrubbed before reports leave your network.

🔔

Slack alerts

Block Kit messages with severity, affected resources, and one-click remediate/accept buttons.

Install the agent

$ curl -sSL https://install.dd0c.dev/drift | bash
 $ 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.
 

\ No newline at end of file +
\ No newline at end of file diff --git a/products/marketing/site/dist/index.html b/products/marketing/site/dist/index.html index 6218158..92c12da 100644 --- a/products/marketing/site/dist/index.html +++ b/products/marketing/site/dist/index.html @@ -1,4 +1,5 @@ - dd0c — DevOps tools that don't waste your time
+ dd0c — DevOps tools that don't waste your time
Now in beta — free while we ship

DevOps tools that
don't waste your time

@@ -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.

\ No newline at end of file +
\ No newline at end of file diff --git a/products/marketing/site/dist/portal/index.html b/products/marketing/site/dist/portal/index.html index df93475..3bc98a5 100644 --- a/products/marketing/site/dist/portal/index.html +++ b/products/marketing/site/dist/portal/index.html @@ -1,8 +1,13 @@ - dd0c/portal — Lightweight Service Catalog & Developer Portal
dd0c/portal

"Who owns this service?"
answered in 2 seconds

+ dd0c/portal — Lightweight Service Catalog & Developer Portal

dd0c/portal

"Who owns this service?"
answered in 2 seconds

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.

🔎

Auto-discovery

Scans AWS (ECS, Lambda, RDS) and GitHub orgs. Partial scan failures stage results — never corrupts your catalog.

👤

Ownership resolution

Config > CODEOWNERS > AWS tags > heuristic. Explicit always wins. No more guessing.

Instant search

Meilisearch-powered full-text search. Falls back to PostgreSQL if Meili is down. Always available.

Stop paying enterprise prices
for tools you half-use

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.

\ No newline at end of file +
\ No newline at end of file diff --git a/products/marketing/site/dist/route/index.html b/products/marketing/site/dist/route/index.html index c21b81f..23f7996 100644 --- a/products/marketing/site/dist/route/index.html +++ b/products/marketing/site/dist/route/index.html @@ -1,4 +1,5 @@ - dd0c/route — LLM Cost Router & Dashboard
dd0c/route

Stop burning money on LLM APIs

+ dd0c/route — LLM Cost Router & Dashboard

dd0c/route

Stop burning money on LLM APIs

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.

💸

Cost-based routing

Classify prompt complexity. Route simple queries to cheap models, complex ones to GPT-4. Save 40-60% on average.

📊

Real-time dashboard

Cost per model, per team, per endpoint. Token usage breakdowns. Anomaly detection when spend spikes.

🔑

API key management

Issue scoped keys per team. Set budget caps. Rotate without downtime. Full audit trail.

Integration is one line

# Before
 OPENAI_BASE_URL=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.
 

\ No newline at end of file +
\ No newline at end of file diff --git a/products/marketing/site/dist/run/index.html b/products/marketing/site/dist/run/index.html index 719b4e1..b523ce3 100644 --- a/products/marketing/site/dist/run/index.html +++ b/products/marketing/site/dist/run/index.html @@ -1,4 +1,5 @@ - dd0c/run — Runbook Automation with Approval Gates
dd0c/run

Runbooks that run themselves
(with your permission)

+ dd0c/run — Runbook Automation with Approval Gates

dd0c/run

Runbooks that run themselves
(with your permission)

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.

Example runbook

name: restart-ecs-service
 steps:
@@ -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.
 

\ No newline at end of file +
\ No newline at end of file diff --git a/products/marketing/site/src/components/Waitlist.astro b/products/marketing/site/src/components/Waitlist.astro new file mode 100644 index 0000000..71b8e38 --- /dev/null +++ b/products/marketing/site/src/components/Waitlist.astro @@ -0,0 +1,128 @@ +--- +--- + + + + diff --git a/products/marketing/site/src/pages/alert.astro b/products/marketing/site/src/pages/alert.astro index b6115e7..fb4d653 100644 --- a/products/marketing/site/src/pages/alert.astro +++ b/products/marketing/site/src/pages/alert.astro @@ -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';