// app/services/page.tsx import { Metadata } from "next"; import { getAllServices, SERVICE_CATEGORIES, type ServiceCategoryId } from "@/lib/services"; import ServiceCard from "@/components/ServiceCard"; import Link from "next/link"; export const revalidate = 86400; export const metadata: Metadata = { title: "Services — Website Reliability for SMBs | Van Hunen IT", description: "Fixed-scope sprints and care plans for SMB website reliability: email deliverability (DMARC), Cloudflare edge security & speed, tested backups, and uptime watch.", alternates: { canonical: "/services" }, }; export default function ServicesPage() { const services = getAllServices(); // Emphasize core Reliability first; keep the rest discoverable. const categories: ServiceCategoryId[] = [ "web-performance", "infrastructure-devops", "dev-platforms", "migrations", "web-dev", "minecraft", ]; return (
{/* --- Hero Header --- */}

Services that make websites reliable

Fixed-scope sprints and care plans for{" "} email deliverability, Cloudflare edge security & speed,{" "} backups with restore tests, and uptime watch. Clear outcomes, flat pricing, and before/after proof you can keep.

{categories.map((id) => ( {SERVICE_CATEGORIES[id].label} ))}
See pricing Book a 15-min Fit Call
{/* --- Service Categories --- */}
{categories.map((id, index) => { const list = services.filter((s) => s.category === id); if (!list.length) return null; const headingId = `${id}-heading`; const sectionClasses = `relative py-16 scroll-mt-24 ${ index % 2 === 0 ? "bg-white dark:bg-neutral-900/50" : "bg-neutral-50 dark:bg-neutral-900/30" } rounded-2xl mb-12 shadow-sm`; return (

{SERVICE_CATEGORIES[id].label}

Jump to top ↑
{list.map((svc, i) => (
))}
); })}
{/* --- CTA footer --- */}

Ready to improve reliability and deliverability?

Tell us about your site. We’ll recommend the right Fix Sprint or Care plan and show you the expected before/after.

Compare plans Contact us
); }