From 469495e6533a0adc6b4063511c92e9326f7096e2 Mon Sep 17 00:00:00 2001 From: neonwatty Date: Sun, 5 Apr 2026 06:17:41 -0700 Subject: [PATCH 1/6] feat: add SEO basics and www redirect MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add sitemap.ts with all 10 routes - Add robots.ts allowing all crawlers - Add OpenGraph and Twitter meta tags to root layout - Add www.bugdrop.dev โ†’ bugdrop.dev 301 redirect in next.config.ts --- next.config.ts | 10 ++++++++++ src/app/layout.tsx | 18 ++++++++++++++++++ src/app/robots.ts | 8 ++++++++ src/app/sitemap.ts | 18 ++++++++++++++++++ 4 files changed, 54 insertions(+) create mode 100644 src/app/robots.ts create mode 100644 src/app/sitemap.ts diff --git a/next.config.ts b/next.config.ts index b8d1021..9357ae5 100644 --- a/next.config.ts +++ b/next.config.ts @@ -3,6 +3,16 @@ import type { NextConfig } from "next"; const nextConfig: NextConfig = { pageExtensions: ["ts", "tsx", "md", "mdx"], + async redirects() { + return [ + { + source: "/:path*", + has: [{ type: "host", value: "www.bugdrop.dev" }], + destination: "https://bugdrop.dev/:path*", + permanent: true, + }, + ]; + }, }; const withMDX = createMDX({}); diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 8a3dc90..ffc6bf4 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -20,6 +20,24 @@ export const metadata: Metadata = { title: "BugDrop - In-app feedback to GitHub Issues", description: "Collect bug reports with screenshots in 30 seconds. Open source feedback widget that creates GitHub issues automatically.", + metadataBase: new URL("https://bugdrop.dev"), + openGraph: { + title: "BugDrop - In-app feedback to GitHub Issues", + description: + "Collect bug reports with screenshots in 30 seconds. Open source feedback widget that creates GitHub issues automatically.", + url: "https://bugdrop.dev", + siteName: "BugDrop", + type: "website", + }, + twitter: { + card: "summary_large_image", + title: "BugDrop - In-app feedback to GitHub Issues", + description: + "Collect bug reports with screenshots in 30 seconds. Open source feedback widget that creates GitHub issues automatically.", + }, + alternates: { + canonical: "https://bugdrop.dev", + }, }; export default function RootLayout({ diff --git a/src/app/robots.ts b/src/app/robots.ts new file mode 100644 index 0000000..2850234 --- /dev/null +++ b/src/app/robots.ts @@ -0,0 +1,8 @@ +import type { MetadataRoute } from "next"; + +export default function robots(): MetadataRoute.Robots { + return { + rules: { userAgent: "*", allow: "/" }, + sitemap: "https://bugdrop.dev/sitemap.xml", + }; +} diff --git a/src/app/sitemap.ts b/src/app/sitemap.ts new file mode 100644 index 0000000..d18d987 --- /dev/null +++ b/src/app/sitemap.ts @@ -0,0 +1,18 @@ +import type { MetadataRoute } from "next"; + +export default function sitemap(): MetadataRoute.Sitemap { + const base = "https://bugdrop.dev"; + + return [ + { url: base, lastModified: new Date(), changeFrequency: "weekly", priority: 1 }, + { url: `${base}/docs`, lastModified: new Date(), changeFrequency: "weekly", priority: 0.8 }, + { url: `${base}/docs/installation`, lastModified: new Date(), changeFrequency: "monthly", priority: 0.7 }, + { url: `${base}/docs/configuration`, lastModified: new Date(), changeFrequency: "monthly", priority: 0.7 }, + { url: `${base}/docs/styling`, lastModified: new Date(), changeFrequency: "monthly", priority: 0.7 }, + { url: `${base}/docs/faq`, lastModified: new Date(), changeFrequency: "monthly", priority: 0.6 }, + { url: `${base}/use-cases`, lastModified: new Date(), changeFrequency: "monthly", priority: 0.8 }, + { url: `${base}/use-cases/open-source`, lastModified: new Date(), changeFrequency: "monthly", priority: 0.6 }, + { url: `${base}/use-cases/internal-tools`, lastModified: new Date(), changeFrequency: "monthly", priority: 0.6 }, + { url: `${base}/use-cases/client-projects`, lastModified: new Date(), changeFrequency: "monthly", priority: 0.6 }, + ]; +} From ad35dde6ba678767cd7cfb0fda53253135c34f0c Mon Sep 17 00:00:00 2001 From: neonwatty Date: Sun, 5 Apr 2026 06:33:27 -0700 Subject: [PATCH 2/6] feat: add backlinks to footer - Add neonwatty profile link alongside mean-weasel org - Add repo links: API, Landing Page, Widget Demo - Link to bugdrop, bugdrop-web, and bugdrop-widget-test repos --- src/components/footer.tsx | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/src/components/footer.tsx b/src/components/footer.tsx index d1d091c..9ab6f85 100644 --- a/src/components/footer.tsx +++ b/src/components/footer.tsx @@ -1,8 +1,23 @@ +const repoLinks = [ + { label: "API", href: "https://github.com/mean-weasel/bugdrop" }, + { label: "Landing Page", href: "https://github.com/mean-weasel/bugdrop-web" }, + { label: "Widget Demo", href: "https://github.com/mean-weasel/bugdrop-widget-test" }, +]; + export function Footer() { return (