lang
This commit is contained in:
3
src/config/googleAuth.ts
Normal file
3
src/config/googleAuth.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
/** OAuth Web Client ID — public; same value as modstagram-back GOOGLE_CLIENT_ID */
|
||||
export const GOOGLE_OAUTH_CLIENT_ID =
|
||||
"91028483292-vba2ktgbvus1p5ce18ir04h1b5c50gnn.apps.googleusercontent.com";
|
||||
@@ -1,104 +1,41 @@
|
||||
export const SITE_URL = "https://modstagram.com";
|
||||
export const SITE_NAME = "مدستاگرام";
|
||||
import { DEFAULT_LANGUAGE } from "@/lib/i18n/registry";
|
||||
import { getSiteSeoMeta, getSeoPage, type SeoPageKey } from "@/lib/i18n/seo";
|
||||
import type { PageSeoEntry } from "./pageSeo.types";
|
||||
|
||||
export type PageSeoEntry = {
|
||||
title: string;
|
||||
description: string;
|
||||
path: string;
|
||||
keywords?: string[];
|
||||
};
|
||||
export { SITE_URL } from "./site";
|
||||
|
||||
/** متادیتای صفحات اصلی — منبع واحد برای title / description */
|
||||
export const pageSeo = {
|
||||
home: {
|
||||
title: "مدستاگرام | پلتفرم تخصصی پیدا کردن مدل، عکاس و آرایشگر",
|
||||
description:
|
||||
"مدستاگرام، شبکه اجتماعی تخصصی حوزه زیبایی برای پیدا کردن مدل، عکاس و آرایشگر حرفهای، مشاهده پستها، ارتباط مستقیم و همکاری در پروژههای زیبایی و مد.",
|
||||
path: "/",
|
||||
keywords: [
|
||||
"مدستاگرام",
|
||||
"مدل",
|
||||
"عکاس",
|
||||
"آرایشگر",
|
||||
"مدلینگ",
|
||||
"شبکه اجتماعی زیبایی",
|
||||
"استخدام مدل",
|
||||
],
|
||||
},
|
||||
academy: {
|
||||
title: "آموزشها و محل یادگیری فعالان زیبایی | مدستاگرام",
|
||||
description:
|
||||
"فقط محل همکاری نیست؛ مدستاگرام یک مسیر رشد و یادگیری برای فعالان زیبایی هم هست.",
|
||||
path: "/academy",
|
||||
keywords: [
|
||||
"آموزشگاه مدستاگرام",
|
||||
"آموزش میکاپ",
|
||||
"آموزش مدلینگ",
|
||||
"آموزش عکاسی",
|
||||
"پکیج آموزشی زیبایی",
|
||||
],
|
||||
},
|
||||
projects: {
|
||||
title: "پروژه ها و فرصتهای همکاری در دنیای زیبایی | مدستاگرام",
|
||||
description:
|
||||
"پروژههای فعال در حوزه زیبایی را ببینید، درخواست همکاری بدهید یا پروژه جدیدی برای مدلها، عکاسها و آرایشگرها منتشر کنید.",
|
||||
path: "/projects",
|
||||
keywords: [
|
||||
"پروژه مدلینگ",
|
||||
"پروژه زیبایی",
|
||||
"همکاری مدل",
|
||||
"درخواست همکاری",
|
||||
"پروژه عکاسی",
|
||||
],
|
||||
},
|
||||
billboards: {
|
||||
title: "بیلبورد مدستاگرام | تبلیغات هدفمند کسبوکارهای حوزه زیبایی",
|
||||
description:
|
||||
"بیلبورد مدستاگرام، فضای ویژه تبلیغات کسبوکارهای حوزه زیبایی، سالنهای آرایش، برندهای آرایشی و خدمات تخصصی برای دیدهشدن بیشتر و جذب مشتری.",
|
||||
path: "/billboards",
|
||||
keywords: [
|
||||
"بیلبورد مدستاگرام",
|
||||
"تبلیغات زیبایی",
|
||||
"تبلیغ سالن آرایش",
|
||||
"تبلیغات مد و زیبایی",
|
||||
],
|
||||
},
|
||||
explore: {
|
||||
title: "اکسپلور مدستاگرام | کشف پستها و محتوای حوزه زیبایی",
|
||||
description:
|
||||
"در اکسپلور مدستاگرام، جدیدترین پستها، ریلها و محتوای تخصصی حوزه مد، زیبایی، میکاپ و عکاسی را کشف کنید.",
|
||||
path: "/explore",
|
||||
keywords: ["اکسپلور", "پست زیبایی", "ریل مد", "محتوای مدلینگ"],
|
||||
},
|
||||
search: {
|
||||
title: "جستجو در مدستاگرام | پیدا کردن مدل، عکاس، آرایشگر و بیلبورد",
|
||||
description:
|
||||
"جستجوی تخصصی در مدستاگرام برای یافتن مدل، عکاس، آرایشگر، بیلبورد و کسبوکارهای حوزه زیبایی.",
|
||||
path: "/search",
|
||||
keywords: ["جستجوی مدل", "جستجوی آرایشگر", "جستجوی بیلبورد"],
|
||||
},
|
||||
about: {
|
||||
title: "درباره مدستاگرام | پلتفرم تخصصی حوزه زیبایی و مد",
|
||||
description:
|
||||
"درباره مدستاگرام، پلتفرم تخصصی شبکه اجتماعی و همکاری در حوزه زیبایی، مدلینگ، عکاسی و آرایشگری.",
|
||||
path: "/about-us",
|
||||
keywords: ["درباره مدستاگرام", "تماس مدستاگرام"],
|
||||
},
|
||||
} as const satisfies Record<string, PageSeoEntry>;
|
||||
const LEGACY_PAGE_KEYS = [
|
||||
"home",
|
||||
"academy",
|
||||
"projects",
|
||||
"billboards",
|
||||
"explore",
|
||||
"search",
|
||||
"about",
|
||||
] as const satisfies readonly SeoPageKey[];
|
||||
|
||||
export const siteKeywords = [
|
||||
"مدستاگرام",
|
||||
"مدل",
|
||||
"عکاس",
|
||||
"آرایشگر",
|
||||
"مدلینگ",
|
||||
"زیبایی",
|
||||
"میکاپ",
|
||||
"عکاسی",
|
||||
"پروژه مد",
|
||||
"بیلبورد زیبایی",
|
||||
"آموزش میکاپ",
|
||||
"شبکه اجتماعی زیبایی",
|
||||
"استخدام مدل",
|
||||
"همکاری مدلینگ",
|
||||
];
|
||||
const faSite = getSiteSeoMeta(DEFAULT_LANGUAGE);
|
||||
|
||||
/** @deprecated Use getSiteSeoMeta(lang).name */
|
||||
export const SITE_NAME = faSite.name;
|
||||
|
||||
/** @deprecated Use getSiteSeoMeta(lang).keywords */
|
||||
export const siteKeywords = faSite.keywords;
|
||||
|
||||
/** Persian-only legacy map — prefer getSeoPage(key, lang) for locale-aware SEO */
|
||||
export const pageSeo = Object.fromEntries(
|
||||
LEGACY_PAGE_KEYS.map((key) => {
|
||||
const page = getSeoPage(key, DEFAULT_LANGUAGE);
|
||||
return [
|
||||
key,
|
||||
{
|
||||
title: page.title,
|
||||
description: page.description,
|
||||
path: page.path,
|
||||
keywords: page.keywords,
|
||||
} satisfies PageSeoEntry,
|
||||
];
|
||||
})
|
||||
) as Record<(typeof LEGACY_PAGE_KEYS)[number], PageSeoEntry>;
|
||||
|
||||
export type { PageSeoEntry };
|
||||
|
||||
6
src/config/pageSeo.types.ts
Normal file
6
src/config/pageSeo.types.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
export type PageSeoEntry = {
|
||||
title: string;
|
||||
description: string;
|
||||
path: string;
|
||||
keywords?: string[];
|
||||
};
|
||||
@@ -1,5 +1,9 @@
|
||||
import { NextSeoProps } from "next-seo";
|
||||
import { pageSeo, SITE_URL } from "@/config/pageSeo";
|
||||
import { getSiteSeoMeta } from "@/lib/i18n/seo";
|
||||
import { DEFAULT_LANGUAGE } from "@/lib/i18n/registry";
|
||||
|
||||
const defaultSite = getSiteSeoMeta(DEFAULT_LANGUAGE);
|
||||
|
||||
export const defaultSEOConfig: NextSeoProps = {
|
||||
title: pageSeo.home.title,
|
||||
@@ -9,7 +13,7 @@ export const defaultSEOConfig: NextSeoProps = {
|
||||
type: "website",
|
||||
locale: "fa_IR",
|
||||
url: SITE_URL,
|
||||
site_name: "مدستاگرام",
|
||||
site_name: defaultSite.name,
|
||||
title: pageSeo.home.title,
|
||||
description: pageSeo.home.description,
|
||||
images: [
|
||||
@@ -17,7 +21,7 @@ export const defaultSEOConfig: NextSeoProps = {
|
||||
url: `${SITE_URL}/images/icons/256x256.png`,
|
||||
width: 1200,
|
||||
height: 630,
|
||||
alt: "مدستاگرام",
|
||||
alt: defaultSite.name,
|
||||
},
|
||||
],
|
||||
},
|
||||
@@ -63,7 +67,7 @@ export const defaultSEOConfig: NextSeoProps = {
|
||||
},
|
||||
{
|
||||
rel: "manifest",
|
||||
href: "/manifest.json",
|
||||
href: "/manifest.webmanifest",
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
1
src/config/site.ts
Normal file
1
src/config/site.ts
Normal file
@@ -0,0 +1 @@
|
||||
export const SITE_URL = "https://modstagram.com";
|
||||
Reference in New Issue
Block a user