- Added rate limit translations for en, de, and sr locales
- Added state to track remaining attempts from X-RateLimit-Remaining header
- Display warning when remaining attempts are low (<=2)
- Show user-friendly error messages with time until reset for 429 errors
- Added AlertTriangle icon for visual feedback on warnings
- All messages now use i18n translation keys for multilingual support
- Created BlogList client component with search and category filtering
- Integrated SearchBar and CategoryFilter components
- Implemented case-insensitive search by title/excerpt/tags
- Added category filtering with AND logic for combined filters
- Updated pagination to work with filtered results
- Added search placeholder translations for de/en/sr
- Moved blog card and pagination logic to client component
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Added comprehensive GDPR-compliant privacy policy translations to all locale
message files (de.json, en.json, sr.json). Translations include:
- Full introduction and data controller sections
- Detailed data collection information (automatic and contact form data)
- Cookie and local storage explanations with duration
- Third-party services (Google Analytics, Supabase, Deepseek API, Vercel)
- Legal basis for processing under GDPR (Art. 6)
- Complete user rights sections (access, rectification, erasure, etc.)
- Data retention and security policies
- Contact information for privacy inquiries
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>