Skip to content

Commit 43d11a6

Browse files
committed
trust: link the public source repo (header, footer, About)
For a tool whose pitch is 'your token never leaves the browser', showing the code is the strongest credibility signal. Adds a GitHub 'Source' link in the header (always visible), the footer, and a 'verify it yourself — it's open source' line on the About page, all pointing to github.com/devploit/jwtforge.
1 parent e7680a5 commit 43d11a6

3 files changed

Lines changed: 48 additions & 1 deletion

File tree

src/app/about/page.tsx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,20 @@ export default function AboutPage() {
6565
Network tab, paste a token, and exercise every feature. You will see
6666
no outbound request carrying your token, secret, or keys.
6767
</p>
68+
<p>
69+
And you don&apos;t have to take our word for it — JWTForge is open
70+
source. Read the code, check what the deployed commit does, and audit
71+
the claims on this page at{" "}
72+
<a
73+
href="https://github.com/devploit/jwtforge"
74+
target="_blank"
75+
rel="noopener noreferrer"
76+
className="text-accent hover:underline"
77+
>
78+
github.com/devploit/jwtforge
79+
</a>
80+
.
81+
</p>
6882
</Section>
6983

7084
<Section title="The one exception: JWKS fetch">

src/app/layout.tsx

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ const mono = JetBrains_Mono({
2828
import { SiteNav } from "@/components/SiteNav";
2929
import { PrivacyBadge } from "@/components/PrivacyBadge";
3030
import { Logo } from "@/components/Logo";
31+
import { GithubLink } from "@/components/GithubLink";
3132
import { JsonLd } from "@/components/JsonLd";
3233
import { AnalyticsClient } from "@/components/AnalyticsClient";
3334
import { ServiceWorkerRegister } from "@/components/ServiceWorkerRegister";
@@ -127,7 +128,10 @@ export default function RootLayout({
127128
</Link>
128129
<PrivacyBadge />
129130
</div>
130-
<SiteNav />
131+
<div className="flex items-center gap-3 sm:gap-4">
132+
<SiteNav />
133+
<GithubLink className="border-l border-line/70 pl-3 sm:pl-4" />
134+
</div>
131135
</div>
132136
</header>
133137
<main id="main" className="mx-auto max-w-6xl px-4 py-6">
@@ -156,6 +160,15 @@ export default function RootLayout({
156160
@devploit
157161
</a>{" "}
158162
<span className="text-slate-700">— built in the browser, for the browser</span>
163+
<span className="mx-2 text-slate-700">·</span>
164+
<a
165+
href="https://github.com/devploit/jwtforge"
166+
target="_blank"
167+
rel="noopener noreferrer"
168+
className="text-slate-400 transition-colors hover:text-accent"
169+
>
170+
source on GitHub
171+
</a>
159172
</p>
160173
</footer>
161174
<AnalyticsClient />

src/components/GithubLink.tsx

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
const REPO_URL = "https://github.com/devploit/jwtforge";
2+
3+
/** Link to the public source — the ultimate proof of the privacy guarantee. */
4+
export function GithubLink({ className = "" }: { className?: string }) {
5+
return (
6+
<a
7+
href={REPO_URL}
8+
target="_blank"
9+
rel="noopener noreferrer"
10+
aria-label="View source on GitHub"
11+
title="View source on GitHub — verify the privacy claim yourself"
12+
className={`inline-flex items-center gap-1.5 text-slate-400 transition-colors hover:text-accent ${className}`}
13+
>
14+
<svg width="18" height="18" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true">
15+
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z" />
16+
</svg>
17+
<span className="text-sm font-medium">Source</span>
18+
</a>
19+
);
20+
}

0 commit comments

Comments
 (0)