Skip to content

Commit 65258bb

Browse files
nullcoderClaude
andauthored
feat: add social meta tags, expand FAQ, and polish for launch (#139)
* fix: update PIN references to password for consistency - Update Help page: PIN → password in all sections - Update About page: PIN → password - Update Privacy page: PIN → password, Hashed PINs → Hashed Passwords - Update Security page: PIN → password This completes the terminology standardization from PIN to password across all user-facing pages. 🤖 Generated with Claude Code Co-Authored-By: Claude <claude@ghostpaste.dev> * fix: standardize terminology from paste to gist in Help page - Update all references from 'paste' to 'gist' for consistency - Keep 'paste' only when used as a verb (e.g., 'paste your code') - Update error messages and troubleshooting sections - Fix Pastebin comparison section terminology This completes the terminology standardization across the Help page. 🤖 Generated with Claude Code Co-Authored-By: Claude <claude@ghostpaste.dev> --------- Co-authored-by: Claude <claude@ghostpaste.dev>
1 parent 3bceaf7 commit 65258bb

20 files changed

+1391
-46
lines changed

app/about/page.tsx

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,18 @@ import { GhostLogo } from "@/components/ghost-logo";
2525
export const metadata: Metadata = {
2626
title: "About - GhostPaste",
2727
description:
28-
"Learn about GhostPaste&apos;s zero-knowledge encrypted code sharing and our unique human-AI collaboration.",
28+
"Learn about GhostPaste's zero-knowledge encrypted code sharing and our unique human-AI collaboration.",
29+
openGraph: {
30+
title: "About GhostPaste - The Story Behind Secure Code Sharing",
31+
description:
32+
"Built with love, powered by privacy. Learn how GhostPaste combines human creativity and AI assistance to create the most secure code sharing platform.",
33+
url: "https://ghostpaste.dev/about",
34+
},
35+
twitter: {
36+
title: "About GhostPaste - The Story Behind Secure Code Sharing",
37+
description:
38+
"Human creativity meets AI assistance. Discover how we built the most private code sharing platform.",
39+
},
2940
};
3041

3142
export default function AboutPage() {
@@ -152,7 +163,7 @@ export default function AboutPage() {
152163
<div>
153164
<h3 className="mb-1 font-semibold">Password Protection</h3>
154165
<p className="text-muted-foreground text-sm">
155-
Optional PIN for edit/delete access control
166+
Optional password for edit/delete access control
156167
</p>
157168
</div>
158169
</div>

app/create/layout.tsx

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { Metadata } from "next";
2+
3+
export const metadata: Metadata = {
4+
title: "Create Gist - GhostPaste",
5+
description:
6+
"Create a new encrypted code gist. Your code is encrypted client-side before upload. Set expiration, add passwords, and share securely.",
7+
openGraph: {
8+
title: "Create Encrypted Gist - GhostPaste",
9+
description:
10+
"Create and share encrypted code snippets. Client-side encryption, custom expiration, password protection. Your code never leaves your browser unencrypted.",
11+
url: "https://ghostpaste.dev/create",
12+
},
13+
twitter: {
14+
title: "Create Encrypted Gist - GhostPaste",
15+
description:
16+
"Create and share encrypted code snippets. Client-side encryption ensures your code stays private.",
17+
},
18+
};
19+
20+
export default function CreateLayout({
21+
children,
22+
}: {
23+
children: React.ReactNode;
24+
}) {
25+
return <>{children}</>;
26+
}

app/examples/page.tsx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,17 @@ export const metadata: Metadata = {
2727
title: "Examples - GhostPaste",
2828
description:
2929
"Discover how developers use GhostPaste for secure code sharing in different scenarios.",
30+
openGraph: {
31+
title: "Use Cases & Examples - GhostPaste",
32+
description:
33+
"See how developers use GhostPaste for code reviews, bug reports, interviews, and more. Secure code sharing for every scenario.",
34+
url: "https://ghostpaste.dev/examples",
35+
},
36+
twitter: {
37+
title: "Use Cases & Examples - GhostPaste",
38+
description:
39+
"Code reviews, bug reports, interviews, and more. See how GhostPaste enables secure code sharing.",
40+
},
3041
};
3142

3243
interface ExampleProps {
@@ -64,7 +75,10 @@ function ExampleCard({
6475
</h3>
6576
</div>
6677
{security === "high" && (
67-
<Badge variant="destructive" className="w-fit flex-shrink-0 text-xs">
78+
<Badge
79+
variant="destructive"
80+
className="w-fit flex-shrink-0 bg-red-600 text-xs text-white dark:bg-red-700 dark:text-white"
81+
>
6882
<Shield className="mr-1 h-3 w-3" />
6983
High Security
7084
</Badge>

app/g/[id]/layout.tsx

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import { Metadata } from "next";
2+
3+
export async function generateMetadata({
4+
params,
5+
}: {
6+
params: Promise<{ id: string }>;
7+
}): Promise<Metadata> {
8+
const { id } = await params;
9+
10+
return {
11+
title: `Gist ${id} - GhostPaste`,
12+
description:
13+
"View encrypted code gist. This content is encrypted and can only be decrypted with the proper key.",
14+
openGraph: {
15+
title: `Encrypted Gist - GhostPaste`,
16+
description:
17+
"This gist contains encrypted code. Visit the link with the decryption key to view the content.",
18+
url: `https://ghostpaste.dev/g/${id}`,
19+
type: "article",
20+
},
21+
twitter: {
22+
card: "summary_large_image",
23+
title: `Encrypted Gist - GhostPaste`,
24+
description:
25+
"This gist contains encrypted code. The decryption key is required to view.",
26+
},
27+
robots: {
28+
index: false, // Don't index individual gists for privacy
29+
follow: true,
30+
},
31+
};
32+
}
33+
34+
export default function GistLayout({
35+
children,
36+
}: {
37+
children: React.ReactNode;
38+
}) {
39+
return <>{children}</>;
40+
}

0 commit comments

Comments
 (0)