Skip to content

Commit a59f338

Browse files
Merge pull request #13 from Utkarsh-Sorathia/upcoming-design
Improved SEO and strctured data for better performance
2 parents 61e9a8a + 50cd382 commit a59f338

File tree

4 files changed

+314
-26
lines changed

4 files changed

+314
-26
lines changed

src/Components/UI/Footer.tsx

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,31 @@ const Footer = () => {
126126
<div className="text-center text-xs text-gray-500 mt-8 pt-6 border-t border-gray-800">
127127
© {new Date().getFullYear()} Utkarsh Sorathia. All Rights Reserved.
128128
</div>
129+
130+
{/* Hidden SEO Keywords & Tags */}
131+
<div className="sr-only" aria-hidden="true">
132+
<h2>SEO Keywords for Utkarsh Sorathia</h2>
133+
<p>
134+
Utkarsh, Utkarsh Sorathia, Utkarsh Portfolio, Utkarsh CV, Full Stack Developer,
135+
Software Engineer India, MERN Stack Developer, React.js Expert, Next.js Developer,
136+
Utkarsh Developer, Web Developer Surat, Gujarat Software Engineer, Utkarsh Programming,
137+
Javascript Developer, Node.js Backend Developer, MongoDB Expert, Frontend Engineer,
138+
Utkarsh Sorathia Projects, Utkarsh Sorathia Blogs, Portfolio Website, Web Application Developer,
139+
TypeScript, Express.js Expert, Computer Engineer, Coding, Programming Insights,
140+
Tech Blog by Utkarsh, Software Solutions, Modern Web Development, Clean Code.
141+
</p>
142+
<h3>Technologies and Skills</h3>
143+
<ul>
144+
<li>React.js</li>
145+
<li>Next.js 15</li>
146+
<li>Node.js</li>
147+
<li>MongoDB</li>
148+
<li>Tailwind CSS</li>
149+
<li>Prisma</li>
150+
<li>Sanity CMS</li>
151+
<li>API Development</li>
152+
</ul>
153+
</div>
129154
</div>
130155
</footer>
131156
);

src/app/blogs/page.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import ResponsiveBox from "@/Components/core/ResponsiveBox";
66
import ConstrainedBox from "@/Components/core/constrained-box";
77
import SectionTitle from "@/Components/common/SectionTitle";
88

9-
import { getBlogListingSchema, getBreadcrumbSchema } from "@/utils/structuredData";
9+
import { getBlogListingSchema, getBreadcrumbSchema, getCompleteBlogSchema } from "@/utils/structuredData";
1010
import { baseURL } from "@/utils/api";
1111
import BlogsPageClient from "@/app/blogs/BlogsPageClient";
1212

@@ -24,6 +24,7 @@ export default async function BlogsPage() {
2424
const posts = await getAllBlogPosts();
2525

2626
const blogListingSchema = getBlogListingSchema();
27+
const completeBlogSchema = getCompleteBlogSchema(posts);
2728
const breadcrumbSchema = getBreadcrumbSchema([
2829
{ name: "Home", url: baseURL },
2930
{ name: "Blogs", url: `${baseURL}/blogs` },
@@ -40,6 +41,10 @@ export default async function BlogsPage() {
4041
type="application/ld+json"
4142
dangerouslySetInnerHTML={{ __html: JSON.stringify(breadcrumbSchema) }}
4243
/>
44+
<script
45+
type="application/ld+json"
46+
dangerouslySetInnerHTML={{ __html: JSON.stringify(completeBlogSchema) }}
47+
/>
4348

4449
<ResponsiveBox
4550
classNames="min-h-screen dark:bg-[var(--bgColor)] bg-[var(--bgColor)] dark:bg-grid-white/[0.1] bg-grid-white/[0.1] items-center justify-center lg:px-40"

src/app/layout.tsx

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import BlogButton from "@/Components/UI/BlogButton";
1010
import ErrorBoundary from "@/Components/common/ErrorBoundary";
1111
import { Suspense } from "react";
1212
import WhatsAppButton from "@/Components/UI/WhatsAppButton";
13-
import { getPersonSchema, getWebSiteSchema } from "@/utils/structuredData";
13+
import { getPersonSchema, getWebSiteSchema, getProfilePageSchema, getFAQSchema, getSiteNavigationSchema, getProfessionalServiceSchema, getServiceSchema, getProjectSchema } from "@/utils/structuredData";
1414
import { baseURL } from "@/utils/api";
1515
import { Analytics } from '@vercel/analytics/next';
1616
import { SpeedInsights } from "@vercel/speed-insights/next"
@@ -258,7 +258,12 @@ export default function RootLayout({
258258
<meta name="twitter:image" content={`${baseUrl}/UtkarshSorathia.webp`} />
259259
<meta name="twitter:image:src" content={`${baseUrl}/UtkarshSorathia.webp`} />
260260
<meta name="twitter:image:alt" content="Utkarsh Sorathia - Full Stack Developer Portfolio" />
261+
<meta name="thumbnail" content={`${baseUrl}/UtkarshSorathia.webp`} />
261262
<link rel="me" href="https://www.wikidata.org/wiki/Q137171536" />
263+
<link rel="me" href="https://www.github.com/Utkarsh-Sorathia" />
264+
<link rel="me" href="https://www.linkedin.com/in/utkarsh-sorathia-a9292b22a" />
265+
<link rel="me" href="https://x.com/utkarshsor03" />
266+
<link rel="me" href="https://www.instagram.com/utkarsh__sorathia" />
262267
<script
263268
type="application/ld+json"
264269
dangerouslySetInnerHTML={{
@@ -271,6 +276,42 @@ export default function RootLayout({
271276
__html: JSON.stringify(getWebSiteSchema()),
272277
}}
273278
/>
279+
<script
280+
type="application/ld+json"
281+
dangerouslySetInnerHTML={{
282+
__html: JSON.stringify(getProfilePageSchema()),
283+
}}
284+
/>
285+
<script
286+
type="application/ld+json"
287+
dangerouslySetInnerHTML={{
288+
__html: JSON.stringify(getFAQSchema()),
289+
}}
290+
/>
291+
<script
292+
type="application/ld+json"
293+
dangerouslySetInnerHTML={{
294+
__html: JSON.stringify(getSiteNavigationSchema()),
295+
}}
296+
/>
297+
<script
298+
type="application/ld+json"
299+
dangerouslySetInnerHTML={{
300+
__html: JSON.stringify(getProfessionalServiceSchema()),
301+
}}
302+
/>
303+
<script
304+
type="application/ld+json"
305+
dangerouslySetInnerHTML={{
306+
__html: JSON.stringify(getServiceSchema()),
307+
}}
308+
/>
309+
<script
310+
type="application/ld+json"
311+
dangerouslySetInnerHTML={{
312+
__html: JSON.stringify(getProjectSchema()),
313+
}}
314+
/>
274315
</head>
275316
<body className="flex flex-col min-h-screen antialiased">
276317
<ErrorBoundary>

0 commit comments

Comments
 (0)