From fa4f7536dc69add8702971f27bf42ee2a678a172 Mon Sep 17 00:00:00 2001 From: Motunrayo Koyejo Date: Tue, 21 Apr 2026 18:16:06 +0100 Subject: [PATCH 1/4] feat: add Open Graph images, rewrite README, and clean up unused config for better SEO --- .env.example | 2 + README.md | 82 ++++++++++++++----- app/globals.css | 35 -------- app/layout.js | 19 ++++- app/opengraph-image.js | 139 ++++++++++++++++++++++++++++++++ app/sitemap.js | 8 +- app/twitter-image.js | 1 + next.config.js | 4 - pages/api/sentry-example-api.js | 5 -- pages/sentry-example-page.js | 84 ------------------- public/vercel.svg | 1 - 11 files changed, 227 insertions(+), 153 deletions(-) create mode 100644 .env.example delete mode 100644 app/globals.css create mode 100644 app/opengraph-image.js create mode 100644 app/twitter-image.js delete mode 100644 pages/api/sentry-example-api.js delete mode 100644 pages/sentry-example-page.js delete mode 100644 public/vercel.svg diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..4646293 --- /dev/null +++ b/.env.example @@ -0,0 +1,2 @@ + +API_URL=https://your-convoy-instance.com/api/v1 diff --git a/README.md b/README.md index 7899870..48a6b9f 100644 --- a/README.md +++ b/README.md @@ -1,35 +1,79 @@ -This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). +# Convoy Playground -## Getting Started +A free, open-source playground for receiving, testing, and debugging webhook events in real time — powered by [Convoy](https://getconvoy.io), the open-source webhooks gateway. -First, run the development server: +**Live at [playground.getconvoy.io](https://playground.getconvoy.io)** + +## Features + +- **Instant webhook URL** — Get a unique HTTP source URL in one click. Send webhook events to it from any provider or `curl`. +- **Real-time event feed** — Events appear within seconds, grouped by date with status indicators (success, pending, failed). +- **Payload inspection** — Syntax-highlighted headers and JSON body for every event, powered by Prism.js. +- **Delivery attempt tracking** — See delivery metadata including retry counts and attempt status. +- **Shareable sessions** — Each source gets a unique `/in/{id}` URL you can bookmark or share. + +## Quick Start + +### Prerequisites + +- Node.js 18+ +- npm + +### Setup + +```bash +# Clone the repository +git clone https://github.com/frain-dev/convoy-playground.git +cd convoy-playground + +# Install dependencies +npm install + +# Create environment file +cp .env.example .env.local +``` + +### Environment Variables + +| Variable | Description | Required | +|----------|-------------|----------| +| `API_URL` | Base URL for the Convoy API (e.g. `https://api.getconvoy.io/api/v1`) | Yes | + +### Development ```bash npm run dev -# or -yarn dev -# or -pnpm dev ``` -Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. +Open [http://localhost:3000](http://localhost:3000) in your browser. + +### Production Build -You can start editing the page by modifying `app/page.js`. The page auto-updates as you edit the file. +```bash +npm run build +npm start +``` -This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font. +## Tech Stack -## Learn More +- [Next.js](https://nextjs.org/) — React framework (App Router) +- [Tailwind CSS](https://tailwindcss.com/) — Utility-first styling +- [Prism.js](https://prismjs.com/) — Syntax highlighting +- [Sentry](https://sentry.io/) — Error monitoring +- [date-fns](https://date-fns.org/) — Date formatting -To learn more about Next.js, take a look at the following resources: +## How It Works -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. +1. On first visit, the playground creates an HTTP source via the Convoy API. +2. You receive a unique URL (e.g. `https://...convoy.io/ingest/abc123`). +3. Send any HTTP request to that URL — POST a JSON payload, forward a webhook from Stripe/GitHub/etc. +4. Events appear in the feed. Click any event to inspect its headers and body. +5. Delivery attempts and their statuses are tracked automatically. -You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! +## Contributing -## Deploy on Vercel +Contributions are welcome! Please open an issue or submit a pull request. -The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. +## License -Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. -# convoy-playground +This project is maintained by [Convoy](https://getconvoy.io). diff --git a/app/globals.css b/app/globals.css deleted file mode 100644 index 96d59de..0000000 --- a/app/globals.css +++ /dev/null @@ -1,35 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; - -:root { - --foreground-rgb: 0, 0, 0; - --background-start-rgb: 214, 219, 220; - --background-end-rgb: 255, 255, 255; -} - -@media (prefers-color-scheme: dark) { - :root { - --foreground-rgb: 255, 255, 255; - --background-start-rgb: 0, 0, 0; - --background-end-rgb: 0, 0, 0; - } -} - -body { - /* color: rgb(var(--foreground-rgb)); */ - /* background: linear-gradient( - to bottom, - transparent, - rgb(var(--background-end-rgb)) - ) - rgb(var(--background-start-rgb)); */ -} - -.active { - @apply transition-all duration-300 relative after:bottom-0 after:h-[3px] after:w-full after:left-0 after:right-0 after:bg-primary-400 after:absolute after:rounded-tl-16px after:rounded-tr-16px; -} - -.active span { - @apply text-primary-400 transition-all duration-300; -} diff --git a/app/layout.js b/app/layout.js index 473e4ae..aadf1e5 100644 --- a/app/layout.js +++ b/app/layout.js @@ -6,7 +6,7 @@ const inter = Inter({ subsets: ['latin'] }); export const metadata = { title: 'Convoy Playground — Receive, Test & Debug Webhook Events', 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.', - keywords: ['webhook', 'webhook testing', 'webhook playground', 'convoy', 'webhook debugger', 'webhook events', 'webhook inspector', 'webhook delivery', 'open source webhooks'], + keywords: ['webhook', 'webhook testing', 'webhook playground', 'convoy', 'webhook debugger', 'webhook events', 'webhook inspector', 'webhook delivery', 'open source webhooks', 'webhook receiver', 'webhook url', 'test webhooks online'], metadataBase: new URL('https://playground.getconvoy.io'), alternates: { canonical: '/' @@ -17,19 +17,30 @@ export const metadata = { url: 'https://playground.getconvoy.io', siteName: 'Convoy Playground', type: 'website', - locale: 'en_US' + locale: 'en_US', + images: [ + { + url: '/opengraph-image', + width: 1200, + height: 630, + alt: 'Convoy Playground — Receive, Test & Debug Webhook Events' + } + ] }, twitter: { card: 'summary_large_image', title: 'Convoy Playground — Receive, Test & Debug Webhook Events', - description: 'A free playground for receiving, testing, and debugging webhook events in real time. Powered by Convoy, the open-source webhooks gateway.' + description: 'A free playground for receiving, testing, and debugging webhook events in real time. Powered by Convoy, the open-source webhooks gateway.', + images: ['/twitter-image'] }, robots: { index: true, follow: true, googleBot: { index: true, - follow: true + follow: true, + 'max-image-preview': 'large', + 'max-snippet': -1 } } }; diff --git a/app/opengraph-image.js b/app/opengraph-image.js new file mode 100644 index 0000000..2f07d1a --- /dev/null +++ b/app/opengraph-image.js @@ -0,0 +1,139 @@ +import { ImageResponse } from 'next/server'; + +export const runtime = 'edge'; + +export const alt = 'Convoy Playground — Receive, Test & Debug Webhook Events'; +export const size = { width: 1200, height: 630 }; +export const contentType = 'image/png'; + +export default function Image() { + return new ImageResponse( + ( +
+
+
+
+ C +
+ Convoy Playground +
+ +

+ Receive, test, and debug webhook events in real time. Inspect headers, payloads, and delivery attempts. +

+ +
+
+ + Real-time events +
+
+ + Payload inspection +
+
+ + Delivery debugging +
+
+
+ +
+ Powered by Convoy — The open-source webhooks gateway +
+
+ ), + { ...size } + ); +} diff --git a/app/sitemap.js b/app/sitemap.js index e0beac4..01b194d 100644 --- a/app/sitemap.js +++ b/app/sitemap.js @@ -3,8 +3,14 @@ export default function sitemap() { { url: 'https://playground.getconvoy.io', lastModified: new Date(), - changeFrequency: 'monthly', + changeFrequency: 'weekly', priority: 1 + }, + { + url: 'https://playground.getconvoy.io/in', + lastModified: new Date(), + changeFrequency: 'weekly', + priority: 0.8 } ]; } diff --git a/app/twitter-image.js b/app/twitter-image.js new file mode 100644 index 0000000..2a8466e --- /dev/null +++ b/app/twitter-image.js @@ -0,0 +1 @@ +export { default, alt, contentType, runtime, size } from './opengraph-image'; diff --git a/next.config.js b/next.config.js index 4550248..9978a04 100644 --- a/next.config.js +++ b/next.config.js @@ -8,11 +8,7 @@ const nextConfig = { experimental: { appDir: true }, - compiler: { - styledComponents: true - }, env: { - PROJECT_TOKEN: process.env.PROJECT_TOKEN, API_URL: process.env.API_URL } }; diff --git a/pages/api/sentry-example-api.js b/pages/api/sentry-example-api.js deleted file mode 100644 index ac07eec..0000000 --- a/pages/api/sentry-example-api.js +++ /dev/null @@ -1,5 +0,0 @@ -// A faulty API route to test Sentry's error monitoring -export default function handler(_req, res) { - throw new Error("Sentry Example API Route Error"); - res.status(200).json({ name: "John Doe" }); -} diff --git a/pages/sentry-example-page.js b/pages/sentry-example-page.js deleted file mode 100644 index a0b5c8a..0000000 --- a/pages/sentry-example-page.js +++ /dev/null @@ -1,84 +0,0 @@ -import Head from "next/head"; -import * as Sentry from "@sentry/nextjs"; - -export default function Home() { - return ( -
- - Sentry Onboarding - - - -
-

- - - -

- -

Get started by sending us a sample error:

- - -

- Next, look for the error on the{" "} - Issues Page. -

-

- For more information, see{" "} - - https://docs.sentry.io/platforms/javascript/guides/nextjs/ - -

-
-
- ); -} diff --git a/public/vercel.svg b/public/vercel.svg deleted file mode 100644 index d2f8422..0000000 --- a/public/vercel.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file From a68aa443b922720b98a89f8cc792496afebdadd6 Mon Sep 17 00:00:00 2001 From: Motunrayo Koyejo Date: Tue, 21 Apr 2026 18:17:31 +0100 Subject: [PATCH 2/4] feat: add Open Graph images, rewrite README, and clean up unused config for better SEO --- app/sitemap.js | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/app/sitemap.js b/app/sitemap.js index 01b194d..e0beac4 100644 --- a/app/sitemap.js +++ b/app/sitemap.js @@ -3,14 +3,8 @@ export default function sitemap() { { url: 'https://playground.getconvoy.io', lastModified: new Date(), - changeFrequency: 'weekly', + changeFrequency: 'monthly', priority: 1 - }, - { - url: 'https://playground.getconvoy.io/in', - lastModified: new Date(), - changeFrequency: 'weekly', - priority: 0.8 } ]; } From 66479bcc46d6c140e2f6d4086f7fa7c0953b94f8 Mon Sep 17 00:00:00 2001 From: Motunrayo Koyejo Date: Tue, 21 Apr 2026 18:41:55 +0100 Subject: [PATCH 3/4] added OG image --- app/layout.js | 8 +-- app/opengraph-image.js | 139 ----------------------------------------- app/twitter-image.js | 1 - public/og-image.png | Bin 0 -> 11486 bytes 4 files changed, 4 insertions(+), 144 deletions(-) delete mode 100644 app/opengraph-image.js delete mode 100644 app/twitter-image.js create mode 100644 public/og-image.png diff --git a/app/layout.js b/app/layout.js index aadf1e5..1e0be67 100644 --- a/app/layout.js +++ b/app/layout.js @@ -20,9 +20,9 @@ export const metadata = { locale: 'en_US', images: [ { - url: '/opengraph-image', - width: 1200, - height: 630, + url: '/og-image.png', + width: 1024, + height: 341, alt: 'Convoy Playground — Receive, Test & Debug Webhook Events' } ] @@ -31,7 +31,7 @@ export const metadata = { card: 'summary_large_image', title: 'Convoy Playground — Receive, Test & Debug Webhook Events', description: 'A free playground for receiving, testing, and debugging webhook events in real time. Powered by Convoy, the open-source webhooks gateway.', - images: ['/twitter-image'] + images: ['/og-image.png'] }, robots: { index: true, diff --git a/app/opengraph-image.js b/app/opengraph-image.js deleted file mode 100644 index 2f07d1a..0000000 --- a/app/opengraph-image.js +++ /dev/null @@ -1,139 +0,0 @@ -import { ImageResponse } from 'next/server'; - -export const runtime = 'edge'; - -export const alt = 'Convoy Playground — Receive, Test & Debug Webhook Events'; -export const size = { width: 1200, height: 630 }; -export const contentType = 'image/png'; - -export default function Image() { - return new ImageResponse( - ( -
-
-
-
- C -
- Convoy Playground -
- -

- Receive, test, and debug webhook events in real time. Inspect headers, payloads, and delivery attempts. -

- -
-
- - Real-time events -
-
- - Payload inspection -
-
- - Delivery debugging -
-
-
- -
- Powered by Convoy — The open-source webhooks gateway -
-
- ), - { ...size } - ); -} diff --git a/app/twitter-image.js b/app/twitter-image.js deleted file mode 100644 index 2a8466e..0000000 --- a/app/twitter-image.js +++ /dev/null @@ -1 +0,0 @@ -export { default, alt, contentType, runtime, size } from './opengraph-image'; diff --git a/public/og-image.png b/public/og-image.png new file mode 100644 index 0000000000000000000000000000000000000000..21956bb4aef0bbe62f416b61a6012fa54725d074 GIT binary patch literal 11486 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 Date: Tue, 21 Apr 2026 20:10:36 +0100 Subject: [PATCH 4/4] updated image --- app/layout.js | 2 +- public/og-image.png | Bin 11486 -> 35990 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/app/layout.js b/app/layout.js index 1e0be67..af17a9c 100644 --- a/app/layout.js +++ b/app/layout.js @@ -22,7 +22,7 @@ export const metadata = { { url: '/og-image.png', width: 1024, - height: 341, + height: 537, alt: 'Convoy Playground — Receive, Test & Debug Webhook Events' } ] diff --git a/public/og-image.png b/public/og-image.png index 21956bb4aef0bbe62f416b61a6012fa54725d074..ed173c67ec906ed633d108d748d4b715eca75f67 100644 GIT binary patch literal 35990 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≈O?-KOEDKV%yl#xu7*-k%#was*=6%ux$T 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