- Import dynamic from next/dynamic for lazy loading
- Create lazy-loaded Chatbot component with ssr: false
(uses browser-only APIs like localStorage)
- Add Chatbot inside NextIntlClientProvider for i18n support
- Component loads on client-side only for optimal performance
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implemented Next.js API route at /api/chat with:
- POST endpoint for sending messages with streaming responses (SSE)
- GET endpoint for retrieving chat history
- OPTIONS endpoint for CORS preflight
- Integration with Deepseek API via createStreamingChatCompletion
- Session management via getOrCreateChatSession (24h continuity)
- Message persistence to Supabase (user + assistant messages)
- Context management with 20-message history limit
- Error handling for API key/database issues
- Request validation for required fields (message, visitorId)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove outdated static public/sitemap.xml that conflicted with dynamic sitemap.ts
(was missing leistungen pages, city pages, and had outdated blog/portfolio slugs)
- Fix robots.ts to reference only the single sitemap.xml instead of non-existent
language-specific sitemaps (sitemap-de.xml, sitemap-en.xml, sitemap-sr.xml)
- Dynamic sitemap.ts now handles all pages with proper hreflang alternates
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Added missing OpenGraph and Twitter card metadata to about, contact, and portfolio pages:
- Added siteName to OpenGraph metadata
- Added OpenGraph images with proper dimensions (1200x630)
- Added Twitter card metadata (summary_large_image)
All pages now follow the home page metadata pattern for consistent SEO.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Enhanced JSON-LD structured data coverage with the following improvements:
## PersonJsonLd Enhancements:
- Added hasOccupation with skills and occupationLocation
- Added knowsLanguage (German, English, Serbian)
- Added worksFor reference to business
- Added nationality for geo-targeting
- Enhanced knowsAbout with Claude AI, GPT-4, LangChain
- Upgraded image to ImageObject with dimensions
## New Components:
- ContactPageJsonLd: Contact page with ContactPoint entity
- CollectionPageJsonLd: Portfolio page with ItemList for projects
- ItemListJsonLd: Generic list schema for any items
## WebSiteJsonLd Enhancement:
- Added SearchAction for sitelinks search box
## Page Updates:
- Contact page now uses ContactPageJsonLd
- Portfolio page now uses CollectionPageJsonLd and BreadcrumbJsonLd
All schemas use @id cross-references for proper entity linking.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Created PAGESPEED_VERIFICATION_REPORT.md with comprehensive audit results
- Fixed robots.txt conflict by removing static public/robots.txt
- Updated src/app/robots.ts to include language-specific sitemaps (de, en, sr)
- Local Lighthouse tests: Accessibility 92-100%, Best Practices 100%
- Performance/SEO verification requires manual testing via pagespeed.web.dev
- Added .auto-claude/ to .gitignore
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Create WebVitals client component in src/components/analytics/
- Track LCP, INP, CLS, FCP, and TTFB metrics
- Log metrics to console in development mode
- Send metrics to Google Analytics when available
- Add WebVitals component to root layout
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add 15 optimized WebP images for portfolio (21-53KB each)
- Redesign Hero section with full-width background image
- Add SSR support for Hero component
- Update About section with new portrait image
- Update Contact page with professional headshot
- Add images to Services/Leistungen page
- Add image optimization script (sharp)
- Update translations for gallery section
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>