diff --git a/app/(marketing)/page.tsx b/app/(marketing)/page.tsx index 9a49b681..2ce228fb 100644 --- a/app/(marketing)/page.tsx +++ b/app/(marketing)/page.tsx @@ -2,6 +2,8 @@ import Link from "next/link"; import { HeroAuditForm } from "@/components/hero-audit-form"; import { OrganizationJsonLd, SoftwareApplicationJsonLd, FaqJsonLd } from "@/components/json-ld"; import { PerformancePreview } from "@/components/report/performance-preview"; +import { UptimePreview } from "@/components/report/uptime-preview"; +import { SecurityPreview } from "@/components/report/security-preview"; import { env } from "@/lib/env"; const faqs = [ @@ -17,6 +19,14 @@ const faqs = [ q: "Do you respect robots.txt?", a: "Yes. CrawlProofBot identifies itself and honors robots.txt directives that block it. We never log in, never submit forms, never POST.", }, + { + q: "What can CrawlProof monitor for uptime?", + a: "HTTP(S) status and response time, a keyword that must appear (or not) in the page body, SSL-certificate expiry, and raw TCP ports. We confirm failures across multiple checks before alerting (no flapping), then email you on both downtime and recovery — with the exact outage duration.", + }, + { + q: "How does the exposed-services security scan work?", + a: "For hosts you've verified you own, CrawlProof runs a full 65,535-port TCP scan from a dedicated scanner, baselines the ports you expect to be open, and alerts you when a new one appears — e.g. a database or admin port suddenly reachable from the public internet. It's attack-surface drift detection, only ever against your own verified hosts.", + }, { q: "Is the free tier really free?", a: "Yes — anonymous visitors get 10 audits per day per IP with no signup, and signing up unlocks 20 free credits (1 AI-model scan). Paid scans cost 20 credits (~$1) with volume discounts down to $0.50/scan at the 100-scan pack. No subscription, credits never expire.", @@ -43,20 +53,21 @@ export default function HomePage() {

- SEO · AEO · GEO — ChatGPT · Claude · Perplexity · Google AI Overviews + Audits · Uptime · Security · Content — one platform for your site

- See your site the way AI crawlers do. + Get found by AI. Stay online. Stay secure.

+ CrawlProof started by showing you your site the way{" "} - AEO + GEO — Answer Engine & Generative Engine Optimization + AI crawlers {" "} - — making sure ChatGPT, Claude, Perplexity, and Google AI Overviews can - actually read, cite, and recommend your site. CrawlProof audits any - URL and shows you exactly what they find: content, schema, robots - rules, AI-bot access, llms.txt quality, knowledge graph anchoring, and - positioning. + do — SEO, AEO & GEO audits for ChatGPT, Claude, Perplexity, and + Google AI Overviews. Now it's a full platform: uptime + monitoring with downtime alerts, exposed-services + security scans, automated content, backlinks, and analytics — + all from one dashboard. Start with a free audit:

@@ -80,6 +91,24 @@ export default function HomePage() {
+
+

One platform, every angle

+

+ Everything you need to get discovered, stay online, and stay secure — no + separate subscriptions for monitoring, security, and content. +

+
+ + + + + + + + +
+
+

What we check

@@ -132,6 +161,66 @@ export default function HomePage() {

+
+
+
+

+ Uptime Monitoring +

+

+ Know before your customers do. +

+

+ Add a monitor in one click — we prefill your domain and URL. CrawlProof + checks it on your interval and emails you the instant it goes down, + then again when it recovers, with the exact downtime. HTTP status, + body keywords, SSL-cert expiry, and raw TCP ports. +

+
+ + + +
+
+ + Start monitoring free + +
+
+ +
+
+ +
+
+ +
+

+ Exposed Services — Security +

+

+ Catch the port you forgot to close. +

+

+ CrawlProof runs a full 65,535-port scan of your owner-verified hosts, + baselines what's expected, and alerts you the moment something{" "} + new gets exposed — a Redis, a Postgres, an admin panel facing + the public internet. Attack-surface monitoring, not a one-off scan. +

+
+ + + +
+
+ + Scan my services + +
+
+
+
+
@@ -275,3 +364,15 @@ function FeatureCard({ title, body }: { title: string; body: string }) {
); } + +function ModuleCard({ emoji, title, body }: { emoji: string; title: string; body: string }) { + return ( +
+
+ {emoji} +
+

{title}

+

{body}

+
+ ); +} diff --git a/components/report/security-preview.tsx b/components/report/security-preview.tsx new file mode 100644 index 00000000..58e88621 --- /dev/null +++ b/components/report/security-preview.tsx @@ -0,0 +1,76 @@ +// Screenshot-style preview of the Security / Exposed Services tab for the +// marketing homepage. Coded panel (fixed dark chrome), matching the site's +// existing preview components. + +const ports = [ + { port: 443, service: "https", sev: "low", isNew: false }, + { port: 80, service: "http", sev: "low", isNew: false }, + { port: 22, service: "ssh", sev: "medium", isNew: false }, + { port: 6379, service: "redis", sev: "high", isNew: true }, + { port: 5432, service: "postgres", sev: "high", isNew: true }, +]; + +const SEV_COLOR: Record = { + high: "#f87171", + medium: "#fbbf24", + low: "#6ee7b7", +}; + +export function SecurityPreview() { + return ( +
+
+
+
Exposed Services
+
scan of acme.io
+
+
+ 2 new +
+
+ +
+ {ports.map((p) => ( +
+ + {p.sev} + + + acme.io:{p.port}{" "} + ({p.service}) + + {p.isNew ? ( + + NEW + + ) : ( + baseline + )} +
+ ))} +
+ +
+ Port drift detected + + {" "} + · Redis & Postgres now reachable from the public internet + +
+ +

+ Full 65,535-port scan of your owner-verified hosts. We baseline what's + expected and alert only when something new gets exposed. +

+
+ ); +} diff --git a/components/report/uptime-preview.tsx b/components/report/uptime-preview.tsx new file mode 100644 index 00000000..22c4925e --- /dev/null +++ b/components/report/uptime-preview.tsx @@ -0,0 +1,62 @@ +// Screenshot-style preview of the Uptime tab for the marketing homepage. +// Coded panel (fixed dark chrome) rather than a raster capture, matching the +// site's existing preview components. + +const rows = [ + { name: "crawlproof.com", meta: "http · 60s", state: "up", latency: "142 ms" }, + { name: "api.crawlproof.com", meta: "http · /health", state: "up", latency: "88 ms" }, + { name: "db.acme.io:5432", meta: "tcp", state: "up", latency: "12 ms" }, + { name: "status.acme.io", meta: "http · 500", state: "down", latency: "—" }, +]; + +export function UptimePreview() { + return ( +
+
+
Uptime Monitors
+
+ 1 down +
+
+ +
+ {rows.map((r) => { + const down = r.state === "down"; + return ( +
+
+
+ ● + {r.name} +
+
{r.meta}
+
+
+ {down ? "connection refused" : r.latency} +
+
+ ); + })} +
+ +
+ 🔴 Down alert sent + · status.acme.io · email + Slack · 12s ago +
+ +

+ HTTP · Keyword · SSL-expiry · TCP — checked on your interval, with + down & recovery alerts to email, Slack, and Discord. +

+
+ ); +}