Your team already pushed code, closed tickets, replied in threads, fixed small things no
one asked them to. We turn it into an update. Or you can write it yourself. Either way, no
one has to talk about it at 9:30 a.m.
-
+
-
+
How it works
-
+
@@ -301,13 +329,13 @@ export default async function Page(props: {
-
+
Calculate your savings
-
-
+
+
See how much time and money your team can save by replacing synchronous standups with
AsyncStatus.
-
+
@@ -345,6 +373,12 @@ export default async function Page(props: {
+
+ {/* Structured Data */}
+
+
+
+
>
);
}
diff --git a/apps/marketing-app/src/app/layout.tsx b/apps/marketing-app/src/app/layout.tsx
index 9709df50..3ac8b49b 100644
--- a/apps/marketing-app/src/app/layout.tsx
+++ b/apps/marketing-app/src/app/layout.tsx
@@ -22,9 +22,72 @@ const noto = Noto_Sans({
});
export const metadata: Metadata = {
- title: "Async status updates for remote startups",
- description: "Made for high-agency teams that value their time.",
+ title: {
+ default: "AsyncStatus - Replace Daily Standups with Automated Status Updates",
+ template: "%s | AsyncStatus"
+ },
+ description: "Stop wasting time in daily standups. AsyncStatus automatically generates status updates from your Git commits, Jira tickets, and Slack activity. Save 2-3 hours per developer per week.",
+ keywords: [
+ "async status updates",
+ "remote team management",
+ "standup replacement",
+ "team productivity",
+ "remote work tools",
+ "automated status reports",
+ "software development tools",
+ "team communication",
+ "agile without meetings",
+ "distributed teams"
+ ],
+ authors: [{ name: "AsyncStatus Team" }],
+ creator: "AsyncStatus",
+ publisher: "AsyncStatus",
+ formatDetection: {
+ email: false,
+ address: false,
+ telephone: false,
+ },
metadataBase: new URL("https://asyncstatus.com"),
+ alternates: {
+ canonical: "https://asyncstatus.com",
+ },
+ openGraph: {
+ type: "website",
+ locale: "en_US",
+ url: "https://asyncstatus.com",
+ title: "AsyncStatus - Replace Daily Standups with Automated Status Updates",
+ description: "Stop wasting time in daily standups. AsyncStatus automatically generates status updates from your Git commits, Jira tickets, and Slack activity. Save 2-3 hours per developer per week.",
+ siteName: "AsyncStatus",
+ images: [
+ {
+ url: "/opengraph-image.jpg",
+ width: 1200,
+ height: 630,
+ alt: "AsyncStatus - Automated status updates for remote teams",
+ },
+ ],
+ },
+ twitter: {
+ card: "summary_large_image",
+ title: "AsyncStatus - Replace Daily Standups with Automated Status Updates",
+ description: "Stop wasting time in daily standups. AsyncStatus automatically generates status updates from your Git commits, Jira tickets, and Slack activity.",
+ images: ["/opengraph-image.jpg"],
+ creator: "@asyncstatus",
+ },
+ robots: {
+ index: true,
+ follow: true,
+ googleBot: {
+ index: true,
+ follow: true,
+ "max-video-preview": -1,
+ "max-image-preview": "large",
+ "max-snippet": -1,
+ },
+ },
+ verification: {
+ google: "your-google-verification-code", // Replace with actual verification code
+ },
icons: [
{
url: "/favicon.ico",
@@ -47,6 +110,16 @@ export const metadata: Metadata = {
href: "/apple-touch-icon-dark.png",
media: "(prefers-color-scheme: dark)",
},
+ {
+ url: "/icon-192.png",
+ sizes: "192x192",
+ type: "image/png",
+ },
+ {
+ url: "/icon-512.png",
+ sizes: "512x512",
+ type: "image/png",
+ },
],
};
diff --git a/apps/marketing-app/src/app/robots.txt b/apps/marketing-app/src/app/robots.txt
new file mode 100644
index 00000000..efefc6fc
--- /dev/null
+++ b/apps/marketing-app/src/app/robots.txt
@@ -0,0 +1,27 @@
+User-agent: *
+Allow: /
+
+# Disallow sensitive areas
+Disallow: /admin/
+Disallow: /api/
+Disallow: /_next/
+Disallow: /private/
+
+# Allow specific bots
+User-agent: Googlebot
+Allow: /
+
+User-agent: Bingbot
+Allow: /
+
+User-agent: facebookexternalhit
+Allow: /
+
+User-agent: Twitterbot
+Allow: /
+
+# Sitemap
+Sitemap: https://asyncstatus.com/sitemap.xml
+
+# Crawl delay (optional - helps prevent overwhelming server)
+Crawl-delay: 1
diff --git a/apps/marketing-app/src/app/structured-data.tsx b/apps/marketing-app/src/app/structured-data.tsx
new file mode 100644
index 00000000..20b17fc3
--- /dev/null
+++ b/apps/marketing-app/src/app/structured-data.tsx
@@ -0,0 +1,120 @@
+import Script from "next/script";
+
+interface StructuredDataProps {
+ data: Record;
+}
+
+export function StructuredData({ data }: StructuredDataProps) {
+ return (
+
+ );
+}
+
+export const organizationSchema = {
+ "@context": "https://schema.org",
+ "@type": "Organization",
+ name: "AsyncStatus",
+ url: "https://asyncstatus.com",
+ logo: "https://asyncstatus.com/icon-512.png",
+ description: "Automated status updates for remote teams. Replace daily standups with AI-generated updates from your existing tools.",
+ sameAs: [
+ "https://twitter.com/asyncstatus",
+ ],
+ foundingDate: "2024",
+ contactPoint: {
+ "@type": "ContactPoint",
+ contactType: "customer service",
+ email: "toby@asyncstatus.com",
+ },
+};
+
+export const productSchema = {
+ "@context": "https://schema.org",
+ "@type": "SoftwareApplication",
+ name: "AsyncStatus",
+ description: "Automated status updates for remote teams. Replace daily standups with AI-generated updates from your existing tools like Git, Jira, and Slack.",
+ url: "https://asyncstatus.com",
+ applicationCategory: "BusinessApplication",
+ operatingSystem: "Web Browser",
+ offers: {
+ "@type": "Offer",
+ priceCurrency: "USD",
+ price: "0",
+ description: "Free tier available with paid plans for teams",
+ },
+ aggregateRating: {
+ "@type": "AggregateRating",
+ ratingValue: "4.9",
+ ratingCount: "47",
+ bestRating: "5",
+ worstRating: "1",
+ },
+ featureList: [
+ "Automated status update generation",
+ "Git integration",
+ "Slack activity reports",
+ "Team productivity analytics",
+ "Remote team management",
+ "Async communication tools",
+ ],
+ screenshot: "https://asyncstatus.com/hero-light.webp",
+};
+
+export const websiteSchema = {
+ "@context": "https://schema.org",
+ "@type": "WebSite",
+ name: "AsyncStatus",
+ url: "https://asyncstatus.com",
+ description: "Replace daily standups with automated status updates. Save 2-3 hours per developer per week.",
+ potentialAction: {
+ "@type": "SearchAction",
+ target: {
+ "@type": "EntryPoint",
+ urlTemplate: "https://asyncstatus.com/search?q={search_term_string}",
+ },
+ "query-input": "required name=search_term_string",
+ },
+};
+
+export const faqSchema = {
+ "@context": "https://schema.org",
+ "@type": "FAQPage",
+ mainEntity: [
+ {
+ "@type": "Question",
+ name: "How does AsyncStatus replace daily standups?",
+ acceptedAnswer: {
+ "@type": "Answer",
+ text: "AsyncStatus automatically generates status updates by monitoring your team's activity in Git, Slack, and other tools. Instead of spending 15-30 minutes in daily meetings, team members get AI-generated summaries of what everyone accomplished, with the option to add manual updates.",
+ },
+ },
+ {
+ "@type": "Question",
+ name: "How much time can my team save?",
+ acceptedAnswer: {
+ "@type": "Answer",
+ text: "Most teams save 2-3 hours per developer per week by eliminating daily standups. For a 5-person team earning $120K average salary, this translates to approximately $30,000 in saved time annually.",
+ },
+ },
+ {
+ "@type": "Question",
+ name: "What tools does AsyncStatus integrate with?",
+ acceptedAnswer: {
+ "@type": "Answer",
+ text: "AsyncStatus integrates with Git repositories (GitHub, GitLab), project management tools (Linear), and communication platforms (Slack, Discord). We're constantly adding new integrations based on user requests.",
+ },
+ },
+ {
+ "@type": "Question",
+ name: "Is AsyncStatus secure?",
+ acceptedAnswer: {
+ "@type": "Answer",
+ text: "Yes, AsyncStatus uses enterprise-grade security with encrypted data transmission, secure OAuth integrations. We never store sensitive code or personal information.",
+ },
+ },
+ ],
+};
diff --git a/apps/marketing-app/src/app/why-use-our-app/page.tsx b/apps/marketing-app/src/app/why-use-our-app/page.tsx
index b2ee228f..35a8b4c5 100644
--- a/apps/marketing-app/src/app/why-use-our-app/page.tsx
+++ b/apps/marketing-app/src/app/why-use-our-app/page.tsx
@@ -1,5 +1,41 @@
import { AsyncStatusLogo } from "@asyncstatus/ui/components/async-status-logo";
import Link from "next/link";
+import type { Metadata } from "next";
+
+export const metadata: Metadata = {
+ title: "Why Replace Standups - ROI Calculator & Benefits",
+ description: "Calculate how much your team saves by replacing daily standups with AsyncStatus. See why 90% of standup time is wasted and how to get 2-3 hours back per developer per week.",
+ keywords: [
+ "standup meeting problems",
+ "daily standup replacement",
+ "remote team productivity",
+ "meeting cost calculator",
+ "async communication benefits",
+ "standup ROI calculator",
+ "development team efficiency"
+ ],
+ openGraph: {
+ title: "Why Replace Daily Standups? - AsyncStatus ROI Calculator",
+ description: "Calculate how much your team saves by replacing daily standups. Get 2-3 hours back per developer per week with automated status updates.",
+ url: "https://asyncstatus.com/why-use-our-app",
+ images: [
+ {
+ url: "/opengraph-image.jpg",
+ width: 1200,
+ height: 630,
+ alt: "Calculate standup meeting costs and see why teams are switching to async updates",
+ },
+ ],
+ },
+ twitter: {
+ card: "summary_large_image",
+ title: "Why Replace Daily Standups? - AsyncStatus ROI Calculator",
+ description: "Calculate how much your team saves by replacing daily standups. Get 2-3 hours back per developer per week.",
+ },
+ alternates: {
+ canonical: "https://asyncstatus.com/why-use-our-app",
+ },
+};
import { Footer } from "../components/footer";
import { MobileMenu } from "../components/mobile-menu";