Skip to content

Commit 8281381

Browse files
authored
Merge pull request #387 from probablyABug/feat/seo-meta-tags
feat: add dynamic SEO and OpenGraph meta tags #188
2 parents ba539af + 958520f commit 8281381

4 files changed

Lines changed: 28 additions & 7 deletions

File tree

client/index.html

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,13 @@
77
<link rel="apple-touch-icon" href="/vite.svg">
88
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
99
<meta name="theme-color" content="#ffffff" />
10-
<title>Tikka App</title>
11-
<meta name="description" content="Tikka Application" />
12-
<meta name="apple-mobile-web-app-capable" content="yes" />
13-
<meta name="apple-mobile-web-app-status-bar-style" content="default" />
10+
<title>Tikka | Decentralized Raffles on Stellar</title>
11+
<meta name="description" content="Transparent, secure, and provably fair raffles powered by Soroban smart contracts on the Stellar network." />
12+
<meta property="og:title" content="Tikka | Decentralized Raffles on Stellar" />
13+
<meta property="og:description" content="Transparent, secure, and provably fair raffles powered by Soroban smart contracts." />
14+
<meta property="og:image" content="/og-image.png" />
15+
<meta property="og:type" content="website" />
16+
<meta name="twitter:card" content="summary_large_image" />
1417
<script>
1518
// Apply dark class immediately to avoid flash of wrong theme
1619
document.documentElement.classList.toggle(

client/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
"lucide-react": "^0.544.0",
2929
"react": "^19.2.0",
3030
"react-dom": "^19.2.0",
31+
"react-helmet-async": "^3.0.0",
3132
"react-i18next": "^17.0.4",
3233
"react-router-dom": "^7.13.2",
3334
"recharts": "^3.8.1",

client/src/main.tsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,16 @@ import { createRoot } from 'react-dom/client'
88
import './index.css'
99
import App from './App.tsx'
1010
import ErrorBoundary from './components/ui/ErrorBoundary.tsx'
11+
import { HelmetProvider } from 'react-helmet-async'
1112
import './i18n'
1213

1314
createRoot(document.getElementById('root')!).render(
1415
<StrictMode>
15-
<ErrorBoundary>
16-
<App />
17-
</ErrorBoundary>
16+
<HelmetProvider>
17+
<ErrorBoundary>
18+
<App />
19+
</ErrorBoundary>
20+
</HelmetProvider>
1821
</StrictMode>,
1922
)
2023

client/src/pages/RafflePage.tsx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import AddToCalendar from "../components/ui/AddToCalendar";
2525
import Line from "../assets/svg/Line";
2626
import detailimage from "../assets/detailimage.png";
2727
import { Breadcrumbs } from "../components/ui/Breadcrumbs";
28+
import { Helmet } from "react-helmet-async";
2829
import { useTranslation } from "react-i18next";
2930

3031
const Skeleton = ({ className }: { className?: string }) => (
@@ -109,6 +110,19 @@ const RafflePage = () => {
109110

110111
return (
111112
<div className="w-full mx-auto max-w-7xl px-6 md:px-12 lg:px-16 py-8 flex flex-col space-y-6 animate-in fade-in slide-in-from-bottom-4 duration-700">
113+
<Helmet>
114+
<title>{title} | Tikka Raffles</title>
115+
<meta name="description" content={description || "Join this raffle on Tikka!"} />
116+
<meta property="og:title" content={title} />
117+
<meta property="og:description" content={description || "Join this raffle on Tikka!"} />
118+
<meta property="og:image" content={image || detailimage} />
119+
<meta property="og:url" content={window.location.href} />
120+
<meta property="og:type" content="website" />
121+
<meta name="twitter:card" content="summary_large_image" />
122+
<meta name="twitter:title" content={title} />
123+
<meta name="twitter:description" content={description || "Join this raffle on Tikka!"} />
124+
<meta name="twitter:image" content={image || detailimage} />
125+
</Helmet>
112126
<Breadcrumbs
113127
items={[
114128
{ label: t("navbar.discover"), href: "/home" },

0 commit comments

Comments
 (0)