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
+411
View File
@@ -0,0 +1,411 @@
{
"meta": {
"site": {
"name": "Damjan Savic",
"title": "Damjan Savic | Fullstack-, IoT- & KI-Entwickler",
"subtitle": "Skalierbare Softwareloesungen mit IoT- und KI-Integration",
"description": "Als Fullstack-Entwickler aus Koeln spezialisiert sich Damjan Savic auf die Entwicklung skalierbarer Softwareloesungen mit IoT- und KI-Integration."
},
"author": {
"name": "Damjan Savic",
"role": "Senior Fullstack Developer & Digital Solutions Consultant",
"location": "Koeln, Deutschland",
"email": "info@damjan-savic.com"
},
"social": {
"linkedin": "https://www.linkedin.com/in/damjansavic/",
"github": "https://github.com/damjansavic",
"email": "info@damjan-savic.com"
}
},
"common": {
"siteTitle": "Damjan Savic - Digital Solutions & JTL Integration",
"siteDescription": "Entwickler individueller Loesungen zur Automatisierung von Prozessen",
"nav": {
"home": "Start",
"about": "Ueber mich",
"services": "Leistungen",
"portfolio": "Portfolio",
"blog": "Blog",
"contact": "Kontakt"
},
"actions": {
"readMore": "Weiterlesen",
"viewMore": "Mehr anzeigen",
"viewAll": "Alle anzeigen",
"back": "Zurueck",
"close": "Schliessen",
"submit": "Absenden",
"loading": "Laedt..."
},
"errors": {
"generic": "Ein Fehler ist aufgetreten",
"notFound": "Seite nicht gefunden",
"loading": "Fehler beim Laden",
"return": "Zurueck zur Startseite"
},
"cookies": {
"message": "Diese Website verwendet Cookies, um Ihr Browsing-Erlebnis zu verbessern. Die Daten werden nicht an Dritte weitergegeben.",
"accept": "Cookies akzeptieren",
"decline": "Ablehnen",
"necessary": "Notwendige Cookies",
"necessaryDesc": "Fuer grundlegende Funktionen der Website",
"analytics": "Analyse-Cookies",
"analyticsDesc": "Fuer Analysen zur Verbesserung der Website",
"learnMore": "Mehr erfahren"
}
},
"navigation": {
"main": {
"home": "Startseite",
"about": "Ueber mich",
"portfolio": "Portfolio",
"blog": "Blog",
"contact": "Kontakt"
},
"admin": {
"login": "Anmelden",
"dashboard": "Dashboard",
"logout": "Abmelden"
},
"footer": {
"legal": {
"privacy": "Datenschutz",
"terms": "AGB",
"imprint": "Impressum"
}
},
"mobile": {
"menu": "Menue",
"close": "Schliessen",
"open": "Menue oeffnen"
}
},
"footer": {
"sections": {
"contact": {
"title": "Kontakt",
"email": "info@damjan-savic.com",
"location": "Koeln, Deutschland"
},
"navigation": {
"title": "Navigation",
"links": {
"portfolio": "Portfolio",
"blog": "Blog",
"about": "Ueber mich",
"contact": "Kontakt"
}
},
"social": {
"title": "Social Media"
}
},
"legal": {
"copyright": "Alle Rechte vorbehalten",
"links": {
"privacy": "Datenschutz",
"imprint": "Impressum",
"terms": "AGB"
}
}
},
"pages": {
"home": {
"hero": {
"title": "AI & AUTOMATION SPECIALIST",
"name": "DAMJAN SAVIC",
"subtitle": "KI-AGENTEN | VOICE AI | PROZESSAUTOMATISIERUNG",
"description": "Entwicklung von KI-Agenten und Automatisierungsloesungen. Von Voice-AI-Plattformen bis zu autonomen Web-Agenten.",
"currentRole": "Aktuell @ Everlast Consulting GmbH",
"cta": "KONTAKT AUFNEHMEN",
"navigation": {
"experience": "ERFAHRUNG",
"skills": "FAEHIGKEITEN",
"projects": "PROJEKTE",
"about": "UEBER MICH"
}
},
"about": {
"title": "Ueber Damjan Savic - Senior Fullstack Entwickler & Digital Solutions Consultant",
"content": "Damjan Savic ist AI & Automation Specialist mit Fokus auf Voice AI, autonome Agenten und Prozessautomatisierung. Mit einem M.A. in Software Development und ueber 7 Jahren Erfahrung in der Entwicklung digitaler Loesungen verbindet er technische Expertise mit strategischem Geschaeftsverstaendnis.",
"buttons": {
"learnMore": "Mehr erfahren",
"downloadCV": "CV herunterladen"
}
},
"experience": {
"title": "Berufserfahrung",
"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-Loesungen",
"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-Loesungen 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"
]
}
]
},
"skills": {
"title": "Faehigkeiten",
"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"
}
]
},
"projects": {
"title": "Portfolio",
"viewAll": "Alle Projekte"
}
},
"about": {
"seo": {
"title": "Ueber Mich - Damjan Savic | Fullstack Entwickler & KI-Spezialist",
"description": "Erfahren Sie mehr ueber Damjan Savic - AI & Automation Specialist mit Fokus auf Voice AI, autonome Agenten und Prozessautomatisierung aus Koeln."
},
"hero": {
"aboutMe": "FULLSTACK ENTWICKLER KOELN - DAMJAN SAVIC",
"title": "Python Entwickler Koeln & React Developer - Damjan Savic",
"description": "Als Fullstack Entwickler Koeln ist Damjan Savic Ihr Freelance Developer fuer Python Automatisierung und React Entwicklung."
}
},
"contact": {
"breadcrumb": "KONTAKT",
"hero": {
"title": "Lassen Sie uns zusammenarbeiten",
"subtitle": "Sie haben ein Projekt im Sinn? Lassen Sie uns besprechen, wie wir Ihnen bei der Erreichung Ihrer Ziele helfen koennen."
},
"contactInfo": {
"title": "Kontaktinformationen",
"description": "Sie koennen mich ueber folgende Wege erreichen",
"address": {
"label": "Buerostandort",
"value": "Rotdornallee, Koeln"
},
"phone": {
"label": "Telefon",
"value": "+49 175 695 0979"
},
"email": {
"label": "E-Mail",
"value": "info@damjan-savic.com"
}
},
"contactForm": {
"title": "Kontaktieren Sie mich",
"description": "Haben Sie Fragen oder moechten Sie zusammenarbeiten? Schreiben Sie mir eine Nachricht.",
"name": {
"label": "Name",
"placeholder": "Ihr vollstaendiger Name"
},
"email": {
"label": "E-Mail",
"placeholder": "ihre.email@beispiel.de"
},
"message": {
"label": "Nachricht",
"placeholder": "Ihre Nachricht an mich..."
},
"submit": "Nachricht senden",
"successMessage": "Vielen Dank fuer Ihre Nachricht! Ich werde mich so schnell wie moeglich bei Ihnen melden.",
"errorMessage": "Entschuldigung, beim Senden Ihrer Nachricht ist ein Fehler aufgetreten."
}
},
"privacy": {
"seo": {
"title": "Datenschutzerklaerung",
"description": "Datenschutzerklaerung fuer die Portfolio-Website von Damjan Savic"
},
"content": {
"title": "Datenschutzerklaerung",
"lastUpdated": "Zuletzt aktualisiert: 10. Maerz 2024"
}
},
"terms": {
"seo": {
"title": "Allgemeine Geschaeftsbedingungen",
"description": "Allgemeine Geschaeftsbedingungen fuer die Portfolio-Website von Damjan Savic"
},
"content": {
"title": "Allgemeine Geschaeftsbedingungen",
"lastUpdated": "Zuletzt aktualisiert: 10. Maerz 2024"
}
},
"notfound": {
"title": "Seite nicht gefunden",
"description": "Die angeforderte Seite existiert nicht oder wurde verschoben.",
"backHome": "Zurueck zur Startseite"
}
},
"portfolio": {
"seo": {
"title": "Portfolio - Fullstack Entwickler Koeln Damjan Savic | Python & React Projekte",
"description": "Portfolio von Freelance Developer Koeln Damjan Savic: Python Automatisierung, OLLAMA KI Integration, ERP System Integration, E-Commerce Entwicklung."
},
"sections": {
"title": "Software Entwickler Koeln - Portfolio Damjan Savic",
"subtitle": "Python Entwickler Koeln & React Developer - Erfolgreiche Projekte"
},
"filters": {
"all": "Alle",
"categories": {
"Data Science": "Data Science",
"AI Development": "KI-Entwicklung",
"Integration": "Integration",
"Full-Stack Development": "Full-Stack Entwicklung",
"Data Processing": "Datenverarbeitung"
}
},
"ui": {
"loading": "Projekte werden geladen...",
"noProjects": "Keine Projekte gefunden",
"viewProject": "Projekt ansehen",
"backToPortfolio": "Zurueck zum Portfolio",
"technologies": "Technologien"
}
},
"blog": {
"meta": {
"title": "Blog von Damjan Savic - JTL Integration & Digital Solutions",
"description": "Insights und Best Practices von Damjan Savic zu JTL-WaWi, E-Commerce und digitaler Transformation.",
"header": {
"title": "Insights & Best Practices von Damjan Savic",
"subtitle": "Damjan Savic teilt Insights und Best Practices zu JTL-WaWi, E-Commerce und digitaler Transformation"
}
},
"ui": {
"readMore": "Weiterlesen",
"loading": {
"posts": "Blogbeitraege werden geladen...",
"post": "Blogbeitrag wird geladen..."
},
"errors": {
"posts": "Fehler beim Laden der Blogbeitraege",
"post": "Der gesuchte Blogbeitrag existiert nicht oder wurde verschoben."
},
"backToBlog": "Zurueck zum Blog",
"publishedOn": "Veroeffentlicht am",
"category": "Kategorie",
"tags": "Tags"
}
},
"login": {
"seo": {
"title": "Login",
"description": "Anmelden fuer Zugriff auf das Dashboard"
},
"header": {
"title": "Im Dashboard anmelden"
},
"form": {
"email": {
"label": "E-Mail-Adresse",
"placeholder": "ihre.email@beispiel.de"
},
"password": {
"label": "Passwort",
"placeholder": "Ihr Passwort"
},
"submit": {
"default": "Anmelden",
"loading": "Anmeldung laeuft..."
},
"errors": {
"default": "Ein Fehler ist aufgetreten",
"invalidCredentials": "Ungueltige Anmeldedaten"
}
},
"security": {
"secureConnection": "Sichere Verbindung"
}
},
"dashboard": {
"header": {
"title": "Analytics Dashboard",
"activeUsers": "aktive Nutzer"
},
"metrics": {
"pageViews": {
"title": "Seitenaufrufe",
"perMinute": "pro Minute"
},
"uniqueVisitors": {
"title": "Eindeutige Besucher",
"currentlyActive": "aktuell aktiv"
},
"conversions": {
"title": "Konversionen",
"rate": "Konversionsrate"
},
"timeOnSite": {
"title": "Durchschn. Besuchszeit",
"bounceRate": "Absprungrate"
}
},
"topPages": {
"title": "Top-Seiten",
"columns": {
"path": "Pfad",
"views": "Aufrufe",
"change": "Aenderung"
}
},
"status": {
"loading": "Lade Dashboard...",
"error": "Fehler beim Laden der Daten",
"notAuthenticated": "Bitte melden Sie sich an"
}
}
}