9f53641f16
seo: GA4, breadcrumbs JSON-LD, IndexNow post-deploy, llms.txt
...
- Add GA4 (G-C9J0D8FFH3) to root layout alongside Yandex.Metrika
- Add BreadcrumbList JSON-LD schema to all inner pages
- Add scripts/indexnow.mjs — submits 30 URLs to IndexNow + Yandex on deploy
- Add indexnow to postdeploy step in package.json
- Update llms.txt with all 8 services and new pages (about/clients/partners)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-16 04:04:50 +03:00
55f88d5227
SEO: JSON-LD, hreflang x-default, 404 page, localized OG
...
- FaqSection: h1/h2 based on standalone prop (fixes missing H1 on /faq)
- faq/page: FAQPage JSON-LD, hreflang x-default, OG image/url
- kontakty/page: LocalBusiness JSON-LD (address, geo, tel, openingHours), hreflang x-default, OG
- uslugi/page: geo in H1 («в Пушкино»), hreflang x-default, OG, expanded description
- [lang]/page: Organization JSON-LD, localized OG (ru_RU/en_US), x-default hreflang
- [slug]/page: localized og:title/siteName, x-default hreflang, areaServed+telephone in Service JSON-LD
- not-found.tsx: 404 page → generates 404.html for nginx error_page directive
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-16 00:56:47 +03:00
a0ebac1544
feat: migrate to Next.js 15 App Router with i18n and multi-page SEO
...
- Replace Vite+React SPA with Next.js 15, TypeScript, App Router
- Static export (output: 'export'), deploy via npm run deploy
- i18n routing: /ru/... and /en/... with generateStaticParams
- New pages: /uslugi/ (catalog), /uslugi/[slug]/ (8 service pages), /faq/, /kontakty/
- SEO: generateMetadata on all pages, JSON-LD Service schema, hreflang alternates
- ContactForm: 'use client', Turnstile + POST to /api/contact.php
- Fonts: Manrope via next/font/google (CSS variable)
- Remove: vite.config.js, entry-server.jsx, prerender scripts, LanguageContext
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 21:19:18 +03:00