This commit is contained in:
null 2026-05-18 13:55:06 -05:00
parent a8765990ef
commit f378233328
10 changed files with 125 additions and 102 deletions

View File

@ -7,8 +7,27 @@
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<link rel="manifest" href="/site.webmanifest" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Queue North Technologies | Modern Communications Infrastructure</title>
<meta name="description" content="Queue North Technologies is an official 8x8 Certified Partner delivering UCaaS, Contact Center, deployment, and managed lifecycle support for SMB and enterprise organizations." />
<title>Queue North Technologies | Business Communications & IT Partner</title>
<meta name="description" content="Queue North Technologies is a veteran-owned 8x8 Certified Partner providing business phone systems, UCaaS, contact center, IT support, and networking solutions. 25+ years of proven reliability." />
<!-- Open Graph fallback for crawlers that don't execute JavaScript -->
<meta property="og:title" content="Queue North Technologies | Business Communications & IT Partner" />
<meta property="og:description" content="Veteran-owned 8x8 Certified Partner. Business phone, UCaaS, contact center, IT support, and networking solutions. 25+ years of proven reliability." />
<meta property="og:url" content="https://queuenorth.com" />
<meta property="og:type" content="website" />
<meta property="og:site_name" content="Queue North Technologies" />
<meta property="og:locale" content="en_US" />
<meta property="og:image" content="https://queuenorth.com/assets/og-image.png" />
<meta property="og:image:secure_url" content="https://queuenorth.com/assets/og-image.png" />
<meta property="og:image:type" content="image/png" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:image:alt" content="Queue North Technologies — Business Communications & IT Partner" />
<!-- Twitter / X Card fallback -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Queue North Technologies | Business Communications & IT Partner" />
<meta name="twitter:description" content="Veteran-owned 8x8 Certified Partner. Business phone, UCaaS, contact center, IT support, and networking solutions." />
<meta name="twitter:image" content="https://queuenorth.com/assets/og-image.png" />
<meta name="twitter:image:alt" content="Queue North Technologies — Business Communications & IT Partner" />
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">

43
src/components/SEO.jsx Normal file
View File

@ -0,0 +1,43 @@
import { Helmet } from 'react-helmet-async'
const DEFAULT_IMAGE = 'https://queuenorth.com/assets/og-image.png'
const DEFAULT_IMAGE_ALT = 'Queue North Technologies — Business Communications & IT Partner'
const SITE_NAME = 'Queue North Technologies'
const SEO = ({ title, description, url, type = 'website', image = DEFAULT_IMAGE, jsonLd }) => {
const schemas = jsonLd ? (Array.isArray(jsonLd) ? jsonLd : [jsonLd]) : []
return (
<Helmet>
<title>{title}</title>
<meta name="description" content={description} />
{/* Open Graph — Facebook, LinkedIn, iMessage, Google Messages, Slack */}
<meta property="og:title" content={title} />
<meta property="og:description" content={description} />
<meta property="og:url" content={url} />
<meta property="og:type" content={type} />
<meta property="og:site_name" content={SITE_NAME} />
<meta property="og:locale" content="en_US" />
<meta property="og:image" content={image} />
<meta property="og:image:secure_url" content={image} />
<meta property="og:image:type" content="image/png" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:image:alt" content={DEFAULT_IMAGE_ALT} />
{/* Twitter / X — also used by Apple Messages on iOS 13+ */}
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content={title} />
<meta name="twitter:description" content={description} />
<meta name="twitter:image" content={image} />
<meta name="twitter:image:alt" content={DEFAULT_IMAGE_ALT} />
{schemas.map((schema, i) => (
<script key={i} type="application/ld+json">{JSON.stringify(schema)}</script>
))}
</Helmet>
)
}
export default SEO

View File

@ -1,4 +1,4 @@
import { Helmet } from 'react-helmet-async'
import SEO from '@/components/SEO'
import { Link } from 'react-router-dom'
import { ArrowRight, Award, BadgeCheck, CheckCircle2, Compass, Cpu, Handshake, Headphones, Route, ShieldCheck, Users, Wrench } from 'lucide-react'
@ -46,16 +46,11 @@ const capabilities = [
const About = () => {
return (
<>
<Helmet>
<title>About Queue North | Veteran-Owned 8x8 Partner - 25+ Years of Service</title>
<meta name="description" content="Queue North Technologies is a veteran-owned 8x8 and Cisco Certified Partner with 25+ years of experience in communications, contact center, support, and network infrastructure." />
<meta property="og:title" content="About Queue North | Veteran-Owned 8x8 Partner - 25+ Years of Service" />
<meta property="og:description" content="Veteran-owned 8x8 and Cisco Certified Partner with 25+ years of communications and infrastructure experience." />
<meta property="og:url" content="https://queuenorth.com/about" />
<meta property="og:type" content="website" />
<meta property="og:image" content="https://queuenorth.com/assets/og-image.png" />
<meta property="og:site_name" content="Queue North Technologies" />
</Helmet>
<SEO
title="About Queue North | Veteran-Owned 8x8 Partner — 25+ Years of Service"
description="Queue North Technologies is a veteran-owned 8x8 and Cisco Certified Partner with 25+ years of experience in communications, contact center, support, and network infrastructure."
url="https://queuenorth.com/about"
/>
{/* Page Hero */}
<section className="bg-primary-navy py-12 lg:py-20 text-white">

View File

@ -1,4 +1,4 @@
import { Helmet } from 'react-helmet-async'
import SEO from '@/components/SEO'
import { useState } from 'react'
import { toast } from 'sonner'
import { Button } from '@/components/ui/Button'
@ -133,16 +133,11 @@ const Contact = () => {
return (
<>
<Helmet>
<title>Contact Queue North | Schedule a Consultation</title>
<meta name="description" content="Contact Queue North Technologies to schedule a free consultation. Call (321) 730-8020 or toll-free (888) 656-2850 or fill out our form for business phone, UCaaS, IT support, and networking solutions." />
<meta property="og:title" content="Contact Queue North | Schedule a Consultation" />
<meta property="og:description" content="Schedule a free consultation with Queue North Technologies. Business communications and IT solutions." />
<meta property="og:url" content="https://queuenorth.com/contact" />
<meta property="og:type" content="website" />
<meta property="og:image" content="https://queuenorth.com/assets/og-image.png" />
<meta property="og:site_name" content="Queue North Technologies" />
</Helmet>
<SEO
title="Contact Queue North | Schedule a Free Consultation"
description="Contact Queue North Technologies to schedule a free consultation. Call (321) 730-8020 or toll-free (888) 656-2850 for business phone, UCaaS, IT support, and networking solutions."
url="https://queuenorth.com/contact"
/>
{/* Hero */}
<section className="bg-primary-navy py-12 lg:py-20">

View File

@ -1,4 +1,4 @@
import { Helmet } from 'react-helmet-async'
import SEO from '@/components/SEO'
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/Card'
import { services } from '@/data/services'
import { industries } from '@/data/industries'
@ -57,18 +57,12 @@ const Home = () => {
return (
<>
<Helmet>
<title>Queue North Technologies | Business Communications & IT Partner</title>
<meta name="description" content="Queue North Technologies is a veteran-owned 8x8 Certified Partner providing business phone systems, UCaaS, contact center, IT support, and networking solutions. 25+ years of proven reliability." />
<meta property="og:title" content="Queue North Technologies | Business Communications & IT Partner" />
<meta property="og:description" content="Veteran-owned 8x8 Certified Partner. Business phone, UCaaS, contact center, IT support, and networking solutions. 25+ years of proven reliability." />
<meta property="og:url" content="https://queuenorth.com" />
<meta property="og:type" content="website" />
<meta property="og:image" content="https://queuenorth.com/assets/og-image.png" />
<meta property="og:site_name" content="Queue North Technologies" />
<script type="application/ld+json">{JSON.stringify(organizationLd)}</script>
<script type="application/ld+json">{JSON.stringify(localBusinessLd)}</script>
</Helmet>
<SEO
title="Queue North Technologies | Business Communications & IT Partner"
description="Queue North Technologies is a veteran-owned 8x8 Certified Partner providing business phone systems, UCaaS, contact center, IT support, and networking solutions. 25+ years of proven reliability."
url="https://queuenorth.com"
jsonLd={[organizationLd, localBusinessLd]}
/>
{/* Hero Section */}
<section className="relative isolate overflow-hidden bg-primary-navy text-white">
<div className="absolute inset-0 -z-10">

View File

@ -1,4 +1,4 @@
import { Helmet } from 'react-helmet-async'
import SEO from '@/components/SEO'
import { industries } from '@/data/industries'
import { Link } from 'react-router-dom'
import { HeartPulse, ShoppingCart, Factory, Landmark, Building2 } from 'lucide-react'
@ -14,16 +14,11 @@ const industryIcons = {
const Industries = () => {
return (
<>
<Helmet>
<title>Industries We Serve | Queue North Technologies</title>
<meta name="description" content="Queue North Technologies serves healthcare, retail, manufacturing, education, and finance industries with tailored communications and IT solutions." />
<meta property="og:title" content="Industries We Serve | Queue North Technologies" />
<meta property="og:description" content="Tailored communications and IT solutions for healthcare, retail, manufacturing, education, and finance." />
<meta property="og:url" content="https://queuenorth.com/industries" />
<meta property="og:type" content="website" />
<meta property="og:image" content="https://queuenorth.com/assets/og-image.png" />
<meta property="og:site_name" content="Queue North Technologies" />
</Helmet>
<SEO
title="Industries We Serve | Queue North Technologies"
description="Queue North Technologies serves healthcare, retail, manufacturing, education, and finance industries with tailored communications and IT solutions."
url="https://queuenorth.com/industries"
/>
{/* Page Hero */}
<section className="bg-background py-12 lg:py-20">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">

View File

@ -1,4 +1,4 @@
import { Helmet } from 'react-helmet-async'
import SEO from '@/components/SEO'
import { useParams } from 'react-router-dom'
import { industries } from '@/data/industries'
import { Link } from 'react-router-dom'
@ -11,10 +11,11 @@ const IndustryDetail = () => {
if (!industry) {
return (
<section className="bg-background py-12 lg:py-20">
<Helmet>
<title>Industry Not Found | Queue North Technologies</title>
<meta name="description" content="The industry page you are looking for does not exist." />
</Helmet>
<SEO
title="Industry Not Found | Queue North Technologies"
description="The industry page you are looking for does not exist."
url="https://queuenorth.com/industries"
/>
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="text-center">
<h1 className="text-3xl font-bold text-primary-navy mb-4">Industry Not Found</h1>
@ -34,16 +35,11 @@ const IndustryDetail = () => {
return (
<>
<Helmet>
<title>{industryTitle}</title>
<meta name="description" content={industryDesc} />
<meta property="og:title" content={industryTitle} />
<meta property="og:description" content={industryDesc} />
<meta property="og:url" content={industryUrl} />
<meta property="og:type" content="website" />
<meta property="og:image" content="https://queuenorth.com/assets/og-image.png" />
<meta property="og:site_name" content="Queue North Technologies" />
</Helmet>
<SEO
title={industryTitle}
description={industryDesc}
url={industryUrl}
/>
{/* Page Hero */}
<section className="bg-background py-12 lg:py-20">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">

View File

@ -1,4 +1,4 @@
import { Helmet } from 'react-helmet-async'
import SEO from '@/components/SEO'
import { useParams } from 'react-router-dom'
import { services } from '@/data/services'
import { Link } from 'react-router-dom'
@ -18,10 +18,11 @@ const ServiceDetail = () => {
if (!service) {
return (
<section className="bg-background py-16 md:py-24">
<Helmet>
<title>Service Not Found | Queue North Technologies</title>
<meta name="description" content="The service page you are looking for does not exist." />
</Helmet>
<SEO
title="Service Not Found | Queue North Technologies"
description="The service page you are looking for does not exist."
url="https://queuenorth.com/services"
/>
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="text-center">
<h1 className="text-3xl font-bold text-primary-navy mb-4">Service Not Found</h1>
@ -58,17 +59,12 @@ const ServiceDetail = () => {
return (
<>
<Helmet>
<title>{serviceTitle}</title>
<meta name="description" content={serviceDesc} />
<meta property="og:title" content={serviceTitle} />
<meta property="og:description" content={serviceDesc} />
<meta property="og:url" content={serviceUrl} />
<meta property="og:type" content="website" />
<meta property="og:image" content="https://queuenorth.com/assets/og-image.png" />
<meta property="og:site_name" content="Queue North Technologies" />
<script type="application/ld+json">{JSON.stringify(serviceDetailLd)}</script>
</Helmet>
<SEO
title={serviceTitle}
description={serviceDesc}
url={serviceUrl}
jsonLd={serviceDetailLd}
/>
{/* Page Hero */}
<section className="bg-background py-14 md:py-20">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">

View File

@ -1,4 +1,4 @@
import { Helmet } from 'react-helmet-async'
import SEO from '@/components/SEO'
import { services } from '@/data/services'
import { MessageCircle, Users, LifeBuoy, GraduationCap, Link as LinkIcon, Wifi, Network } from 'lucide-react'
import { Link } from 'react-router-dom'
@ -21,17 +21,12 @@ const serviceLd = {
const Services = () => {
return (
<>
<Helmet>
<title>Business Phone, UCaaS & IT Services | Queue North Technologies</title>
<meta name="description" content="Explore Queue North Technologies services: unified communications, contact center, managed IT support, consulting & training, infrastructure cabling, wireless access, and local networking." />
<meta property="og:title" content="Business Phone, UCaaS & IT Services | Queue North Technologies" />
<meta property="og:description" content="Unified communications, contact center, managed IT support, consulting, cabling, wireless, and networking solutions." />
<meta property="og:url" content="https://queuenorth.com/services" />
<meta property="og:type" content="website" />
<meta property="og:image" content="https://queuenorth.com/assets/og-image.png" />
<meta property="og:site_name" content="Queue North Technologies" />
<script type="application/ld+json">{JSON.stringify(serviceLd)}</script>
</Helmet>
<SEO
title="Business Phone, UCaaS & IT Services | Queue North Technologies"
description="Explore Queue North Technologies services: unified communications, contact center, managed IT support, consulting & training, infrastructure cabling, wireless access, and local networking."
url="https://queuenorth.com/services"
jsonLd={serviceLd}
/>
{/* Page Hero */}
<section className="bg-background py-12 lg:py-20">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">

View File

@ -1,4 +1,4 @@
import { Helmet } from 'react-helmet-async'
import SEO from '@/components/SEO'
import { useState } from 'react'
import { toast } from 'sonner'
import { Button } from '@/components/ui/Button'
@ -135,16 +135,11 @@ const Support = () => {
return (
<>
<Helmet>
<title>IT Support & Help Desk | Queue North Technologies</title>
<meta name="description" content="Get IT support and help desk services from Queue North Technologies. 24/7 monitoring, rapid response SLAs, and dedicated support engineers for your business." />
<meta property="og:title" content="IT Support & Help Desk | Queue North Technologies" />
<meta property="og:description" content="24/7 IT support and help desk services. Rapid response SLAs, dedicated support engineers." />
<meta property="og:url" content="https://queuenorth.com/support" />
<meta property="og:type" content="website" />
<meta property="og:image" content="https://queuenorth.com/assets/og-image.png" />
<meta property="og:site_name" content="Queue North Technologies" />
</Helmet>
<SEO
title="IT Support & Help Desk | Queue North Technologies"
description="Get IT support and help desk services from Queue North Technologies. 24/7 monitoring, rapid response SLAs, and dedicated support engineers for your business."
url="https://queuenorth.com/support"
/>
{/* Page Hero */}
<section className="bg-primary-navy py-16 lg:py-20 text-white">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">