Skip to content

Commit dc16cca

Browse files
Merge pull request #7 from frain-dev/fix/url-display-seo-improvements
[GTM-33, GTM-35] Fix duplicate https in source URL and improve SEO
2 parents 92a18c9 + 5009a7d commit dc16cca

File tree

6 files changed

+82
-16
lines changed

6 files changed

+82
-16
lines changed

app/in/[slug]/page.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -419,7 +419,7 @@ export default function Home() {
419419
<div className="pt-160px px-20px max-w-[1500px] m-auto">
420420
<div className={(displayedEvents?.length == 0 ? 'h-96px' : 'h-0') + ' overflow-hidden transition-all duration-300'}>
421421
<h2 className="text-24 text-gray-800 text-center font-semibold mb-16px">Convoy Playground</h2>
422-
<p className="text-center text-14 text-gray-500 m-auto max-w-[502px]">A playground for you to receive, test, and debug webhook events; just like you will with Convoy.</p>
422+
<p className="text-center text-14 text-gray-600 font-medium m-auto max-w-[502px]">A playground for you to receive, test, and debug webhook events; just like you will with Convoy.</p>
423423
</div>
424424

425425
{/* sources/endpoints loader */}
@@ -443,16 +443,16 @@ export default function Home() {
443443
<div className="sticky top-100px bg-[#fafafe] pt-14px pb-40px z-50">
444444
<div className="relative mt-24px max-w-[720px] w-fit mx-auto">
445445
<div ref={sourceFormRef} className="flex items-center gap-16px bg-white-100 rounded-8px border border-primary-50 pr-16px shadow-sm transition-all duration-300 m-auto w-fit">
446-
<div className="flex items-center py-14px px-16px text-gray-600 text-14 border-r border-primary-50">URL</div>
446+
<div className="flex items-center py-14px px-16px text-gray-700 text-14 font-semibold border-r border-primary-50">URL</div>
447447

448448
<div className="flex gap-24px justify-between">
449449
<div className="flex items-center py-14px">
450-
<span className="text-gray-600 text-14 mr-10px max-w-[440px] w-full whitespace-nowrap overflow-hidden text-ellipsis">https://{activeSource?.url}</span>
450+
<span className="text-gray-700 text-14 font-medium mr-10px max-w-[440px] w-full whitespace-nowrap overflow-hidden text-ellipsis">{activeSource?.url}</span>
451451
<button
452452
onClick={event =>
453453
copyToClipboard({
454454
event,
455-
textToCopy: `https://${activeSource?.url}`,
455+
textToCopy: activeSource?.url,
456456
notificationText: 'Source URL has been copied to clipboard.'
457457
})
458458
}>
@@ -482,7 +482,7 @@ export default function Home() {
482482
{eventsErrorState && (
483483
<>
484484
<img src="/warning-icon-large.svg" alt="warning icon" className="mb-24px" />
485-
<p className="text-center text-14">An error occured, please refresh</p>
485+
<p className="text-center text-14">An error occurred, please refresh</p>
486486
</>
487487
)}
488488
</div>

app/layout.js

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,34 @@ import Script from 'next/script';
44
const inter = Inter({ subsets: ['latin'] });
55

66
export const metadata = {
7-
title: 'Convoy Playground',
8-
description: 'Convoy Playground'
7+
title: 'Convoy Playground — Receive, Test & Debug Webhook Events',
8+
description: 'A free playground for receiving, testing, and debugging webhook events in real time. Inspect headers, payloads, and delivery attempts — powered by Convoy, the open-source webhooks gateway.',
9+
keywords: ['webhook', 'webhook testing', 'webhook playground', 'convoy', 'webhook debugger', 'webhook events', 'webhook inspector', 'webhook delivery', 'open source webhooks'],
10+
metadataBase: new URL('https://playground.getconvoy.io'),
11+
alternates: {
12+
canonical: '/'
13+
},
14+
openGraph: {
15+
title: 'Convoy Playground — Receive, Test & Debug Webhook Events',
16+
description: 'A free playground for receiving, testing, and debugging webhook events in real time. Inspect headers, payloads, and delivery attempts — powered by Convoy.',
17+
url: 'https://playground.getconvoy.io',
18+
siteName: 'Convoy Playground',
19+
type: 'website',
20+
locale: 'en_US'
21+
},
22+
twitter: {
23+
card: 'summary_large_image',
24+
title: 'Convoy Playground — Receive, Test & Debug Webhook Events',
25+
description: 'A free playground for receiving, testing, and debugging webhook events in real time. Powered by Convoy, the open-source webhooks gateway.'
26+
},
27+
robots: {
28+
index: true,
29+
follow: true,
30+
googleBot: {
31+
index: true,
32+
follow: true
33+
}
34+
}
935
};
1036

1137
export default function RootLayout({ children }) {
@@ -17,6 +43,25 @@ export default function RootLayout({ children }) {
1743
{`var dataLayer = window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments)}
1844
gtag('js', new Date()); gtag('config', 'G-GTJK2CPP01');`}
1945
</Script>
46+
<script
47+
type="application/ld+json"
48+
dangerouslySetInnerHTML={{
49+
__html: JSON.stringify({
50+
'@context': 'https://schema.org',
51+
'@type': 'WebApplication',
52+
name: 'Convoy Playground',
53+
url: 'https://playground.getconvoy.io',
54+
description: 'A free playground for receiving, testing, and debugging webhook events in real time. Powered by Convoy, the open-source webhooks gateway.',
55+
applicationCategory: 'DeveloperApplication',
56+
operatingSystem: 'All',
57+
offers: {
58+
'@type': 'Offer',
59+
price: '0',
60+
priceCurrency: 'USD'
61+
}
62+
})
63+
}}
64+
/>
2065
</head>
2166

2267
<body className={`${inter.className} bg-[#FAFAFE]`} suppressHydrationWarning={true}>

app/page.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,7 @@ export default function Home() {
418418
<div className="pt-160px px-20px max-w-[1500px] m-auto">
419419
<div className={(displayedEvents?.length == 0 ? 'h-96px' : 'h-0') + ' overflow-hidden transition-all duration-300'}>
420420
<h2 className="text-24 text-gray-800 text-center font-semibold mb-16px">Convoy Playground</h2>
421-
<p className="text-center text-14 text-gray-500 m-auto max-w-[502px]">A playground for you to receive, test, and debug webhook events; just like you will with Convoy.</p>
421+
<p className="text-center text-14 text-gray-600 font-medium m-auto max-w-[502px]">A playground for you to receive, test, and debug webhook events; just like you will with Convoy.</p>
422422
</div>
423423

424424
{/* sources/endpoints loader */}
@@ -442,16 +442,16 @@ export default function Home() {
442442
<div className="sticky top-100px bg-[#fafafe] pt-14px pb-40px z-50">
443443
<div className="relative mt-24px max-w-[720px] w-fit mx-auto">
444444
<div ref={sourceFormRef} className="flex items-center gap-16px bg-white-100 rounded-8px border border-primary-50 pr-16px shadow-sm transition-all duration-300 m-auto w-fit">
445-
<div className="flex items-center py-14px px-16px text-gray-600 text-14 border-r border-primary-50">URL</div>
445+
<div className="flex items-center py-14px px-16px text-gray-700 text-14 font-semibold border-r border-primary-50">URL</div>
446446

447447
<div className="flex gap-24px justify-between">
448448
<div className="flex items-center py-14px">
449-
<span className="text-gray-600 text-14 mr-10px max-w-[440px] w-full whitespace-nowrap overflow-hidden text-ellipsis">https://{activeSource?.url}</span>
449+
<span className="text-gray-700 text-14 font-medium mr-10px max-w-[440px] w-full whitespace-nowrap overflow-hidden text-ellipsis">{activeSource?.url}</span>
450450
<button
451451
onClick={event =>
452452
copyToClipboard({
453453
event,
454-
textToCopy: `https://${activeSource?.url}`,
454+
textToCopy: activeSource?.url,
455455
notificationText: 'Source URL has been copied to clipboard.'
456456
})
457457
}>
@@ -481,7 +481,7 @@ export default function Home() {
481481
{eventsErrorState && (
482482
<>
483483
<img src="/warning-icon-large.svg" alt="warning icon" className="mb-24px" />
484-
<p className="text-center text-14">An error occured, please refresh</p>
484+
<p className="text-center text-14">An error occurred, please refresh</p>
485485
</>
486486
)}
487487
</div>

app/robots.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
export default function robots() {
2+
return {
3+
rules: [
4+
{
5+
userAgent: '*',
6+
allow: '/'
7+
}
8+
],
9+
sitemap: 'https://playground.getconvoy.io/sitemap.xml'
10+
};
11+
}

app/sitemap.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
export default function sitemap() {
2+
return [
3+
{
4+
url: 'https://playground.getconvoy.io',
5+
lastModified: new Date(),
6+
changeFrequency: 'monthly',
7+
priority: 1
8+
}
9+
];
10+
}

package-lock.json

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)