mirror of
https://github.com/Such-Software/such.software.git
synced 2026-10-17 05:32:05 +02:00
Add Playwright a11y tests, structured data, and reduced motion support
- Add Playwright tests with axe-core (42 tests across 3 browsers) - Add prefers-reduced-motion support to NebulaField - Add JSON-LD structured data (Organization schema) - Add canonical URLs to all pages - Consolidate TODO files, update README
This commit is contained in:
@@ -7,6 +7,9 @@ import type { Metadata } from "next";
|
||||
export const metadata: Metadata = {
|
||||
title: "About | Such Software",
|
||||
description: "Full-service software provider in Kennett Square, PA. Founded by John Winter Murphy, specializing in accessible web engineering and WCAG 2.2 compliance.",
|
||||
alternates: {
|
||||
canonical: "/about",
|
||||
},
|
||||
openGraph: {
|
||||
title: "About | Such Software",
|
||||
description: "Full-service software provider in Kennett Square, PA. Founded by John Winter Murphy.",
|
||||
|
||||
@@ -7,8 +7,12 @@ import { Footer } from "@/components/layout/footer";
|
||||
const inter = Inter({ subsets: ["latin"] });
|
||||
|
||||
export const metadata: Metadata = {
|
||||
metadataBase: new URL("https://such.software"),
|
||||
title: "Such Software | Digital Craftsmanship",
|
||||
description: "Next-generation web applications engineered for scale, compliance, and performance.",
|
||||
alternates: {
|
||||
canonical: "/",
|
||||
},
|
||||
icons: {
|
||||
icon: [
|
||||
{ url: "/images/favicon.svg", type: "image/svg+xml" },
|
||||
@@ -22,6 +26,32 @@ export const metadata: Metadata = {
|
||||
manifest: "/manifest.json",
|
||||
};
|
||||
|
||||
const structuredData = {
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Organization",
|
||||
name: "Such Software LLC",
|
||||
url: "https://such.software",
|
||||
logo: "https://such.software/images/logo_dark.svg",
|
||||
description: "Next-generation web applications engineered for scale, compliance, and performance.",
|
||||
address: {
|
||||
"@type": "PostalAddress",
|
||||
streetAddress: "110 E State St, Suite 300",
|
||||
addressLocality: "Kennett Square",
|
||||
addressRegion: "PA",
|
||||
postalCode: "19348",
|
||||
addressCountry: "US",
|
||||
},
|
||||
founder: {
|
||||
"@type": "Person",
|
||||
name: "John Winter Murphy",
|
||||
jobTitle: "Founder & Principal Engineer",
|
||||
},
|
||||
sameAs: [
|
||||
"https://github.com/suchsoftware",
|
||||
"https://linkedin.com/company/suchsoftware",
|
||||
],
|
||||
};
|
||||
|
||||
export default function RootLayout({
|
||||
children,
|
||||
}: Readonly<{
|
||||
@@ -29,6 +59,12 @@ export default function RootLayout({
|
||||
}>) {
|
||||
return (
|
||||
<html lang="en" suppressHydrationWarning>
|
||||
<head>
|
||||
<script
|
||||
type="application/ld+json"
|
||||
dangerouslySetInnerHTML={{ __html: JSON.stringify(structuredData) }}
|
||||
/>
|
||||
</head>
|
||||
<body className={inter.className}>
|
||||
<ThemeProvider
|
||||
attribute="class"
|
||||
|
||||
@@ -8,6 +8,9 @@ import type { Metadata } from "next";
|
||||
export const metadata: Metadata = {
|
||||
title: "Services | Such Software",
|
||||
description: "Medusa v2 development, custom web applications, and cryptocurrency consulting. High-performance headless commerce, real-time platforms, and Web3 integration.",
|
||||
alternates: {
|
||||
canonical: "/services",
|
||||
},
|
||||
openGraph: {
|
||||
title: "Services | Such Software",
|
||||
description: "Medusa v2 development, custom web applications, and cryptocurrency consulting.",
|
||||
|
||||
Reference in New Issue
Block a user