Migrate from Vite to Next.js 15 with SSR

- Replace Vite + React Router with Next.js 15 App Router
- Implement i18n with next-intl (URL-based: /de, /en, /sr)
- Add SSR/SSG for all pages (48 static pages generated)
- Setup Supabase SSR client for auth
- Migrate all pages: Home, About, Portfolio, Blog, Contact, Login, Dashboard, Imprint, Privacy, Terms
- Add Docker support with standalone output
- Replace i18next with next-intl JSON translations
- Use next/image for optimized images

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-17 01:00:33 +01:00
co-authored by Claude Opus 4.5
parent a66f51b9a2
commit b1ec7b4d61
281 changed files with 8024 additions and 8901 deletions
+59
View File
@@ -0,0 +1,59 @@
// src/i18n/locales/en/pages/terms.ts
export const terms = {
// SEO and Schema
seo: {
title: 'Terms and Conditions',
description: 'Terms and Conditions for Damjan Savić\'s portfolio website'
},
schema: {
name: 'Terms and Conditions',
description: 'Terms and Conditions for Damjan Savić\'s portfolio website'
},
// Main content
content: {
title: 'Terms and Conditions',
lastUpdated: 'Last updated: March 10, 2024',
// Navigation
breadcrumbs: {
currentTitle: 'Terms and Conditions'
},
// Sections
sections: {
agreement: {
title: '1. Agreement to Terms',
content: 'By accessing our website, you agree to be bound by these Terms and Conditions and to comply with all applicable laws and regulations.'
},
intellectualProperty: {
title: '2. Intellectual Property Rights',
content: 'All content on this website, including but not limited to text, graphics, logos, images, and software, is the property of Damjan Savić and is protected by intellectual property laws.'
},
userResponsibilities: {
title: '3. User Responsibilities',
intro: 'When using our website, you agree to:',
items: [
'Provide accurate information',
'Use the website legally and ethically',
'Not attempt unauthorized access',
'Not disrupt the website\'s operation'
]
},
liability: {
title: '4. Limitation of Liability',
content: 'We are not liable for any indirect, incidental, special, consequential, or punitive damages resulting from your use or inability to use the website.'
},
changes: {
title: '5. Changes to Terms',
content: 'We reserve the right to modify these terms at any time. We will notify users of any material changes by posting the new Terms and Conditions on this page.'
},
governingLaw: {
title: '6. Governing Law',
content: 'These terms are governed by and construed in accordance with the laws of the Federal Republic of Germany, without regard to its conflict of law provisions.'
},
contact: {
title: '7. Contact Information',
intro: 'For questions about these Terms and Conditions, please contact us at:',
email: 'Email: legal@damjan-savic.com'
}
}
}
};