From 9f5cf387dcf7ec95df85d4e203467b28b01c41b2 Mon Sep 17 00:00:00 2001 From: asowneryt Date: Wed, 30 Sep 2026 20:47:06 +1300 Subject: [PATCH] Phase 4: pricing, about, area, Windows 10 and business pages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - /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 --- src/app/about/page.js | 86 +++++++++++++++ src/app/areas/[suburb]/page.js | 131 ++++++++++++++++++++++ src/app/business/page.js | 159 +++++++++++++++++++++++++++ src/app/components/Footer.js | 125 ++++++++++++++------- src/app/components/Navbar.js | 36 ++++++ src/app/components/Navbar.module.css | 14 ++- src/app/page.js | 41 +++++-- src/app/pricing/page.js | 86 +++++++++++++++ src/app/sitemap.js | 7 +- src/app/windows-10/page.js | 110 ++++++++++++++++++ src/lib/areas.js | 61 ++++++++++ src/lib/services.js | 4 - src/lib/site.js | 59 +++++++++- 13 files changed, 862 insertions(+), 57 deletions(-) create mode 100644 src/app/about/page.js create mode 100644 src/app/areas/[suburb]/page.js create mode 100644 src/app/business/page.js create mode 100644 src/app/pricing/page.js create mode 100644 src/app/windows-10/page.js create mode 100644 src/lib/areas.js diff --git a/src/app/about/page.js b/src/app/about/page.js new file mode 100644 index 0000000..bc570f9 --- /dev/null +++ b/src/app/about/page.js @@ -0,0 +1,86 @@ +import Link from "next/link"; +import HeaderSm from "../components/HeaderSm"; +import CtaBand from "../components/CtaBand"; +import { business, pageMetadata } from "@/lib/site"; +import { areas } from "@/lib/areas"; + +export const metadata = pageMetadata({ + title: "About John | Te Atatu Computers", + description: + "Te Atatu Computers is John, a local computer repairer on Te Atatū Peninsula. One person, straight answers and a price before any work starts.", + path: "/about", +}); + +const areaSlugs = Object.fromEntries(areas.map(({ name, slug }) => [name, slug])); + +export default function AboutPage() { + return ( +
+ + +
+

+ Te Atatu Computers is me, {business.ownerName}. I fix laptops and + PCs, upgrade slow computers, remove viruses and help homes and small + businesses with their IT, from my base on Te Atatū Peninsula. +

+

+ Because it's just me, the person you call or text is the person + who fixes your computer. There's no front desk and no call + centre, and you won't have to explain the problem twice. +

+

+ I keep things simple: a $35 diagnosis, a clear price before I start, + and if I can't fix it, you don't pay the diagnosis fee. +

+
+ +
+

How I work

+
    +
  • + Drop-off at {business.address.street},{" "} + {business.address.suburb}, by appointment. +
  • +
  • + Onsite visits and pickup across my service area, + with a travel fee based on distance. +
  • +
  • + Remote support for software problems. +
  • +
  • + Hours: Monday to Friday, 9am to 6pm. Weekends by + appointment. +
  • +
  • + I work on Windows laptops and PCs, Chromebooks and custom-built + computers. I don't repair Apple devices. +
  • +
+
+ +
+

Where I work

+
    + {business.serviceArea.map((name) => ( +
  • + {areaSlugs[name] ? ( + + {name} + + ) : ( + name + )} +
  • + ))} +
+
+ + +
+ ); +} diff --git a/src/app/areas/[suburb]/page.js b/src/app/areas/[suburb]/page.js new file mode 100644 index 0000000..c9f341a --- /dev/null +++ b/src/app/areas/[suburb]/page.js @@ -0,0 +1,131 @@ +import Link from "next/link"; +import { notFound } from "next/navigation"; +import { ArrowRight, MessageSquare, Phone } from "lucide-react"; +import HeaderSm from "../../components/HeaderSm"; +import Button from "../../components/Button"; +import CtaBand from "../../components/CtaBand"; +import FaqList from "../../components/FaqList"; +import JsonLd from "../../components/JsonLd"; +import { areas, getArea } from "@/lib/areas"; +import { services } from "@/lib/services"; +import { business, links, pageMetadata, serviceSchema } from "@/lib/site"; + +export const dynamicParams = false; + +export function generateStaticParams() { + return areas.map(({ slug }) => ({ suburb: slug })); +} + +export async function generateMetadata({ params }) { + const area = getArea((await params).suburb); + return pageMetadata({ + title: `Computer Repair ${area.name} | Te Atatu Computers`, + description: `Laptop & PC repairs, upgrades, virus removal and IT support in ${area.name}. $35 diagnosis, no fix no fee. Call or text ${business.phone}.`, + path: `/areas/${area.slug}`, + }); +} + +export default async function AreaPage({ params }) { + const area = getArea((await params).suburb); + if (!area) notFound(); + + const faqs = [ + area.faq, + { + question: "How much will it cost?", + answer: + "A diagnosis is $35, and if I can't fix it you don't pay it. Labour is $35 an hour and parts are extra. I'll tell you the cost before I start.", + }, + ]; + + return ( +
+ + + +
+

{area.intro}

+
+ + +
+
+ +
+

+ Getting your computer to me +

+

{area.gettingThere}

+

+ I work Monday to Friday, 9am to 6pm, and weekends by appointment. + Most repairs are done within 24–48 hours, although this isn't + guaranteed. +

+
+ +
+

+ What I can help with in {area.name} +

+
    + {Object.entries(services).map(([slug, service]) => ( +
  • + + {service.name} +
  • + ))} +
+

+ See all prices on the{" "} + + pricing page + + . I don't repair Apple devices. +

+
+ +
+

Questions

+ +
+ + + +
+

Other areas I serve

+
    + {areas + .filter(({ slug }) => slug !== area.slug) + .map(({ slug, name }) => ( +
  • + + {name} + +
  • + ))} +
+
+
+ ); +} diff --git a/src/app/business/page.js b/src/app/business/page.js new file mode 100644 index 0000000..eaae0f6 --- /dev/null +++ b/src/app/business/page.js @@ -0,0 +1,159 @@ +import Link from "next/link"; +import { Check, MessageSquare, Phone } from "lucide-react"; +import HeaderSm from "../components/HeaderSm"; +import Button from "../components/Button"; +import CtaBand from "../components/CtaBand"; +import FaqList from "../components/FaqList"; +import JsonLd from "../components/JsonLd"; +import { + business, + businessPlan, + links, + pageMetadata, + serviceSchema, +} from "@/lib/site"; + +const page = { + title: "Small Business IT Support Plan West Auckland", + description: + "IT support for West Auckland small businesses: $65 a month for 2 hours of remote or onsite help. No lock-in. Wi-Fi, email, Microsoft 365, backups.", + path: "/business", +}; + +export const metadata = pageMetadata(page); + +const covered = [ + "Wi-Fi, routers and network problems", + "Email setup and problems", + "Microsoft 365 and Google Workspace accounts", + "Printers and scanners", + "New computer setup and moving files across", + "Backups for your business files", + "Security basics: antivirus, updates and passwords", + "Software installation and everyday troubleshooting", +]; + +const faqs = [ + { + question: "What happens if I need more than 2 hours in a month?", + answer: + "Extra time is charged at the normal $35 an hour.", + }, + { + question: "Do unused hours carry over?", + answer: + "No. The 2 hours are for that month and don't roll over to the next one.", + }, + { + question: "Is there a contract?", + answer: "No lock-in. You can cancel any time.", + }, + { + question: "Do I have to be on the plan?", + answer: + "No. You can also book support whenever you need it at $35 an hour, onsite or remote.", + }, +]; + +export default function BusinessPage() { + return ( +
+ + + +
+

+ Most small businesses don't need a full-time IT person. They + need someone local to call when the Wi-Fi drops, email stops + working or a new staff member needs a laptop set up. +

+

+ I support small businesses around Te Atatū and West Auckland, onsite + or remotely. You deal with me directly, every time. +

+
+ + +
+
+ +
+
+

Business IT plan

+

+ + {businessPlan.price} + {" "} + a month +

+
    + {businessPlan.includes.map((item) => ( +
  • +
  • + ))} +
+

{businessPlan.terms}

+
+

+ Prefer to pay as you go? Support is $35 an hour, onsite or remote. +

+
+ +
+

What's covered

+
    + {covered.map((item) => ( +
  • +
  • + ))} +
+

+ Hardware repairs and upgrades are covered too. Parts are extra. See{" "} + + IT support + {" "} + and{" "} + + computer repairs + + . +

+
+ +
+

Questions

+ +
+ + +
+ ); +} diff --git a/src/app/components/Footer.js b/src/app/components/Footer.js index 3f804e7..d6f4849 100644 --- a/src/app/components/Footer.js +++ b/src/app/components/Footer.js @@ -1,43 +1,94 @@ +import Link from "next/link"; +import { Mail, MapPin, Phone } from "lucide-react"; +import { business, links } from "@/lib/site"; +import { services } from "@/lib/services"; +import { areas } from "@/lib/areas"; + +const pages = [ + { href: "/pricing", label: "Pricing" }, + { href: "/business", label: "Business IT plans" }, + { href: "/windows-10", label: "Windows 10 help" }, + { href: "/about", label: "About" }, + { href: "/contact", label: "Contact" }, +]; + export default function Footer() { + const { address } = business; return ( -