mirror of
https://github.com/Such-Software/such.software.git
synced 2026-10-20 05:58:32 +02:00
SEO: FAQ schema, per-product OG cards, stable sitemap dates
- Add FAQPage structured data + visible FAQ sections to Wownerogue, Webshops, Neroswap, and Services (covers high-intent 'provably fair', 'no-KYC', and 'revenue share' style queries; visible Q&A matches the schema). - Generate branded 1200x630 OG cards per product and wire them into each product page's openGraph + twitter (summary_large_image), replacing the square app icons that previously got cropped in social previews. - Sitemap: stop stamping every static page with new Date() on each build; use a single content-update date so freshness signals are not diluted.
This commit is contained in:
@@ -6,8 +6,17 @@ import { ScrollReveal } from "@/components/scroll-reveal";
|
||||
import Image from "next/image";
|
||||
import Link from "next/link";
|
||||
import { Card } from "@repo/ui/components/card";
|
||||
import { JsonLd, faqLd } from "@/components/seo/json-ld";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
const faqs = [
|
||||
{ q: "What does Such Software build?", a: "Custom e-commerce on Medusa v2, real-time web apps and multiplayer experiences, and cryptocurrency and Monero integrations and consulting. We work across the stack, from backend infrastructure to accessible front-ends." },
|
||||
{ q: "Where are you based?", a: "We are a software studio in Kennett Square, Pennsylvania, working with clients remotely across the US and beyond." },
|
||||
{ q: "Do you build for accessibility?", a: "Yes. We build to WCAG 2.2 and audit for accessibility and Core Web Vitals as part of every project, not as an afterthought." },
|
||||
{ q: "How does a project start?", a: "Reach out through the contact form with what you need. We scope it, propose an approach, and from there it can run as a fixed project or a performance-based revenue-share partnership." },
|
||||
{ q: "Do you take revenue-share work?", a: "Yes. For a limited number of partners we build and operate products (such as webshops) for a share of revenue instead of a large upfront fee, so our incentives line up with yours." },
|
||||
];
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Medusa, Web App & Crypto Development Services | Such Software",
|
||||
description: "Custom e-commerce on Medusa v2, real-time web apps, and Monero/crypto consulting. A Kennett Square, PA studio building for scale, accessibility, and performance.",
|
||||
@@ -24,6 +33,7 @@ export const metadata: Metadata = {
|
||||
export default function ServicesPage() {
|
||||
return (
|
||||
<main className="relative min-h-screen flex flex-col items-center bg-background text-foreground overflow-hidden">
|
||||
<JsonLd data={faqLd(faqs)} />
|
||||
<DataGrid />
|
||||
<Header />
|
||||
|
||||
@@ -170,6 +180,18 @@ export default function ServicesPage() {
|
||||
</Card>
|
||||
</ScrollReveal>
|
||||
|
||||
<ScrollReveal className="mt-20">
|
||||
<h2 className="text-3xl font-bold mb-8 tracking-tight">Frequently Asked Questions</h2>
|
||||
<div className="space-y-6">
|
||||
{faqs.map((f) => (
|
||||
<div key={f.q}>
|
||||
<h3 className="text-xl font-bold mb-1">{f.q}</h3>
|
||||
<p className="text-muted-foreground leading-relaxed">{f.a}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</ScrollReveal>
|
||||
|
||||
<ScrollReveal className="mt-20 p-16 rounded-[2.5rem] bg-gradient-to-br from-slate-900 via-slate-800 to-indigo-950 text-white text-center shadow-2xl relative overflow-hidden group border-2 border-white/5">
|
||||
<div className="absolute inset-0 bg-blue-500/10 opacity-0 group-hover:opacity-100 transition-opacity" />
|
||||
<h2 className="text-4xl font-bold mb-6 relative z-10 tracking-tight">Let's build together</h2>
|
||||
|
||||
Reference in New Issue
Block a user