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>
This commit is contained in:
2026-03-15 21:19:18 +03:00
parent 18fff2e3f6
commit a0ebac1544
46 changed files with 1454 additions and 1960 deletions

View File

@@ -1,26 +1,26 @@
{
"name": "sag24-website",
"private": true,
"version": "1.0.0",
"type": "module",
"version": "2.0.0",
"scripts": {
"dev": "vite",
"build": "vite build && vite build --ssr src/entry-server.jsx --outDir dist/server && node scripts/prerender.mjs",
"deploy": "BUILD_DIR=../public_html vite build && vite build --ssr src/entry-server.jsx --outDir dist/server && BUILD_DIR=../public_html node scripts/prerender.mjs",
"preview": "vite preview"
"dev": "next dev",
"build": "next build",
"start": "next start",
"deploy": "BUILD_DIR=../public_html next build"
},
"dependencies": {
"@fontsource/manrope": "^5.2.8",
"lucide-react": "^0.263.1",
"react": "^18.2.0",
"react-dom": "^18.2.0"
"next": "^15.2.3",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"lucide-react": "^0.263.1"
},
"devDependencies": {
"@vitejs/plugin-react": "^4.0.0",
"@types/node": "^22",
"@types/react": "^19",
"@types/react-dom": "^19",
"typescript": "^5",
"autoprefixer": "^10.4.14",
"postcss": "^8.4.24",
"sharp": "^0.34.5",
"tailwindcss": "^3.3.2",
"vite": "^4.4.0"
"tailwindcss": "^3.3.2"
}
}