Rocky_Mountain_Vending/app/manuals/page.tsx

182 lines
8.1 KiB
TypeScript

import { Metadata } from 'next'
import { businessConfig } from '@/lib/seo-config'
import { ManualsPageShell } from '@/components/manuals-page-shell'
import { listConvexManuals } from '@/lib/convex-service'
import {
scanManuals,
groupManuals,
getManufacturers,
getCategories,
filterMDBManuals,
filterManualsBySite,
filterManufacturersByMinCount,
} from '@/lib/manuals'
import {
getSiteDomain,
getAllowedManufacturers,
getMinManualCount,
getManufacturerAliases,
shouldIncludePaymentComponents,
} from '@/lib/site-config'
import { generateStructuredData } from '@/lib/seo'
export const metadata: Metadata = {
title: 'Vending Machine Manuals | Download PDF Guides | Rocky Mountain Vending',
description:
'Download free PDF manuals, service guides, and parts documentation for hundreds of vending machine models from Royal Vendors, Dixie-Narco, Vendo, Crane, BevMax, Merchant Series, AP, GPL, Seaga, USI, and more. Find service manuals, parts catalogs, installation instructions, troubleshooting guides, and maintenance documentation for snack, beverage, combo, coffee, and food vending machines. Many manuals include available replacement parts with purchase links.',
keywords: [
'vending machine manuals',
'vending machine PDF',
'vending machine service manual',
'vending machine parts catalog',
'vending machine repair manual',
'vending machine installation guide',
'vending machine troubleshooting guide',
'Royal Vendors manual',
'Dixie-Narco manual',
'Vendo manual',
'Crane vending manual',
'BevMax manual',
'Merchant Series manual',
'AP vending manual',
'GPL vending manual',
'Seaga vending manual',
'USI vending manual',
'snack machine manual',
'beverage machine manual',
'combo vending machine manual',
'coffee vending machine manual',
'food vending machine manual',
'frozen food vending manual',
'vending machine parts',
'vending machine replacement parts',
'vending machine wiring diagram',
'vending machine maintenance',
],
openGraph: {
title: 'Vending Machine Manuals | Download PDF Guides | Rocky Mountain Vending',
description:
'Download free PDF manuals, service guides, and parts documentation for hundreds of vending machine models from leading manufacturers. Find service manuals, parts catalogs, installation instructions, troubleshooting guides, and maintenance documentation for snack, beverage, combo, coffee, and food vending machines.',
type: 'website',
url: `${businessConfig.website}/manuals`,
images: [
{
url: `${businessConfig.website}/images/rocky-mountain-vending-service-area-926x1024.webp`,
width: 926,
height: 1024,
alt: 'Rocky Mountain Vending Manuals',
},
],
},
twitter: {
card: 'summary_large_image',
title: 'Vending Machine Manuals | Download PDF Guides',
description:
'Download free PDF manuals, service guides, and parts documentation for hundreds of vending machine models from Royal Vendors, Dixie-Narco, Vendo, Crane, BevMax, and more. Find service manuals, parts catalogs, installation instructions, and troubleshooting guides.',
},
alternates: {
canonical: `${businessConfig.website}/manuals`,
},
}
export default async function ManualsPage() {
// Get site configuration
const siteDomain = getSiteDomain()
const allowedManufacturers = getAllowedManufacturers(siteDomain)
const minManualCount = getMinManualCount(siteDomain)
const manufacturerAliases = getManufacturerAliases()
const includePaymentComponents = shouldIncludePaymentComponents(siteDomain)
// Prefer Convex-backed metadata, but keep filesystem fallback in place until the shared catalog is fully populated.
const convexManuals = await listConvexManuals()
const allManuals = convexManuals.length > 0 ? convexManuals : await scanManuals()
// Filtering chain:
// 1. Filter by MDB (existing)
let manuals = filterMDBManuals(allManuals)
// 2. Filter by site tier/allowed manufacturers (new)
manuals = filterManualsBySite(
manuals,
allowedManufacturers,
manufacturerAliases,
includePaymentComponents
)
// 3. Filter by minimum manual count per manufacturer (new)
manuals = filterManufacturersByMinCount(manuals, minManualCount)
// 4. Group and get unique lists
const groupedManuals = groupManuals(manuals)
const manufacturers = getManufacturers(manuals)
const categories = getCategories(manuals)
// Generate structured data for SEO
const structuredData = generateStructuredData({
title: 'Vending Machine Manuals',
description:
'Download free PDF manuals, service guides, and parts documentation for hundreds of vending machine models from Royal Vendors, Dixie-Narco, Vendo, Crane, BevMax, Merchant Series, AP, GPL, Seaga, USI, and more. Find service manuals, parts catalogs, installation instructions, troubleshooting guides, and maintenance documentation for snack, beverage, combo, coffee, and food vending machines. Many manuals include available replacement parts with purchase links.',
url: `${businessConfig.website}/manuals`,
type: 'WebPage',
})
// Add CollectionPage schema for better SEO
const collectionSchema = {
'@context': 'https://schema.org',
'@type': 'CollectionPage',
name: 'Vending Machine Manuals',
description:
'A comprehensive collection of vending machine manuals, service guides, and parts documentation from leading manufacturers including Royal Vendors, Dixie-Narco, Vendo, Crane Merchandising, BevMax, Merchant Series, AP, GPL, Seaga, USI, and more. Includes service manuals, parts catalogs, installation instructions, troubleshooting guides, wiring diagrams, and maintenance documentation for snack machines, beverage machines, combo vending machines, coffee machines, food machines, and frozen food machines. Many manuals feature available replacement parts with direct purchase links.',
url: `${businessConfig.website}/manuals`,
mainEntity: {
'@type': 'ItemList',
numberOfItems: manuals.length,
itemListElement: manuals.slice(0, 50).map((manual, index) => ({
'@type': 'ListItem',
position: index + 1,
item: {
'@type': 'DigitalDocument',
name: manual.filename.replace(/\.pdf$/i, ''),
description: `${manual.manufacturer} ${manual.category} Manual`,
encodingFormat: 'application/pdf',
},
})),
},
}
return (
<>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(structuredData) }}
/>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(collectionSchema) }}
/>
<div className="container mx-auto px-4 py-8 md:py-12">
<header className="mb-8 md:mb-12">
<h1 className="text-4xl md:text-5xl font-bold tracking-tight text-balance mb-4">
Vending Machine Manuals
</h1>
<p className="text-lg text-muted-foreground max-w-3xl text-pretty leading-relaxed">
Download free PDF manuals, service guides, and parts documentation for hundreds of vending machine models from leading manufacturers including Royal Vendors, Dixie-Narco, Vendo, Crane Merchandising, BevMax, Merchant Series, AP, GPL, Seaga, USI, and more. Find comprehensive service manuals, parts catalogs, installation instructions, troubleshooting guides, wiring diagrams, and maintenance documentation for snack machines, beverage machines, combo vending machines, coffee machines, food machines, and frozen food machines. All manuals are organized by manufacturer and machine type, with many featuring available replacement parts with direct purchase links.
</p>
<div className="mt-4 text-sm text-muted-foreground">
<p>
<strong>{manuals.length}</strong> manuals available from{' '}
<strong>{manufacturers.length}</strong> manufacturers
</p>
</div>
</header>
<ManualsPageShell
manuals={manuals}
groupedManuals={groupedManuals}
manufacturers={manufacturers}
categories={categories}
/>
</div>
</>
)
}