Files
computer-repair/src/lib/site.js
T
asownerytandClaude Opus 5.5 9f5cf387dc Phase 4: pricing, about, area, Windows 10 and business pages
- /pricing: full price list, no-fix-no-fee terms, travel and payments
- /about: first-person page from confirmed facts, links to area pages
- /areas/[suburb]: Te Atatū Peninsula, Te Atatū South, Henderson and
  Massey, generated from src/lib/areas.js with suburb-specific copy
- /windows-10: options page with free Windows 11 check; October 2028
  used for business Extended Security Updates
- /business: $65/month plan (2 hours, no lock-in, no rollover)
- Nav gains Pricing/About and Business/Windows 10 links; footer rebuilt
  with address, hours and links; homepage links areas, /business and
  a Windows 10 banner; sitemap includes all new routes
- Mobile menu hides by its own height (fixes overflow with more links);
  hamburger now used below 900px so the link row never overlaps

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-30 20:47:06 +13:00

234 lines
6.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Single source of truth for business facts (from the owner inputs in PLAN.md).
// Update values here rather than hard-coding them in pages.
export const SITE_URL = "https://teatatucomputers.com";
export const business = {
name: "Te Atatu Computers",
ownerName: "John",
phone: "021 107 7483",
phoneE164: "+64211077483",
email: "[email protected]",
address: {
street: "34 Graham Avenue",
suburb: "Te Atatū Peninsula",
city: "Auckland",
postcode: "0610",
country: "NZ",
},
hours: "Mon–Fri 9am–6pm. Weekends by appointment.",
serviceArea: [
"Te Atatū Peninsula",
"Te Atatū South",
"Henderson",
"Massey",
"Lincoln",
"Glendene",
"Westgate",
"Auckland CBD",
],
paymentMethods: [
"Cash",
"NZ bank transfer",
"Contactless Visa, Mastercard and American Express",
"Apple Pay, Google Pay and Samsung Pay",
"Bitcoin",
],
prices: {
diagnostic: "$35",
hourly: "$35",
},
rating: { value: "4.8", count: 4 },
testimonials: [
{
name: "Irwin",
quote:
"John is a super star! He fixed my laptop for a reasonable price. I highly recommend him!",
},
{
name: "Marlies",
quote:
"Very happy with the service provided. Very prompt response to my online query and further questions. John knew what he was doing, was professional and helpful. Thank you!",
},
],
googleBusinessProfileUrl: "https://share.google/APzXLRzyrqAUldl4Y",
googleReviewUrl: "https://g.page/r/CYkJobPXq4IpEAE/review",
facebookUrl: "https://www.facebook.com/profile.php?id=61571509018351",
};
export const BUSINESS_ID = `${SITE_URL}/#business`;
export const links = {
tel: `tel:${business.phoneE164}`,
sms: `sms:${business.phoneE164}`,
whatsapp: `https://wa.me/${business.phoneE164.slice(1)}`,
email: `mailto:${business.email}`,
};
// Every public route. Used by the sitemap; add new pages here.
export const routes = [
{ path: "/", priority: 1 },
{ path: "/services/computer-repair", priority: 0.8 },
{ path: "/services/computer-upgrades", priority: 0.8 },
{ path: "/services/virus-removal", priority: 0.8 },
{ path: "/services/it-support", priority: 0.8 },
{ path: "/pricing", priority: 0.8 },
{ path: "/business", priority: 0.7 },
{ path: "/windows-10", priority: 0.7 },
{ path: "/about", priority: 0.6 },
{ path: "/contact", priority: 0.6 },
];
// Full price list, shown on /pricing. Labour prices; parts are extra.
export const priceList = [
{
group: "Repairs",
items: [
{ item: "Diagnosis", price: "$35" },
{ item: "Laptop screen replacement", price: "from $35 + the screen" },
{ item: "Battery, charging port or keyboard", price: "from $35 + parts" },
{ item: "Other repairs (labour)", price: "$35 an hour" },
],
},
{
group: "Upgrades & Windows",
items: [
{ item: "SSD upgrade", price: "from $45 + the drive" },
{ item: "Windows reinstall", price: "from $45" },
{ item: "Windows 11 compatibility check", price: "Free" },
{ item: "RAM, graphics card and Windows 11 upgrades", price: "from $35 + parts" },
{ item: "Custom PC build (labour)", price: "from $35" },
],
},
{
group: "Viruses, data & support",
items: [
{ item: "Virus and malware removal", price: "from $35" },
{ item: "Moving files to a new computer", price: "from $45" },
{ item: "New computer setup", price: "from $35" },
{ item: "Remote support", price: "$35 an hour" },
{ item: "Onsite support", price: "$35 an hour + travel" },
{ item: "Small business IT plan", price: "$65 a month" },
],
},
];
export const businessPlan = {
price: "$65",
hours: 2,
includes: [
"2 hours of remote or onsite support every month",
"Extra time at the normal $35 an hour",
"No lock-in contract. Cancel any time.",
],
terms:
"Unused hours don't roll over to the next month. Onsite visits have a travel fee based on distance.",
};
// Builds per-page metadata: title, description, canonical, Open Graph and Twitter.
export function pageMetadata({ title, description, path }) {
return {
title,
description,
alternates: { canonical: path },
openGraph: {
title,
description,
url: path,
siteName: business.name,
locale: "en_NZ",
type: "website",
images: [
{
url: "/og-image.png",
width: 1200,
height: 630,
alt: business.name,
},
],
},
twitter: {
card: "summary_large_image",
title,
description,
images: ["/og-image.png"],
},
};
}
export function localBusinessSchema() {
const { address } = business;
return {
"@context": "https://schema.org",
"@type": "ComputerRepairService",
"@id": BUSINESS_ID,
name: business.name,
url: `${SITE_URL}/`,
telephone: business.phoneE164,
email: business.email,
logo: `${SITE_URL}/logo.png`,
image: `${SITE_URL}/og-image.png`,
address: {
"@type": "PostalAddress",
streetAddress: address.street,
addressLocality: address.suburb,
addressRegion: address.city,
postalCode: address.postcode,
addressCountry: address.country,
},
areaServed: business.serviceArea.map((name) => ({
"@type": "Place",
name: `${name}, Auckland`,
})),
openingHoursSpecification: [
{
"@type": "OpeningHoursSpecification",
dayOfWeek: ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
opens: "09:00",
closes: "18:00",
},
],
priceRange: "$",
currenciesAccepted: "NZD",
paymentAccepted: business.paymentMethods.join(", "),
hasMap: business.googleBusinessProfileUrl,
sameAs: [business.googleBusinessProfileUrl, business.facebookUrl],
};
}
export function serviceSchema({
name,
description,
path,
areas = business.serviceArea,
}) {
return {
"@context": "https://schema.org",
"@type": "Service",
name,
serviceType: name,
description,
url: `${SITE_URL}${path}`,
provider: { "@id": BUSINESS_ID },
areaServed: areas.map((area) => ({
"@type": "Place",
name: `${area}, Auckland`,
})),
};
}
export function faqSchema(faqs) {
return {
"@context": "https://schema.org",
"@type": "FAQPage",
mainEntity: faqs.map(({ question, answer, list }) => ({
"@type": "Question",
name: question,
acceptedAnswer: {
"@type": "Answer",
text: list ? `${answer} ${list.join("; ")}.` : answer,
},
})),
};
}