first commit

This commit is contained in:
2026-01-17 14:17:42 +05:30
commit 0f194eb9e7
328 changed files with 73544 additions and 0 deletions

185
lib/structured-data.ts Normal file
View File

@@ -0,0 +1,185 @@
import { Product } from '@/types'
import {
Product as SchemaProduct,
WithContext,
Organization,
ContactPoint,
PostalAddress,
BreadcrumbList,
FAQPage,
LocalBusiness,
ItemList
} from 'schema-dts'
export function generateProductJsonLd(product: Product, baseUrl: string = ''): WithContext<SchemaProduct> {
const currentPrice = product.discount
? product.price - (product.price * product.discount / 100)
: product.price
const productJsonLd: WithContext<SchemaProduct> = {
"@context": "https://schema.org",
"@type": "Product",
"@id": `${baseUrl}/products/${product.slug || product.id}`,
"name": product.name,
"description": product.description || `Premium quality ${product.category.name} rice from Padmaaja Rasooi`,
"image": product.images.map(img => `${baseUrl}${img}`),
"brand": {
"@type": "Brand",
"name": product.brand || "Padmaaja Rasooi"
},
"category": product.category.name,
"sku": product.sku || product.id,
"offers": {
"@type": "Offer",
"url": `${baseUrl}/products/${product.id}`,
"priceCurrency": "INR",
"price": currentPrice.toFixed(2),
"priceValidUntil": new Date(Date.now() + 30 * 24 * 60 * 60 * 1000).toISOString().split('T')[0],
"availability": product.stock && product.stock > 0
? "https://schema.org/InStock"
: "https://schema.org/OutOfStock",
"seller": {
"@type": "Organization",
"name": "Padmaaja Rasooi",
"url": baseUrl
},
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"bestRating": "5",
"worstRating": "1",
"ratingCount": "125"
}
}
return productJsonLd
}
export function generateProductListJsonLd(products: Product[], baseUrl: string = ''): WithContext<ItemList> {
return {
"@context": "https://schema.org",
"@type": "ItemList",
"name": "Padmaaja Rasooi Premium Rice Products",
"description": "Complete collection of premium quality rice products",
"numberOfItems": products.length,
"itemListElement": products.map((product, index) => ({
"@type": "ListItem",
"position": index + 1,
"item": {
"@type": "Product",
"@id": `${baseUrl}/products/${product.slug || product.id}`,
"name": product.name,
"image": product.images[0] ? `${baseUrl}${product.images[0]}` : '',
"offers": {
"@type": "Offer",
"priceCurrency": "INR",
"price": (product.discount
? product.price - (product.price * product.discount / 100)
: product.price).toFixed(2)
}
}
}))
}
}
export function generateOrganizationJsonLd(baseUrl: string = ''): WithContext<Organization> {
return {
"@context": "https://schema.org",
"@type": "Organization",
"name": "Padmaaja Rasooi",
"url": baseUrl,
"logo": `${baseUrl}/images/logo.png`,
"description": "Premium rice products and quality grains offering the finest quality rice sourced directly from certified farms.",
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+91-9876543210",
"email": "contact@padmaajarasooi.com",
"contactType": "Customer Service"
},
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Rice Market Street",
"addressLocality": "Hyderabad",
"addressRegion": "Telangana",
"postalCode": "500001",
"addressCountry": "IN"
},
"sameAs": [
"https://www.facebook.com/padmaajarasooi",
"https://www.instagram.com/padmaajarasooi",
"https://www.linkedin.com/company/padmaajarasooi"
],
"foundingDate": "2020"
}
}
export function generateBreadcrumbJsonLd(breadcrumbs: Array<{ name: string, url: string }>, baseUrl: string = ''): WithContext<BreadcrumbList> {
return {
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": breadcrumbs.map((crumb, index) => ({
"@type": "ListItem",
"position": index + 1,
"name": crumb.name,
"item": `${baseUrl}${crumb.url}`
}))
}
}
export function generateFAQJsonLd(faqs: Array<{ question: string, answer: string }>): WithContext<FAQPage> {
return {
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": faqs.map(faq => ({
"@type": "Question",
"name": faq.question,
"acceptedAnswer": {
"@type": "Answer",
"text": faq.answer
}
}))
}
}
export function generateLocalBusinessJsonLd(baseUrl: string = ''): WithContext<LocalBusiness> {
return {
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Padmaaja Rasooi",
"image": `${baseUrl}/images/business-photo.jpg`,
"description": "Premium rice products and quality grains",
"url": baseUrl,
"telephone": "+91-9876543210",
"email": "contact@padmaajarasooi.com",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Rice Market Street",
"addressLocality": "Hyderabad",
"addressRegion": "Telangana",
"postalCode": "500001",
"addressCountry": "IN"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": "17.3850",
"longitude": "78.4867"
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday"
],
"opens": "09:00",
"closes": "18:00"
}
],
"priceRange": "₹₹"
}
}