Fix SEO/UX audit gaps: canonical tags, org schema, nav, header claims

Add canonical URLs and a sitewide Organization JSON-LD (linked via @id
to page-specific LocalBusiness/Service/Article schemas), move FAQ and
Reviews into the top nav, attach the 24/7 support claim to a tooltip
on the header badge instead of leaving it unexplained, drop the
unverifiable incidents_resolved stat from the hero terminal animation,
and clean up the empty-reviews state instead of showing a thin
placeholder.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013otXCiTZsxdZ4SJKZ9wUky
This commit is contained in:
ogrechkoandClaude Sonnet 5 committed 2026-08-25 23:43:17 +03:00
1 parent 130c5382cd
commit 30e1aea20b
16 files changed
+72 -11

No files matched your search

+5
View File
@@ -13,6 +13,10 @@ import Reveal from '../components/Reveal.jsx';
import SectionHeading from '../components/SectionHeading.jsx';
import { serverApi } from '../lib/serverApi.js';
export const metadata = {
alternates: { canonical: '/' },
};
export default async function HomePage() {
const [services, promotions, reviews, cases, contact] = await Promise.all([
serverApi.getServices(),
@@ -25,6 +29,7 @@ export default async function HomePage() {
const business = {
'@context': 'https://schema.org',
'@type': 'LocalBusiness',
'@id': `${process.env.NEXT_PUBLIC_SITE_URL || 'https://top-sysops.ru'}/#organization`,
name: 'TopSysOps',
url: process.env.NEXT_PUBLIC_SITE_URL || 'https://top-sysops.ru',
...(contact?.address ? { address: { '@type': 'PostalAddress', streetAddress: contact.address, addressCountry: 'RU' } } : {}),