Rocky_Mountain_Vending/lib/seo-config.ts

122 lines
4.6 KiB
TypeScript

export const PRODUCTION_WEBSITE = "https://rockymountainvending.com"
export const PRODUCTION_HOST = "rockymountainvending.com"
const configuredWebsite = PRODUCTION_WEBSITE.replace(/\/+$/, "")
/**
* Centralized SEO and Business Information Configuration
* Used for NAP consistency, structured data, and SEO metadata
*/
const DEFAULT_PUBLIC_CALL_PHONE = "(435) 233-9668"
const DEFAULT_PUBLIC_CALL_PHONE_FORMATTED = "+14352339668"
const DEFAULT_PUBLIC_SMS_PHONE = DEFAULT_PUBLIC_CALL_PHONE
const DEFAULT_PUBLIC_SMS_PHONE_FORMATTED = DEFAULT_PUBLIC_CALL_PHONE_FORMATTED
const publicCallNumber =
process.env.NEXT_PUBLIC_CALL_PHONE_DISPLAY || DEFAULT_PUBLIC_CALL_PHONE
const publicCallFormatted =
process.env.NEXT_PUBLIC_CALL_PHONE_E164 || DEFAULT_PUBLIC_CALL_PHONE_FORMATTED
const publicSmsNumber =
process.env.NEXT_PUBLIC_SMS_PHONE_DISPLAY || DEFAULT_PUBLIC_SMS_PHONE
const publicSmsFormatted =
process.env.NEXT_PUBLIC_SMS_PHONE_E164 || DEFAULT_PUBLIC_SMS_PHONE_FORMATTED
export const businessConfig = {
name: "Rocky Mountain Vending",
legalName: "Rocky Mountain Vending LLC",
shortName: "RockyMountainVending",
phone: publicCallNumber,
phoneFormatted: publicCallFormatted,
phoneUrl: `tel:${publicCallFormatted}`,
smsUrl: `sms:${publicSmsFormatted}`,
publicCallNumber,
publicCallFormatted,
publicCallUrl: `tel:${publicCallFormatted}`,
publicSmsNumber,
publicSmsFormatted,
publicSmsUrl: `sms:${publicSmsFormatted}`,
email: "info@rockymountainvending.com",
website: configuredWebsite,
description:
"Rocky Mountain Vending provides free vending machine placement for qualifying Utah businesses, machine sales, repairs, and ongoing service across Salt Lake, Davis, and Utah counties.",
category: "Vending machine supplier",
openingDate: "2019-11-01",
// Service-only business (no physical address)
hasPhysicalLocation: false,
serviceType: "Service",
} as const
export function normalizeHost(host: string | null | undefined): string {
if (!host) {
return ""
}
return host.toLowerCase().replace(/:\d+$/, "")
}
export function isProductionHost(host: string | null | undefined): boolean {
const normalized = normalizeHost(host)
return normalized === PRODUCTION_HOST || normalized === `www.${PRODUCTION_HOST}`
}
export const serviceAreas = [
{ city: "Ogden", state: "UT", country: "USA" },
{ city: "Provo", state: "UT", country: "USA" },
{ city: "Sandy", state: "UT", country: "USA" },
{ city: "Draper", state: "UT", country: "USA" },
{ city: "Layton", state: "UT", country: "USA" },
{ city: "Murray", state: "UT", country: "USA" },
{ city: "Clinton", state: "UT", country: "USA" },
{ city: "Midvale", state: "UT", country: "USA" },
{ city: "Herriman", state: "UT", country: "USA" },
{ city: "Holladay", state: "UT", country: "USA" },
{ city: "Riverton", state: "UT", country: "USA" },
{ city: "Syracuse", state: "UT", country: "USA" },
{ city: "Millcreek", state: "UT", country: "USA" },
{ city: "Clearfield", state: "UT", country: "USA" },
{ city: "West Jordan", state: "UT", country: "USA" },
{ city: "South Jordan", state: "UT", country: "USA" },
{ city: "Salt Lake City", state: "UT", country: "USA" },
{ city: "South Salt Lake", state: "UT", country: "USA" },
{ city: "West Valley City", state: "UT", country: "USA" },
{ city: "Cottonwood Heights", state: "UT", country: "USA" },
] as const
export const businessHours = {
monday: { open: "08:00", close: "17:00", closed: false },
tuesday: { open: "08:00", close: "17:00", closed: false },
wednesday: { open: "08:00", close: "17:00", closed: false },
thursday: { open: "08:00", close: "17:00", closed: false },
friday: { open: "08:00", close: "17:00", closed: false },
saturday: { open: null, close: null, closed: true },
sunday: { open: null, close: null, closed: true },
} as const
export const socialProfiles = {
linkedin: "https://www.linkedin.com/company/rocky-mountain-vending-llc",
facebook: "https://www.facebook.com/RealRockyMountainVending",
youtube: "https://www.youtube.com/channel/UCiaAxaeGBEezZd6BXNIKuYQ",
twitter: "https://x.com/RMVVending/",
} as const
/**
* Get service area as formatted string (e.g., "Ogden, UT, USA")
*/
export function formatServiceArea(area: (typeof serviceAreas)[number]): string {
return `${area.city}, ${area.state}, ${area.country}`
}
/**
* Get all service areas as formatted strings
*/
export function getAllServiceAreasFormatted(): string[] {
return serviceAreas.map(formatServiceArea)
}
/**
* Get service area cities only
*/
export function getServiceAreaCities(): string[] {
return serviceAreas.map((area) => area.city)
}