Skip to content

Commit 807853b

Browse files
committed
basic seo for codequest
1 parent a111747 commit 807853b

File tree

12 files changed

+473
-12
lines changed

12 files changed

+473
-12
lines changed

client-test/index.html

Lines changed: 96 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,104 @@
22
<html lang="en">
33
<head>
44
<meta charset="UTF-8" />
5-
<link rel="icon" type="image/x-icon" href="/CLUB_LOGO_WITH_BLACK_BG-removebg-preview.webp" />
65
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6+
7+
<!-- Favicon and App Icons -->
8+
<link rel="icon" type="image/x-icon" href="/CLUB_LOGO_WITH_BLACK_BG-removebg-preview.webp" />
9+
<link rel="apple-touch-icon" href="/CLUB_LOGO_WITH_BLACK_BG-removebg-preview.webp" />
10+
11+
<!-- Primary Meta Tags -->
12+
<title>CodeQuest - Daily Coding Challenges | SRKR Coding Club</title>
13+
<meta name="title" content="CodeQuest - Daily Coding Challenges | SRKR Coding Club" />
14+
<meta name="description" content="Join CodeQuest by SRKR Coding Club for daily coding challenges, leaderboards, and programming competitions. Enhance your coding skills with our interactive platform." />
15+
<meta name="keywords" content="coding challenges, programming contests, SRKR coding club, daily coding problems, leaderboard, competitive programming, software development, coding practice" />
16+
<meta name="author" content="SRKR Coding Club" />
17+
<meta name="robots" content="index, follow" />
18+
<meta name="language" content="English" />
19+
20+
<!-- Open Graph / Facebook -->
21+
<meta property="og:type" content="website" />
22+
<meta property="og:url" content="https://codequest.srkrcodingclub.com/" />
23+
<meta property="og:title" content="CodeQuest - Daily Coding Challenges | SRKR Coding Club" />
24+
<meta property="og:description" content="Join CodeQuest by SRKR Coding Club for daily coding challenges, leaderboards, and programming competitions. Enhance your coding skills with our interactive platform." />
25+
<meta property="og:image" content="/CLUB_LOGO_WITH_BLACK_BG-removebg-preview.webp" />
26+
<meta property="og:site_name" content="CodeQuest - SRKR Coding Club" />
27+
<meta property="og:locale" content="en_US" />
28+
29+
<!-- Twitter -->
30+
<meta property="twitter:card" content="summary_large_image" />
31+
<meta property="twitter:url" content="https://codequest.srkrcodingclub.com/" />
32+
<meta property="twitter:title" content="CodeQuest - Daily Coding Challenges | SRKR Coding Club" />
33+
<meta property="twitter:description" content="Join CodeQuest by SRKR Coding Club for daily coding challenges, leaderboards, and programming competitions. Enhance your coding skills with our interactive platform." />
34+
<meta property="twitter:image" content="/CLUB_LOGO_WITH_BLACK_BG-removebg-preview.webp" />
35+
<meta property="twitter:site" content="@srkr_coding_club" />
36+
37+
<!-- Theme and App -->
38+
<meta name="theme-color" content="#3B82F6" />
39+
<meta name="msapplication-TileColor" content="#3B82F6" />
40+
41+
<!-- Canonical URL -->
42+
<link rel="canonical" href="https://codequest.srkrcodingclub.com/" />
43+
44+
<!-- Styles -->
745
<link href="/src/styles.css" rel="stylesheet">
8-
<title>Code Quest</title>
46+
47+
<!-- Structured Data - Organization -->
48+
<script type="application/ld+json">
49+
{
50+
"@context": "https://schema.org",
51+
"@type": "Organization",
52+
"name": "SRKR Coding Club",
53+
"alternateName": "CodeQuest",
54+
"url": "https://codequest.srkrcodingclub.com",
55+
"logo": "https://codequest.srkrcodingclub.com/CLUB_LOGO_WITH_BLACK_BG-removebg-preview.webp",
56+
"description": "SRKR Coding Club offers daily coding challenges and programming competitions through CodeQuest platform",
57+
"address": {
58+
"@type": "PostalAddress",
59+
"streetAddress": "SRKR Engineering College",
60+
"addressLocality": "Bhimavaram",
61+
"addressRegion": "Andhra Pradesh",
62+
"postalCode": "534204",
63+
"addressCountry": "IN"
64+
},
65+
"contactPoint": {
66+
"@type": "ContactPoint",
67+
"telephone": "+91-81217-02286",
68+
"contactType": "customer service",
69+
"email": "srkrcodingclubofficial@gmail.com"
70+
},
71+
"sameAs": [
72+
"https://www.linkedin.com/in/srkr-coding-club-549799293",
73+
"https://twitter.com/srkr_coding_club",
74+
"https://www.instagram.com/srkr_coding_club",
75+
"https://youtube.com/@srkrcodingclub"
76+
]
77+
}
78+
</script>
79+
80+
<!-- Structured Data - Website -->
81+
<script type="application/ld+json">
82+
{
83+
"@context": "https://schema.org",
84+
"@type": "WebSite",
85+
"name": "CodeQuest",
86+
"alternateName": "SRKR Coding Club Platform",
87+
"url": "https://codequest.srkrcodingclub.com",
88+
"description": "Interactive coding challenge platform with daily problems, leaderboards, and competitive programming",
89+
"publisher": {
90+
"@type": "Organization",
91+
"name": "SRKR Coding Club"
92+
},
93+
"potentialAction": {
94+
"@type": "SearchAction",
95+
"target": {
96+
"@type": "EntryPoint",
97+
"urlTemplate": "https://codequest.srkrcodingclub.com/challenges?search={search_term_string}"
98+
},
99+
"query-input": "required name=search_term_string"
100+
}
101+
}
102+
</script>
9103
</head>
10104
<body>
11105
<div id="root"></div>

client-test/public/robots.txt

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
User-agent: *
2+
Allow: /
3+
4+
# Sitemap
5+
Sitemap: https://codequest.srkrcodingclub.com/sitemap.xml
6+
7+
# Disallow admin routes (if any)
8+
Disallow: /codingclubadmin/
9+
Disallow: /admin/
10+
Disallow: /api/
11+
12+
# Allow main pages
13+
Allow: /
14+
Allow: /about
15+
Allow: /challenges
16+
Allow: /leaderboard
17+
Allow: /register
18+
Allow: /login
19+
Allow: /privacy-policy
20+
Allow: /terms-conditions
21+
22+
# Crawl delay (optional)
23+
Crawl-delay: 1

client-test/public/sitemap.xml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
3+
<url>
4+
<loc>https://codequest.srkrcodingclub.com/</loc>
5+
<lastmod>2025-10-20</lastmod>
6+
<changefreq>daily</changefreq>
7+
<priority>1.0</priority>
8+
</url>
9+
<url>
10+
<loc>https://codequest.srkrcodingclub.com/about</loc>
11+
<lastmod>2025-10-20</lastmod>
12+
<changefreq>monthly</changefreq>
13+
<priority>0.8</priority>
14+
</url>
15+
<url>
16+
<loc>https://codequest.srkrcodingclub.com/challenges</loc>
17+
<lastmod>2025-10-20</lastmod>
18+
<changefreq>daily</changefreq>
19+
<priority>0.9</priority>
20+
</url>
21+
<url>
22+
<loc>https://codequest.srkrcodingclub.com/leaderboard</loc>
23+
<lastmod>2025-10-20</lastmod>
24+
<changefreq>daily</changefreq>
25+
<priority>0.7</priority>
26+
</url>
27+
<url>
28+
<loc>https://codequest.srkrcodingclub.com/register</loc>
29+
<lastmod>2025-10-20</lastmod>
30+
<changefreq>monthly</changefreq>
31+
<priority>0.6</priority>
32+
</url>
33+
<url>
34+
<loc>https://codequest.srkrcodingclub.com/login</loc>
35+
<lastmod>2025-10-20</lastmod>
36+
<changefreq>monthly</changefreq>
37+
<priority>0.5</priority>
38+
</url>
39+
<url>
40+
<loc>https://codequest.srkrcodingclub.com/privacy-policy</loc>
41+
<lastmod>2025-10-20</lastmod>
42+
<changefreq>yearly</changefreq>
43+
<priority>0.3</priority>
44+
</url>
45+
<url>
46+
<loc>https://codequest.srkrcodingclub.com/terms-conditions</loc>
47+
<lastmod>2025-10-20</lastmod>
48+
<changefreq>yearly</changefreq>
49+
<priority>0.3</priority>
50+
</url>
51+
</urlset>

client-test/src/App.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,12 @@ import AdminLogin from './components/Admin/index';
2323
import Dashboard from './components/Admin/Dashboard.tsx';
2424
import { useAdminStore } from './context/AdminContext.tsx';
2525
import AdminChallenges from './components/Admin/AdminChallenges.tsx';
26+
import RouteSEO from './components/RouteSEO';
2627

2728
function UserApp() {
2829
return (
2930
<div className="flex flex-col min-h-screen">
31+
<RouteSEO />
3032
<Navbar />
3133
<Toaster position="bottom-right" toastOptions={{ duration: 2000 }} />
3234
<Routes>

client-test/src/components/About/index.tsx

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { Button } from "@/components/ui/button"
1919
import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"
2020
import { Badge } from "@/components/ui/badge"
2121
import { Card, CardContent } from "@/components/ui/card"
22+
import SEO from "@/components/SEO/SEO"
2223
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"
2324
import { DottedBackground } from "../dotted-background"
2425
import ScrollToTopButton from "../scrolltotop"
@@ -214,8 +215,14 @@ export default function AboutPage() {
214215
}
215216

216217
return (
217-
<div className="relative w-full min-h-screen">
218-
<DottedBackground />
218+
<>
219+
<SEO
220+
title="About SRKR Coding Club"
221+
description="Learn about SRKR Coding Club, our mission, team members, and achievements. Founded in 2023, we're the premier technical community at SRKR Engineering College."
222+
keywords="SRKR Coding Club, about us, team members, coding community, SRKR Engineering College, Bhimavaram, programming club"
223+
/>
224+
<div className="relative w-full min-h-screen">
225+
<DottedBackground />
219226
<motion.div
220227
className="relative z-10"
221228
initial="hidden"
@@ -661,5 +668,6 @@ export default function AboutPage() {
661668
</motion.div>
662669
<ScrollToTopButton />
663670
</div>
671+
</>
664672
)
665673
}
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
import { Link, useLocation } from 'react-router-dom';
2+
import { ChevronRight, Home } from 'lucide-react';
3+
4+
interface BreadcrumbItem {
5+
label: string;
6+
path?: string;
7+
}
8+
9+
const pathNameMap: Record<string, string> = {
10+
'': 'Home',
11+
'about': 'About Us',
12+
'challenges': 'Challenges',
13+
'leaderboard': 'Leaderboard',
14+
'register': 'Sign Up',
15+
'login': 'Login',
16+
'profile': 'Profile',
17+
'privacy-policy': 'Privacy Policy',
18+
'terms-conditions': 'Terms & Conditions'
19+
};
20+
21+
export default function Breadcrumbs() {
22+
const location = useLocation();
23+
const pathnames = location.pathname.split('/').filter((x) => x);
24+
25+
if (location.pathname === '/') {
26+
return null;
27+
}
28+
29+
const breadcrumbs: BreadcrumbItem[] = [
30+
{ label: 'Home', path: '/' }
31+
];
32+
33+
let currentPath = '';
34+
pathnames.forEach((pathname, index) => {
35+
currentPath += `/${pathname}`;
36+
const isLast = index === pathnames.length - 1;
37+
38+
breadcrumbs.push({
39+
label: pathNameMap[pathname] || pathname,
40+
path: isLast ? undefined : currentPath
41+
});
42+
});
43+
44+
return (
45+
<nav aria-label="Breadcrumb" className="bg-gray-50 dark:bg-gray-900/50 py-3 px-4 border-b border-gray-200 dark:border-gray-800">
46+
<div className="container mx-auto">
47+
<ol className="flex items-center space-x-2 text-sm">
48+
{breadcrumbs.map((crumb, index) => (
49+
<li key={index} className="flex items-center">
50+
{index > 0 && (
51+
<ChevronRight className="w-4 h-4 mx-2 text-gray-400" />
52+
)}
53+
{crumb.path ? (
54+
<Link
55+
to={crumb.path}
56+
className="flex items-center text-gray-600 hover:text-primary dark:text-gray-300 dark:hover:text-primary transition-colors"
57+
>
58+
{index === 0 && <Home className="w-4 h-4 mr-1" />}
59+
{crumb.label}
60+
</Link>
61+
) : (
62+
<span className="flex items-center text-gray-900 dark:text-gray-100 font-medium">
63+
{index === 0 && <Home className="w-4 h-4 mr-1" />}
64+
{crumb.label}
65+
</span>
66+
)}
67+
</li>
68+
))}
69+
</ol>
70+
</div>
71+
72+
{/* Structured Data for Breadcrumbs */}
73+
<script type="application/ld+json">
74+
{JSON.stringify({
75+
"@context": "https://schema.org",
76+
"@type": "BreadcrumbList",
77+
"itemListElement": breadcrumbs.map((crumb, index) => ({
78+
"@type": "ListItem",
79+
"position": index + 1,
80+
"name": crumb.label,
81+
"item": crumb.path ? `https://codequest.srkrcodingclub.com${crumb.path}` : undefined
82+
}))
83+
})}
84+
</script>
85+
</nav>
86+
);
87+
}

client-test/src/components/Challenges/index.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { useEffect, useState, useCallback } from "react";
33
import axios from "axios";
44

55
import ChallengePopup from "./ChallengePopup";
6+
import SEO from "../SEO/SEO";
67
import { Badge } from "@/components/ui/badge";
78
import { Button } from "@/components/ui/button";
89
import { Card, CardContent } from "@/components/ui/card";
@@ -357,7 +358,13 @@ const Challenges: React.FC = () => {
357358
};
358359

359360
return (
360-
<div className="w-full max-w-[1040px] mx-auto px-4 py-5 space-y-8 min-h-screen">
361+
<>
362+
<SEO
363+
title="Daily Coding Challenges | CodeQuest"
364+
description="Solve daily coding challenges from LeetCode, GeeksforGeeks, CodeChef, and Codeforces. Practice algorithms, data structures, and competitive programming problems."
365+
keywords="daily coding challenges, leetcode problems, competitive programming, algorithms practice, data structures, coding contests"
366+
/>
367+
<div className="w-full max-w-[1040px] mx-auto px-4 py-5 space-y-8 min-h-screen">
361368
{/* Daily Challenge Section */}
362369
<Card className="rounded-xl overflow-hidden shadow-lg border-1">
363370
<CardContent className="p-4 sm:p-6">
@@ -787,6 +794,7 @@ const Challenges: React.FC = () => {
787794
/>
788795
)}
789796
</div>
797+
</>
790798
);
791799
};
792800

client-test/src/components/Home/index.tsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { HeroSection } from "@/components/hero-section"
88
import { FeatureCard } from "@/components/feature-card"
99
import { useAuth } from "@/context/AuthContext"
1010
import ScrollToTopButton from "../scrolltotop"
11+
import SEO from "../SEO/SEO"
1112

1213
const Home = () => {
1314
const { user } = useAuth();
@@ -28,6 +29,12 @@ const Home = () => {
2829
}, []);
2930

3031
return (
32+
<>
33+
<SEO
34+
title="CodeQuest - Daily Coding Challenges for Students"
35+
description="Join CodeQuest for daily coding challenges, competitive programming, and skill building. Learn algorithms, data structures, and problem-solving with our community of coders."
36+
keywords="coding challenges, programming contests, algorithms, data structures, competitive programming, coding practice"
37+
/>
3138
<div className="px-1">
3239
<HeroSection stats={stats} />
3340

@@ -136,6 +143,7 @@ const Home = () => {
136143

137144
<ScrollToTopButton />
138145
</div>
146+
</>
139147
)
140148
}
141149

0 commit comments

Comments
 (0)