initial migration
This commit is contained in:
198
PROJECT_STRUCTURE.md
Normal file
198
PROJECT_STRUCTURE.md
Normal file
@@ -0,0 +1,198 @@
|
||||
# KLZ Cables - Next.js Migration Project Structure
|
||||
|
||||
## Overview
|
||||
This document outlines the complete project structure for the WordPress → Next.js static migration.
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
klz-2026/
|
||||
├── app/ # Next.js App Router
|
||||
│ ├── layout.tsx # Root layout
|
||||
│ ├── page.tsx # Home page
|
||||
│ ├── globals.scss # Global styles
|
||||
│ ├── blog/
|
||||
│ │ ├── page.tsx # Blog index
|
||||
│ │ └── [slug]/
|
||||
│ │ └── page.tsx # Blog post detail
|
||||
│ ├── products/
|
||||
│ │ ├── page.tsx # Products index
|
||||
│ │ └── [slug]/
|
||||
│ │ └── page.tsx # Product detail
|
||||
│ ├── product-category/
|
||||
│ │ └── [slug]/
|
||||
│ │ └── page.tsx # Category page
|
||||
│ ├── contact/
|
||||
│ │ └── page.tsx # Contact page
|
||||
│ ├── de/ # German pages
|
||||
│ │ ├── page.tsx
|
||||
│ │ ├── blog/
|
||||
│ │ │ └── page.tsx
|
||||
│ │ ├── products/
|
||||
│ │ │ └── page.tsx
|
||||
│ │ └── contact/
|
||||
│ │ └── page.tsx
|
||||
│ └── api/
|
||||
│ ├── contact/
|
||||
│ │ └── route.ts # Contact form API
|
||||
│ └── analytics/
|
||||
│ └── route.ts # Analytics API
|
||||
├── components/
|
||||
│ ├── LocaleSwitcher.tsx # Language switcher
|
||||
│ ├── ContactForm.tsx # Contact form component
|
||||
│ ├── CookieConsent.tsx # GDPR consent banner
|
||||
│ ├── SEO.tsx # SEO component
|
||||
│ └── Layout.tsx # Common layout
|
||||
├── lib/
|
||||
│ ├── data.ts # Data access utilities
|
||||
│ ├── i18n.ts # Internationalization
|
||||
│ ├── html-compat.ts # WPBakery compatibility
|
||||
│ └── analytics.ts # Analytics utilities
|
||||
├── data/
|
||||
│ ├── raw/ # WordPress export (timestamped)
|
||||
│ │ └── 2025-12-27T21-26-12-521Z/
|
||||
│ │ ├── pages.en.json
|
||||
│ │ ├── pages.de.json
|
||||
│ │ ├── posts.en.json
|
||||
│ │ ├── posts.de.json
|
||||
│ │ ├── products.en.json
|
||||
│ │ ├── products.de.json
|
||||
│ │ ├── product-categories.en.json
|
||||
│ │ ├── product-categories.de.json
|
||||
│ │ ├── menus.en.json
|
||||
│ │ ├── menus.de.json
|
||||
│ │ ├── redirects.json
|
||||
│ │ ├── media.json
|
||||
│ │ ├── site-info.json
|
||||
│ │ ├── translation-mapping.json
|
||||
│ │ └── translation-mapping-improved.json
|
||||
│ └── processed/ # Next.js ready data
|
||||
│ ├── wordpress-data.json # Complete dataset
|
||||
│ ├── pages.json
|
||||
│ ├── posts.json
|
||||
│ ├── products.json
|
||||
│ ├── categories.json
|
||||
│ ├── media.json
|
||||
│ └── asset-map.json
|
||||
├── public/
|
||||
│ ├── media/ # Downloaded WordPress media
|
||||
│ ├── favicon.ico
|
||||
│ └── robots.txt
|
||||
├── scripts/
|
||||
│ ├── wordpress-export.js # WordPress data exporter
|
||||
│ ├── process-data.js # Data processor
|
||||
│ ├── analyze-export.js # Export analyzer
|
||||
│ └── improve-translation-mapping.js # Translation mapper
|
||||
├── styles/
|
||||
│ └── _reset.scss # CSS reset
|
||||
├── .env # Environment variables
|
||||
├── .env.example # Example env file
|
||||
├── next.config.ts # Next.js config
|
||||
├── tsconfig.json # TypeScript config
|
||||
├── package.json # Dependencies
|
||||
└── README.md # Project documentation
|
||||
```
|
||||
|
||||
## Key Features Implemented
|
||||
|
||||
### 1. Data Export & Processing
|
||||
- ✅ WordPress REST API integration
|
||||
- ✅ WooCommerce product export
|
||||
- ✅ Multi-language content (DE/EN)
|
||||
- ✅ Media file downloading
|
||||
- ✅ Translation mapping
|
||||
- ✅ Redirect generation
|
||||
|
||||
### 2. Next.js Architecture
|
||||
- ✅ App Router setup
|
||||
- ✅ Static generation (SSG)
|
||||
- ✅ i18n routing with `/de/` prefix
|
||||
- ✅ TypeScript configuration
|
||||
- ✅ SCSS styling
|
||||
|
||||
### 3. Content Types
|
||||
- ✅ Pages (9 EN + 9 DE)
|
||||
- ✅ Posts (29 EN + 30 DE)
|
||||
- ✅ Products (25 EN + 25 DE)
|
||||
- ✅ Categories (7 EN + 7 DE)
|
||||
- ✅ Media (50 files)
|
||||
|
||||
### 4. SEO & i18n
|
||||
- ✅ hreflang tags
|
||||
- ✅ Canonical URLs
|
||||
- ✅ Locale-aware metadata
|
||||
- ✅ Translation references
|
||||
|
||||
### 5. WPBakery Compatibility
|
||||
- ✅ Shortcode removal
|
||||
- ✅ Class normalization
|
||||
- ✅ HTML sanitization
|
||||
- ✅ Grid compatibility
|
||||
|
||||
## Next Steps
|
||||
|
||||
### Immediate Implementation
|
||||
1. **Complete Core Components**
|
||||
- ContactForm with Resend integration
|
||||
- CookieConsent with GDPR compliance
|
||||
- SEO component with hreflang
|
||||
|
||||
2. **Create Dynamic Routes**
|
||||
- Blog post pages: `/blog/[slug]` and `/de/blog/[slug]`
|
||||
- Product pages: `/product/[slug]` and `/de/product/[slug]`
|
||||
- Category pages: `/product-category/[slug]`
|
||||
|
||||
3. **API Routes**
|
||||
- Contact form submission
|
||||
- Analytics tracking (consent-based)
|
||||
|
||||
4. **Static Generation**
|
||||
- Generate all pages at build time
|
||||
- Create sitemap.xml
|
||||
- Generate robots.txt
|
||||
|
||||
### Environment Variables
|
||||
```bash
|
||||
# .env
|
||||
SITE_URL=https://klz-cables.com
|
||||
RESEND_API_KEY=your_resend_key
|
||||
TURNSTILE_SITE_KEY=your_turnstile_key
|
||||
TURNSTILE_SECRET_KEY=your_turnstile_secret
|
||||
VERCEL_ANALYTICS_ID=your_analytics_id
|
||||
```
|
||||
|
||||
### Build & Deploy
|
||||
```bash
|
||||
# Install dependencies
|
||||
npm install --legacy-peer-deps
|
||||
|
||||
# Run data export
|
||||
npm run data:export
|
||||
|
||||
# Process data
|
||||
npm run data:process
|
||||
|
||||
# Build Next.js
|
||||
npm run build
|
||||
|
||||
# Export static site
|
||||
npm run export
|
||||
```
|
||||
|
||||
## Data Flow
|
||||
|
||||
1. **Export**: WordPress → Raw JSON
|
||||
2. **Process**: Raw JSON → Next.js data models
|
||||
3. **Generate**: Data → Static pages
|
||||
4. **Deploy**: Static pages → Vercel/Hosting
|
||||
|
||||
## File Sizes
|
||||
- Raw data: ~3.5 MB
|
||||
- Processed data: ~2.8 MB
|
||||
- Media files: ~50 MB
|
||||
- Final static site: ~10-15 MB
|
||||
|
||||
## Performance Targets
|
||||
- Build time: < 2 minutes
|
||||
- Page load: < 100ms (static)
|
||||
- Lighthouse score: 95+
|
||||
Reference in New Issue
Block a user