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
@@ -0,0 +1,15 @@
// src/i18n/locales/de/pages/home/about.ts
export const about = {
title: 'Über Damjan Savić - Senior Fullstack Entwickler & Digital Solutions Consultant',
content: 'Damjan Savić ist AI & Automation Specialist mit Fokus auf Voice AI, autonome Agenten und Prozessautomatisierung. Mit einem M.A. in Software Development und über 7 Jahren Erfahrung in der Entwicklung digitaler Lösungen verbindet er technische Expertise mit strategischem Geschäftsverständnis.\n' +
'Aktuell entwickelt er bei Everlast Consulting GmbH KI-Agenten mit n8n und Voice-AI-Lösungen.\n' +
'Seine Spezialisierung umfasst die Integration von GPT-4 und Claude API in Produktions-Workflows, Middleware-Entwicklung für ERP-Systeme wie Apparel Magic und JTL, sowie RFID/IoT-Automatisierung mit Zebra-Hardware. Von der Systemintegration über API-Entwicklung bis zur Fullstack-Implementierung mit Python, TypeScript und React/Next.js liefert er pragmatische Lösungen für komplexe Geschäftsanforderungen.',
image: {
alt: 'Damjan Savić - Senior Fullstack Entwickler & Digital Solutions Consultant Köln | Software Architect | Cloud Expert | KI-Spezialist'
},
buttons: {
learnMore: 'Mehr erfahren',
downloadCV: 'CV herunterladen'
}
} as const;
export type AboutTranslations = typeof about;
@@ -0,0 +1,86 @@
// src/i18n/locales/de/pages/home/experience.ts
export const experience = {
title: 'Berufserfahrung',
navigation: {
prev: '←',
next: '→'
},
positions: [
{
role: 'Process Automation Specialist',
company: 'Everlast Consulting GmbH',
period: '12/2024 - HEUTE',
highlights: [
'Entwicklung von KI-Agenten mit n8n und Zapier',
'Aufbau von Web-Scraping-Lösungen',
'Migration von Power Automate zu n8n'
]
},
{
role: 'Consultant Digital Solutions',
company: 'Ritter Digital GmbH',
period: '08/2023 - 11/2024',
highlights: [
'Backend-Services auf dedizierten Servern',
'KI-Integration via Power Automate',
'RFID/IoT-Lösungen mit Zebra-Hardware'
]
},
{
role: 'ERP-Integrationsspezialist & E-Commerce-Entwickler',
company: 'Joyce & Girls',
period: '01/2023 - 08/2023',
highlights: [
'ApparelMagic & TradeByte Integration',
'MariaDB Middleware-Entwicklung',
'Windows Server Administration',
'Shopify-Optimierung'
]
},
{
role: 'RPA Developer & E-Commerce Manager',
company: 'C&S Marketing',
period: '08/2022 - 01/2023',
highlights: [
'Shopware 6 & JTL Integration',
'Python Automatisierung',
'Google Ads Optimierung',
'CMS Management'
]
},
{
role: 'E-Commerce Developer',
company: 'Brands Club GmbH',
period: '08/2021 - 07/2022',
highlights: [
'Shopify & JTL Integration',
'Server Administration',
'Content Production',
'Marketing Automation'
]
},
{
role: 'E-Commerce Developer',
company: 'Feine Uhren Eupen',
period: '01/2021 - 08/2021',
highlights: [
'Shopware 5 Development',
'Produktfotografie',
'Sales im Luxusuhrensegment',
'E-Commerce Management'
]
},
{
role: 'Online Marketing Manager',
company: 'Ufer8, Ambis, Teatro & Die Halle Tor 2',
period: '01/2018 - 12/2020',
highlights: [
'Social Media Content',
'Event Marketing',
'Veranstaltungsorganisation',
'Marketing Automation'
]
}
]
} as const;
export type ExperienceTranslations = typeof experience;
@@ -0,0 +1,27 @@
// src/i18n/locales/de/pages/home/expertise.ts
export const expertise = {
title: 'Bereiche meiner Expertise',
areas: [
{
title: 'ERP Integration',
description: 'Expert für JTL-Wawi Implementierung, Konfiguration und Optimierung. Spezialisiert auf Warenwirtschaftssysteme und POS-Integration.',
skills: ['JTL-Wawi', 'JTL-WMS', 'JTL-POS', 'Apparel Magic']
},
{
title: 'Entwicklung',
description: 'Full-Stack Entwicklung mit Fokus auf Python-Automatisierung, React Frontends und Datenbankdesign.',
skills: ['Python', 'React/Next.js', 'MariaDB', 'Docker']
},
{
title: 'E-Commerce',
description: 'Umfangreiche Erfahrung mit verschiedenen E-Commerce-Plattformen und Marktplatz-Integrationen.',
skills: ['Shopify', 'Shopware', 'WooCommerce', 'API Integration']
},
{
title: 'Digitales Marketing',
description: 'Strategischer Ansatz im digitalen Marketing mit Fokus auf Automatisierung und Analyse.',
skills: ['Google Ads', 'Meta Ads', 'SEO', 'Analytics']
}
]
} as const;
export type ExpertiseTranslations = typeof expertise;
@@ -0,0 +1,32 @@
// src/i18n/locales/de/pages/home/hero.ts
export const hero = {
title: 'AI & AUTOMATION SPECIALIST',
name: 'DAMJAN SAVIĆ',
subtitle: 'KI-AGENTEN | VOICE AI | PROZESSAUTOMATISIERUNG',
description: 'Entwicklung von KI-Agenten und Automatisierungslösungen. Von Voice-AI-Plattformen bis zu autonomen Web-Agenten.',
currentRole: 'Aktuell @ Everlast Consulting GmbH',
cta: 'KONTAKT AUFNEHMEN',
image: {
alt: 'Damjan Savić - AI & Automation Specialist | KI-Agenten, Voice AI & Prozessautomatisierung'
},
social: {
getInTouch: 'Kontaktieren Sie Damjan Savić',
linkedin: {
title: 'LinkedIn Profil von Damjan Savić besuchen'
},
github: {
title: 'GitHub Profil von Damjan Savić besuchen'
},
email: {
title: 'E-Mail an Damjan Savić senden'
}
},
navigation: {
experience: 'ERFAHRUNG',
skills: 'FÄHIGKEITEN',
projects: 'PROJEKTE',
about: 'ÜBER MICH'
}
} as const;
export type HeroTranslations = typeof hero;
@@ -0,0 +1,18 @@
// src/i18n/locales/de/pages/home/index.ts
import { hero } from './hero';
import { about } from './about';
import { experience } from './experience';
import { expertise } from './expertise';
import { skills } from './skills';
import { projects } from './projects';
export const home = {
hero,
about,
experience,
expertise,
skills,
projects
} as const;
export type HomeTranslations = typeof home;
@@ -0,0 +1,10 @@
// src/i18n/locales/de/pages/home/projects.ts
export const projects = {
title: 'Portfolio',
viewAll: 'Alle Projekte →',
loading: 'Projekte werden geladen...',
error: {
loading: 'Fehler beim Laden der Projekte'
}
} as const;
export type ProjectsTranslations = typeof projects;
@@ -0,0 +1,41 @@
// src/i18n/locales/de/pages/home/skills.ts
export const skills = {
title: 'Fähigkeiten',
skills: [
{
name: 'AI & LLMs',
level: 90,
description: 'GPT-4, Claude API, Vapi Voice AI'
},
{
name: 'Automation',
level: 85,
description: 'n8n, Zapier, Power Automate'
},
{
name: 'Python',
level: 90,
description: 'Backend, APIs, Automation'
},
{
name: 'TypeScript',
level: 85,
description: 'React, Next.js, Node.js'
},
{
name: 'Datenbank',
level: 85,
description: 'PostgreSQL, Supabase, MariaDB'
},
{
name: 'DevOps',
level: 75,
description: 'Docker, Vercel, Dedicated Servers'
}
],
aria: {
skillLevel: 'Fähigkeitsniveau',
selectSkill: 'Fähigkeit auswählen'
}
} as const;
export type SkillsTranslations = typeof skills;