Extract admin dashboard from ghabilee-frontend2 into a dedicated Next.js app for backoffice.ghabilee.ir (no SEO indexing / Clarity).
106 lines
4.1 KiB
TypeScript
106 lines
4.1 KiB
TypeScript
import type { Metadata } from 'next'
|
|
|
|
import { ORGANIZATION_ID, WEBSITE_ID } from '@/lib/seo/JsonLd'
|
|
import { buildCanonicalUrl, SITE_URL } from '@/lib/seo/metadata'
|
|
import { buildPublicPageMetadata } from '@/lib/seo/publicPageMetadata'
|
|
|
|
export const HOST_GUIDE_UPDATED_AT_ISO = '2026-08-30'
|
|
export const HOST_GUIDE_UPDATED_AT_FA = '۸ شهریور ۱۴۰۵'
|
|
|
|
export const HOST_GUIDE_SEO = {
|
|
path: '/host-guide' as const,
|
|
h1: 'راهنمای میزبانی در قبیله',
|
|
breadcrumbName: 'راهنمای میزبانی',
|
|
metaTitle: 'راهنمای میزبانی قبیله | طراحی و اجرای رویداد',
|
|
metaDescription:
|
|
'چکلیست میزبانی رویداد در قبیله: موضوع و مخاطب، زمان و مکان، قیمتگذاری، لغو، ارتباط با مهمانها و روز اجرا را قدمبهقدم ببین.',
|
|
pageId: `${SITE_URL}/host-guide#webpage`,
|
|
}
|
|
|
|
export const HOST_GUIDE_STEPS = [
|
|
{
|
|
id: 'topic',
|
|
name: 'موضوع و مخاطب را روشن کن',
|
|
text: 'در یک جمله بگو مهمان چه تجربهای میگیرد. سطح، پیشنیاز، محدودیت سنی و وسایل لازم را شفاف بنویس و ظرفیت را متناسب با کیفیت تعامل انتخاب کن.',
|
|
},
|
|
{
|
|
id: 'time-place',
|
|
name: 'زمان و مکان را واقعی بچین',
|
|
text: 'زمان ورود و پایان را واقعی بگذار. شهر و محدوده مکان را شفاف کن و ایمنی، دسترسی و امکانات ضروری را قبل از انتشار چک کن.',
|
|
},
|
|
{
|
|
id: 'pricing',
|
|
name: 'قیمت و قواعد لغو را شفاف بگو',
|
|
text: 'هزینه مکان، مواد، زمان و کارمزد را حساب کن. آنچه داخل قیمت است بنویس و قوانین لغو همان رویداد را شفاف تنظیم کن تا مهمان قبل از خرید در صفحه رویداد بداند چه خبر است.',
|
|
},
|
|
{
|
|
id: 'guests',
|
|
name: 'با مهمانها در ارتباط بمون',
|
|
text: 'سؤالها را سریع جواب بده، تغییر ضروری را بهموقع بگو و از اطلاعات مهمان فقط برای همان رویداد استفاده کن.',
|
|
},
|
|
{
|
|
id: 'day-of',
|
|
name: 'روز اجرا و بعد از آن',
|
|
text: 'کمی زودتر برس، فهرست مهمانها را آماده داشته باش، برای مشکلهای رایج راه دوم داشته باش و بعد از رویداد بازخوردها را بخوان.',
|
|
},
|
|
] as const
|
|
|
|
export function buildHostGuideMetadata(): Metadata {
|
|
const page = HOST_GUIDE_SEO
|
|
const pageMetadata = buildPublicPageMetadata({
|
|
path: page.path,
|
|
metaTitle: page.metaTitle,
|
|
metaDescription: page.metaDescription,
|
|
})
|
|
|
|
return {
|
|
...pageMetadata,
|
|
title: { absolute: page.metaTitle },
|
|
openGraph: { ...pageMetadata.openGraph, title: page.metaTitle },
|
|
twitter: { ...pageMetadata.twitter, title: page.metaTitle },
|
|
robots: { index: true, follow: true },
|
|
}
|
|
}
|
|
|
|
export function hostGuideWebPageSchema() {
|
|
const page = HOST_GUIDE_SEO
|
|
const url = buildCanonicalUrl(page.path)
|
|
|
|
return {
|
|
'@context': 'https://schema.org',
|
|
'@type': 'WebPage',
|
|
'@id': page.pageId,
|
|
name: page.metaTitle,
|
|
headline: page.h1,
|
|
description: page.metaDescription,
|
|
url,
|
|
inLanguage: 'fa-IR',
|
|
isPartOf: { '@id': WEBSITE_ID },
|
|
publisher: { '@id': ORGANIZATION_ID },
|
|
datePublished: HOST_GUIDE_UPDATED_AT_ISO,
|
|
dateModified: HOST_GUIDE_UPDATED_AT_ISO,
|
|
}
|
|
}
|
|
|
|
/** HowTo helps search/AI systems extract the hosting checklist as ordered steps. */
|
|
export function hostGuideHowToSchema() {
|
|
const page = HOST_GUIDE_SEO
|
|
const url = buildCanonicalUrl(page.path)
|
|
|
|
return {
|
|
'@context': 'https://schema.org',
|
|
'@type': 'HowTo',
|
|
name: page.h1,
|
|
description: page.metaDescription,
|
|
inLanguage: 'fa-IR',
|
|
url,
|
|
step: HOST_GUIDE_STEPS.map((step, index) => ({
|
|
'@type': 'HowToStep',
|
|
position: index + 1,
|
|
name: step.name,
|
|
text: step.text,
|
|
url: `${url}#${step.id}`,
|
|
})),
|
|
}
|
|
}
|