Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions next.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,15 @@ import type { NextConfig } from "next";

const nextConfig: NextConfig = {
pageExtensions: ["ts", "tsx", "md", "mdx"],
images: {
remotePatterns: [
{
protocol: "https",
hostname: "api.producthunt.com",
pathname: "/widgets/embed-image/v1/**",
},
],
},
experimental: {
mdxRs: {
mdxType: "gfm",
Expand Down
12 changes: 10 additions & 2 deletions src/app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,20 @@ const jetbrainsMono = JetBrains_Mono({
export const metadata: Metadata = {
title: "BugDrop - Free Website Feedback Widget for GitHub Issues",
description:
"Free, open source website feedback widget. Users report bugs with screenshots and annotations — issues are created in GitHub automatically. One script tag, zero config.",
"Free, open source website feedback widget by mean-weasel. Users report bugs with screenshots and annotations — issues are created in GitHub automatically. One script tag, zero config.",
keywords: [
"BugDrop",
"mean-weasel",
"GitHub Issues feedback widget",
"website feedback widget",
"bug reporting widget",
"Product Hunt",
],
metadataBase: new URL("https://bugdrop.dev"),
openGraph: {
title: "BugDrop - Free Website Feedback Widget for GitHub Issues",
description:
"Free, open source website feedback widget. Users report bugs with screenshots and annotations — issues are created in GitHub automatically.",
"Free, open source website feedback widget by mean-weasel. Users report bugs with screenshots and annotations — issues are created in GitHub automatically.",
url: "https://bugdrop.dev",
siteName: "BugDrop",
type: "website",
Expand Down
35 changes: 31 additions & 4 deletions src/app/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,16 @@ import { QuickStart } from "@/components/landing/quick-start";
import { ConfigTable } from "@/components/landing/config-table";
import { TryCallout } from "@/components/landing/try-callout";
import { JsonLd } from "@/components/json-ld";
import { MARKETPLACE_URL, SAMPLE_DEMO_REPO, WIDGET_URL } from "@/lib/links";
import {
GITHUB_ORG_URL,
GITHUB_PROFILE_URL,
GITHUB_REPO_URL,
GITHUB_WEB_REPO_URL,
MARKETPLACE_URL,
PRODUCT_HUNT_URL,
SAMPLE_DEMO_REPO,
WIDGET_URL,
} from "@/lib/links";

const structuredData = {
"@context": "https://schema.org",
Expand All @@ -28,11 +37,29 @@ const structuredData = {
author: {
"@type": "Organization",
name: "mean-weasel",
url: "https://github.com/mean-weasel",
url: GITHUB_ORG_URL,
},
creator: {
"@type": "Person",
name: "neonwatty",
url: GITHUB_PROFILE_URL,
},
publisher: {
"@type": "Organization",
name: "mean-weasel",
url: GITHUB_ORG_URL,
},
license: "https://opensource.org/licenses/MIT",
codeRepository: "https://github.com/mean-weasel/bugdrop",
sameAs: [MARKETPLACE_URL],
codeRepository: GITHUB_REPO_URL,
sameAs: [
MARKETPLACE_URL,
PRODUCT_HUNT_URL,
GITHUB_REPO_URL,
GITHUB_WEB_REPO_URL,
GITHUB_ORG_URL,
GITHUB_PROFILE_URL,
],
award: "Product Hunt #6 Product of the Day, May 9, 2026",
featureList: [
"Screenshot capture",
"Annotation tools",
Expand Down
17 changes: 13 additions & 4 deletions src/components/footer.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,16 @@
import {
GITHUB_ORG_URL,
GITHUB_PROFILE_URL,
GITHUB_REPO_URL,
GITHUB_WEB_REPO_URL,
PRODUCT_HUNT_URL,
} from "@/lib/links";

const repoLinks = [
{ label: "API", href: "https://github.com/mean-weasel/bugdrop" },
{ label: "Landing Page", href: "https://github.com/mean-weasel/bugdrop-web" },
{ label: "API", href: GITHUB_REPO_URL },
{ label: "Landing Page", href: GITHUB_WEB_REPO_URL },
{ label: "Sample App Demo", href: "https://github.com/mean-weasel/bugdrop-widget-test" },
{ label: "Product Hunt", href: PRODUCT_HUNT_URL },
];

export function Footer() {
Expand All @@ -10,7 +19,7 @@ export function Footer() {
<p className="text-text-muted text-sm mb-4">
Built by{" "}
<a
href="https://github.com/neonwatty"
href={GITHUB_PROFILE_URL}
target="_blank"
rel="noopener noreferrer"
className="text-accent-cyan no-underline hover:underline"
Expand All @@ -19,7 +28,7 @@ export function Footer() {
</a>{" "}
/{" "}
<a
href="https://github.com/mean-weasel"
href={GITHUB_ORG_URL}
target="_blank"
rel="noopener noreferrer"
className="text-accent-cyan no-underline hover:underline"
Expand Down
53 changes: 45 additions & 8 deletions src/components/landing/hero.tsx
Original file line number Diff line number Diff line change
@@ -1,24 +1,61 @@
import Image from "next/image";
import { ArrowUpRight, Code2, MessageSquare } from "lucide-react";
import { MARKETPLACE_URL } from "@/lib/links";
import {
GITHUB_ORG_URL,
GITHUB_REPO_URL,
MARKETPLACE_URL,
PRODUCT_HUNT_BADGE_URL,
PRODUCT_HUNT_URL,
} from "@/lib/links";

export function Hero() {
return (
<header className="text-center py-16 pb-24 animate-fade-up">
<h1 className="text-[clamp(2.5rem,6vw,4rem)] font-light tracking-tight leading-[1.15] mb-6 bg-gradient-to-br from-text-primary to-text-muted bg-clip-text text-transparent">
<header className="text-center py-16 pb-24 animate-fade-up max-sm:-mt-6 max-sm:pt-0 max-sm:pb-16">
<h1 className="text-[clamp(2.5rem,6vw,4rem)] font-light tracking-tight leading-[1.15] mb-6 bg-gradient-to-br from-text-primary to-text-muted bg-clip-text text-transparent max-sm:text-[2.35rem]">
Free website feedback widget with
<br />
<strong className="font-bold bg-gradient-to-br from-accent-warm to-accent-rose bg-clip-text">
screenshots in 30 seconds
</strong>
</h1>
<p className="text-xl text-text-subtle max-w-[600px] mx-auto mb-10">
<p className="text-xl text-text-subtle max-w-[600px] mx-auto mb-10 max-sm:mb-7 max-sm:text-lg">
Open source bug reporting widget for any website. Drop it in, and user
feedback becomes GitHub issues — with screenshots, annotations, and
system info.
</p>
<p className="text-sm text-accent-cyan mb-6">
Now available on GitHub Marketplace
</p>
<div className="mb-7 flex flex-col items-center gap-3 max-sm:mb-5">
<p className="text-sm text-accent-cyan">
Now available on GitHub Marketplace. Open source by{" "}
<a
href={GITHUB_ORG_URL}
target="_blank"
rel="noopener noreferrer"
className="text-accent-cyan underline decoration-accent-cyan/40 underline-offset-4 hover:text-text-primary"
>
mean-weasel
</a>
.
</p>
<a
href={`${PRODUCT_HUNT_URL}?utm_source=badge-featured&utm_medium=badge&utm_campaign=badge-bugdrop-2`}
target="_blank"
rel="noopener noreferrer"
aria-label="BugDrop was featured on Product Hunt"
className="inline-flex transition-transform duration-300 hover:-translate-y-0.5"
>
<Image
src={PRODUCT_HUNT_BADGE_URL}
alt="BugDrop - In-app feedback that creates GitHub Issues with screenshots | Product Hunt"
width={250}
height={54}
unoptimized
className="h-[54px] w-[250px]"
/>
</a>
<p className="text-sm font-medium text-text-muted">
#6 Product of the Day · May 9, 2026
</p>
</div>
<div className="flex gap-4 justify-center flex-wrap max-sm:flex-col">
<a
href="#try-bugdrop"
Expand All @@ -37,7 +74,7 @@ export function Hero() {
Install from GitHub Marketplace
</a>
<a
href="https://github.com/mean-weasel/bugdrop"
href={GITHUB_REPO_URL}
target="_blank"
rel="noopener noreferrer"
className="inline-flex items-center gap-2 px-8 py-4 rounded-[10px] font-medium text-[0.95rem] bg-bg-surface text-text-primary border border-border hover:bg-bg-elevated hover:-translate-y-0.5 transition-all duration-300 max-sm:w-full max-sm:justify-center"
Expand Down
3 changes: 2 additions & 1 deletion src/components/nav.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import Link from "next/link";
import { GITHUB_REPO_URL } from "@/lib/links";

export function Nav() {
return (
Expand All @@ -17,7 +18,7 @@ export function Nav() {
Compare
</Link>
<a
href="https://github.com/mean-weasel/bugdrop"
href={GITHUB_REPO_URL}
target="_blank"
rel="noopener noreferrer"
className="text-sm text-text-subtle hover:text-text-primary transition-colors"
Expand Down
13 changes: 13 additions & 0 deletions src/lib/links.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,19 @@
export const MARKETPLACE_URL =
"https://github.com/marketplace/bugdrop-in-app-feedback-to-github-issues";

export const PRODUCT_HUNT_URL = "https://www.producthunt.com/products/bugdrop-2";

export const PRODUCT_HUNT_BADGE_URL =
"https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=1141615&theme=light&t=1778415221018";

export const GITHUB_ORG_URL = "https://github.com/mean-weasel";

export const GITHUB_PROFILE_URL = "https://github.com/neonwatty";

export const GITHUB_REPO_URL = "https://github.com/mean-weasel/bugdrop";

export const GITHUB_WEB_REPO_URL = "https://github.com/mean-weasel/bugdrop-web";

export const DEMO_PATH = "/demo";

export const DEMO_URL = "https://bugdrop-widget-test.vercel.app";
Expand Down
Loading