update keywords
This commit is contained in:
parent
42a35675f3
commit
f5c8acca6e
5 changed files with 151 additions and 13 deletions
BIN
public/og-image.png
Normal file
BIN
public/og-image.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 115 KiB |
4
public/robots.txt
Normal file
4
public/robots.txt
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
User-agent: *
|
||||||
|
Allow: /
|
||||||
|
|
||||||
|
Sitemap: https://autli.ru/sitemap.xml
|
||||||
|
|
@ -1,12 +1,15 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||||
|
|
||||||
<url>
|
<url>
|
||||||
<loc>https://autli.ru/</loc>
|
<loc>https://autli.ru/</loc>
|
||||||
|
<lastmod>2026-09-26</lastmod>
|
||||||
|
<changefreq>monthly</changefreq>
|
||||||
|
<priority>1.0</priority>
|
||||||
</url>
|
</url>
|
||||||
|
|
||||||
<url>
|
<url>
|
||||||
<loc>https://autli.ru/projects</loc>
|
<loc>https://autli.ru/projects/</loc>
|
||||||
|
<lastmod>2026-09-26</lastmod>
|
||||||
|
<changefreq>monthly</changefreq>
|
||||||
|
<priority>0.8</priority>
|
||||||
</url>
|
</url>
|
||||||
|
|
||||||
</urlset>
|
</urlset>
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
import type { Metadata } from "next";
|
import type { Metadata } from "next";
|
||||||
|
import type { ReactNode } from "react";
|
||||||
import { Geist, Geist_Mono } from "next/font/google";
|
import { Geist, Geist_Mono } from "next/font/google";
|
||||||
import { ContextMenu } from "@/widgets/context-menu";
|
import { ContextMenu } from "@/widgets/context-menu";
|
||||||
import { CookieConsent } from "@/widgets/cookie-consent";
|
import { CookieConsent } from "@/widgets/cookie-consent";
|
||||||
|
|
@ -18,18 +19,137 @@ const geistMono = Geist_Mono({
|
||||||
subsets: ["latin"],
|
subsets: ["latin"],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const siteUrl = "https://autli.ru";
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: "Personal Site",
|
metadataBase: new URL(siteUrl),
|
||||||
description: "Personal website",
|
title: {
|
||||||
|
default: "Никита Егоров — Frontend & Web Developer | Портфолио",
|
||||||
|
template: "%s | Никита Егоров",
|
||||||
|
},
|
||||||
|
description:
|
||||||
|
"Портфолио веб-разработчика Никиты Егорова. Создание современных, быстрых и адаптивных веб-сайтов, интернет-магазинов и веб-сервисов на React, Next.js, TypeScript и Django.",
|
||||||
|
applicationName: "Никита Егоров — Портфолио",
|
||||||
|
authors: [{ name: "Никита Егоров", url: siteUrl }],
|
||||||
|
creator: "Никита Егоров",
|
||||||
|
publisher: "Никита Егоров",
|
||||||
|
keywords: [
|
||||||
|
"Никита Егоров",
|
||||||
|
"Nikita Egorov",
|
||||||
|
"autli",
|
||||||
|
"веб-разработчик",
|
||||||
|
"фронтенд разработчик",
|
||||||
|
"Frontend Developer",
|
||||||
|
"Web Developer",
|
||||||
|
"React",
|
||||||
|
"Next.js",
|
||||||
|
"TypeScript",
|
||||||
|
"Tailwind CSS",
|
||||||
|
"Django",
|
||||||
|
"разработка сайтов",
|
||||||
|
"портфолио разработчика",
|
||||||
|
],
|
||||||
|
formatDetection: {
|
||||||
|
email: false,
|
||||||
|
address: false,
|
||||||
|
telephone: false,
|
||||||
|
},
|
||||||
|
alternates: {
|
||||||
|
canonical: "/",
|
||||||
|
},
|
||||||
|
openGraph: {
|
||||||
|
title: "Никита Егоров — Frontend & Web Developer | Портфолио",
|
||||||
|
description:
|
||||||
|
"Разработка современных, быстрых и продуманных веб-сервисов, интернет-магазинов и дашбордов на React, Next.js и TypeScript.",
|
||||||
|
url: siteUrl,
|
||||||
|
siteName: "Никита Егоров — Портфолио",
|
||||||
|
locale: "ru_RU",
|
||||||
|
type: "website",
|
||||||
|
images: [
|
||||||
|
{
|
||||||
|
url: "/og-image.png",
|
||||||
|
width: 1200,
|
||||||
|
height: 630,
|
||||||
|
alt: "Никита Егоров — Frontend & Web Developer",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
twitter: {
|
||||||
|
card: "summary_large_image",
|
||||||
|
title: "Никита Егоров — Frontend & Web Developer | Портфолио",
|
||||||
|
description:
|
||||||
|
"Разработка современных, быстрых и продуманных веб-сервисов, интернет-магазинов и дашбордов на React, Next.js и TypeScript.",
|
||||||
|
images: ["/og-image.png"],
|
||||||
|
},
|
||||||
|
robots: {
|
||||||
|
index: true,
|
||||||
|
follow: true,
|
||||||
|
googleBot: {
|
||||||
|
index: true,
|
||||||
|
follow: true,
|
||||||
|
"max-video-preview": -1,
|
||||||
|
"max-image-preview": "large",
|
||||||
|
"max-snippet": -1,
|
||||||
|
},
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const RootLayout = ({ children }: LayoutProps<"/">) => {
|
const jsonLd = {
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@graph": [
|
||||||
|
{
|
||||||
|
"@type": "Person",
|
||||||
|
"@id": `${siteUrl}/#person`,
|
||||||
|
name: "Никита Егоров",
|
||||||
|
alternateName: "Nikita Egorov",
|
||||||
|
jobTitle: "Frontend & Web Developer",
|
||||||
|
url: siteUrl,
|
||||||
|
sameAs: [
|
||||||
|
"https://t.me/autli",
|
||||||
|
"https://github.com/autli5",
|
||||||
|
],
|
||||||
|
knowsAbout: [
|
||||||
|
"React",
|
||||||
|
"Next.js",
|
||||||
|
"TypeScript",
|
||||||
|
"JavaScript",
|
||||||
|
"Tailwind CSS",
|
||||||
|
"Python",
|
||||||
|
"Django",
|
||||||
|
"PostgreSQL",
|
||||||
|
"Web Development",
|
||||||
|
"Core Web Vitals",
|
||||||
|
"SEO",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"@type": "WebSite",
|
||||||
|
"@id": `${siteUrl}/#website`,
|
||||||
|
url: siteUrl,
|
||||||
|
name: "Никита Егоров — Портфолио разработчика",
|
||||||
|
description:
|
||||||
|
"Создание современных, быстрых и продуманных веб-сайтов и приложений под ключ.",
|
||||||
|
publisher: {
|
||||||
|
"@id": `${siteUrl}/#person`,
|
||||||
|
},
|
||||||
|
inLanguage: "ru-RU",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
const RootLayout = ({ children }: { children: ReactNode }) => {
|
||||||
return (
|
return (
|
||||||
<html
|
<html
|
||||||
lang="en"
|
lang="ru"
|
||||||
className={`${geistSans.variable} ${geistMono.variable} h-full antialiased`}
|
className={`${geistSans.variable} ${geistMono.variable} h-full antialiased`}
|
||||||
suppressHydrationWarning
|
suppressHydrationWarning
|
||||||
>
|
>
|
||||||
|
<head>
|
||||||
|
<script
|
||||||
|
type="application/ld+json"
|
||||||
|
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
|
||||||
|
/>
|
||||||
|
</head>
|
||||||
<body className="min-h-full flex flex-col">
|
<body className="min-h-full flex flex-col">
|
||||||
<Preloader />
|
<Preloader />
|
||||||
<Cursor />
|
<Cursor />
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,23 @@
|
||||||
|
import type { Metadata } from "next";
|
||||||
import { ProjectsPage } from "@/views/projects";
|
import { ProjectsPage } from "@/views/projects";
|
||||||
|
|
||||||
|
export const metadata: Metadata = {
|
||||||
|
title: "Все проекты",
|
||||||
|
description:
|
||||||
|
"Коммерческие и пет-проекты Egorov Nikita: веб-приложения, интернет-магазины, SaaS-дашборды и сайты под ключ на React, Next.js, TypeScript и Django.",
|
||||||
|
alternates: {
|
||||||
|
canonical: "/projects/",
|
||||||
|
},
|
||||||
|
openGraph: {
|
||||||
|
title: "Все проекты | Никита Егоров",
|
||||||
|
description:
|
||||||
|
"Коммерческие и пет-проекты Egorov Nikita: веб-приложения, интернет-магазины, SaaS-дашборды и сайты под ключ.",
|
||||||
|
url: "https://autli.ru/projects/",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
const Projects = () => {
|
const Projects = () => {
|
||||||
return <ProjectsPage />;
|
return <ProjectsPage />;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const metadata = {
|
|
||||||
title: "Проекты",
|
|
||||||
description: "Все проекты Egorov Nikita",
|
|
||||||
};
|
|
||||||
|
|
||||||
export default Projects;
|
export default Projects;
|
||||||
Loading…
Add table
Reference in a new issue