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:
@@ -0,0 +1,411 @@
|
||||
{
|
||||
"meta": {
|
||||
"site": {
|
||||
"name": "Damjan Savic",
|
||||
"title": "Damjan Savic | Fullstack, IoT & AI Developer",
|
||||
"subtitle": "Scalable Software Solutions with IoT and AI Integration",
|
||||
"description": "As a fullstack developer from Cologne, Damjan Savic specializes in developing scalable software solutions with IoT and AI integration."
|
||||
},
|
||||
"author": {
|
||||
"name": "Damjan Savic",
|
||||
"role": "Senior Fullstack Developer & Digital Solutions Consultant",
|
||||
"location": "Cologne, Germany",
|
||||
"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": "Developer of custom solutions for process automation",
|
||||
"nav": {
|
||||
"home": "Home",
|
||||
"about": "About",
|
||||
"services": "Services",
|
||||
"portfolio": "Portfolio",
|
||||
"blog": "Blog",
|
||||
"contact": "Contact"
|
||||
},
|
||||
"actions": {
|
||||
"readMore": "Read More",
|
||||
"viewMore": "View More",
|
||||
"viewAll": "View All",
|
||||
"back": "Back",
|
||||
"close": "Close",
|
||||
"submit": "Submit",
|
||||
"loading": "Loading..."
|
||||
},
|
||||
"errors": {
|
||||
"generic": "An error has occurred",
|
||||
"notFound": "Page not found",
|
||||
"loading": "Error loading",
|
||||
"return": "Return to homepage"
|
||||
},
|
||||
"cookies": {
|
||||
"message": "This website uses cookies to improve your browsing experience. Data is not shared with third parties.",
|
||||
"accept": "Accept Cookies",
|
||||
"decline": "Decline",
|
||||
"necessary": "Necessary Cookies",
|
||||
"necessaryDesc": "Required for basic website functionality",
|
||||
"analytics": "Analytics Cookies",
|
||||
"analyticsDesc": "For analytics to improve the website",
|
||||
"learnMore": "Learn More"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"main": {
|
||||
"home": "Home",
|
||||
"about": "About",
|
||||
"portfolio": "Portfolio",
|
||||
"blog": "Blog",
|
||||
"contact": "Contact"
|
||||
},
|
||||
"admin": {
|
||||
"login": "Login",
|
||||
"dashboard": "Dashboard",
|
||||
"logout": "Logout"
|
||||
},
|
||||
"footer": {
|
||||
"legal": {
|
||||
"privacy": "Privacy Policy",
|
||||
"terms": "Terms & Conditions",
|
||||
"imprint": "Imprint"
|
||||
}
|
||||
},
|
||||
"mobile": {
|
||||
"menu": "Menu",
|
||||
"close": "Close",
|
||||
"open": "Open Menu"
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"sections": {
|
||||
"contact": {
|
||||
"title": "Contact",
|
||||
"email": "info@damjan-savic.com",
|
||||
"location": "Cologne, Germany"
|
||||
},
|
||||
"navigation": {
|
||||
"title": "Navigation",
|
||||
"links": {
|
||||
"portfolio": "Portfolio",
|
||||
"blog": "Blog",
|
||||
"about": "About",
|
||||
"contact": "Contact"
|
||||
}
|
||||
},
|
||||
"social": {
|
||||
"title": "Social Media"
|
||||
}
|
||||
},
|
||||
"legal": {
|
||||
"copyright": "All rights reserved",
|
||||
"links": {
|
||||
"privacy": "Privacy Policy",
|
||||
"imprint": "Imprint",
|
||||
"terms": "Terms of Service"
|
||||
}
|
||||
}
|
||||
},
|
||||
"pages": {
|
||||
"home": {
|
||||
"hero": {
|
||||
"title": "AI & AUTOMATION SPECIALIST",
|
||||
"name": "DAMJAN SAVIC",
|
||||
"subtitle": "AI AGENTS | VOICE AI | PROCESS AUTOMATION",
|
||||
"description": "Building AI agents and automation solutions. From voice AI platforms to autonomous web agents.",
|
||||
"currentRole": "Currently @ Everlast Consulting GmbH",
|
||||
"cta": "GET IN TOUCH",
|
||||
"navigation": {
|
||||
"experience": "EXPERIENCE",
|
||||
"skills": "SKILLS",
|
||||
"projects": "PROJECTS",
|
||||
"about": "ABOUT"
|
||||
}
|
||||
},
|
||||
"about": {
|
||||
"title": "About Damjan Savic - Senior Fullstack Developer & Digital Solutions Consultant",
|
||||
"content": "Damjan Savic is an AI & Automation Specialist focusing on Voice AI, autonomous agents, and process automation. With an M.A. in Software Development and over 7 years of experience developing digital solutions, he combines technical expertise with strategic business understanding.",
|
||||
"buttons": {
|
||||
"learnMore": "Learn More",
|
||||
"downloadCV": "Download CV"
|
||||
}
|
||||
},
|
||||
"experience": {
|
||||
"title": "Work Experience",
|
||||
"positions": [
|
||||
{
|
||||
"role": "Process Automation Specialist",
|
||||
"company": "Everlast Consulting GmbH",
|
||||
"period": "12/2024 - PRESENT",
|
||||
"highlights": [
|
||||
"Development of AI agents with n8n and Zapier",
|
||||
"Building web scraping solutions",
|
||||
"Migration from Power Automate to n8n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"role": "Consultant Digital Solutions",
|
||||
"company": "Ritter Digital GmbH",
|
||||
"period": "08/2023 - 11/2024",
|
||||
"highlights": [
|
||||
"Backend services on dedicated servers",
|
||||
"AI integration via Power Automate",
|
||||
"RFID/IoT solutions with Zebra hardware"
|
||||
]
|
||||
},
|
||||
{
|
||||
"role": "ERP Integration Specialist & E-Commerce Developer",
|
||||
"company": "Joyce & Girls",
|
||||
"period": "01/2023 - 08/2023",
|
||||
"highlights": [
|
||||
"ApparelMagic & TradeByte Integration",
|
||||
"MariaDB Middleware Development",
|
||||
"Windows Server Administration",
|
||||
"Shopify Optimization"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"skills": {
|
||||
"title": "Skills",
|
||||
"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": "Database",
|
||||
"level": 85,
|
||||
"description": "PostgreSQL, Supabase, MariaDB"
|
||||
},
|
||||
{
|
||||
"name": "DevOps",
|
||||
"level": 75,
|
||||
"description": "Docker, Vercel, Dedicated Servers"
|
||||
}
|
||||
]
|
||||
},
|
||||
"projects": {
|
||||
"title": "Portfolio",
|
||||
"viewAll": "All Projects"
|
||||
}
|
||||
},
|
||||
"about": {
|
||||
"seo": {
|
||||
"title": "About Me - Damjan Savic | Fullstack Developer & AI Specialist",
|
||||
"description": "Learn more about Damjan Savic - AI & Automation Specialist focusing on Voice AI, autonomous agents, and process automation from Cologne."
|
||||
},
|
||||
"hero": {
|
||||
"aboutMe": "FULLSTACK DEVELOPER COLOGNE - DAMJAN SAVIC",
|
||||
"title": "Python Developer Cologne & React Developer - Damjan Savic",
|
||||
"description": "As a Fullstack Developer in Cologne, Damjan Savic is your Freelance Developer for Python automation and React development."
|
||||
}
|
||||
},
|
||||
"contact": {
|
||||
"breadcrumb": "CONTACT",
|
||||
"hero": {
|
||||
"title": "Let's Work Together",
|
||||
"subtitle": "Have a project in mind? Let's discuss how we can help you achieve your goals."
|
||||
},
|
||||
"contactInfo": {
|
||||
"title": "Contact Information",
|
||||
"description": "You can reach me through the following channels",
|
||||
"address": {
|
||||
"label": "Office Location",
|
||||
"value": "Rotdornallee, Cologne"
|
||||
},
|
||||
"phone": {
|
||||
"label": "Phone",
|
||||
"value": "+49 175 695 0979"
|
||||
},
|
||||
"email": {
|
||||
"label": "Email",
|
||||
"value": "info@damjan-savic.com"
|
||||
}
|
||||
},
|
||||
"contactForm": {
|
||||
"title": "Contact Me",
|
||||
"description": "Have questions or want to collaborate? Send me a message.",
|
||||
"name": {
|
||||
"label": "Name",
|
||||
"placeholder": "Your full name"
|
||||
},
|
||||
"email": {
|
||||
"label": "Email",
|
||||
"placeholder": "your.email@example.com"
|
||||
},
|
||||
"message": {
|
||||
"label": "Message",
|
||||
"placeholder": "Your message to me..."
|
||||
},
|
||||
"submit": "Send Message",
|
||||
"successMessage": "Thank you for your message! I will get back to you as soon as possible.",
|
||||
"errorMessage": "Sorry, there was an error sending your message."
|
||||
}
|
||||
},
|
||||
"privacy": {
|
||||
"seo": {
|
||||
"title": "Privacy Policy",
|
||||
"description": "Privacy Policy for the portfolio website of Damjan Savic"
|
||||
},
|
||||
"content": {
|
||||
"title": "Privacy Policy",
|
||||
"lastUpdated": "Last updated: March 10, 2024"
|
||||
}
|
||||
},
|
||||
"terms": {
|
||||
"seo": {
|
||||
"title": "Terms and Conditions",
|
||||
"description": "Terms and Conditions for the portfolio website of Damjan Savic"
|
||||
},
|
||||
"content": {
|
||||
"title": "Terms and Conditions",
|
||||
"lastUpdated": "Last updated: March 10, 2024"
|
||||
}
|
||||
},
|
||||
"notfound": {
|
||||
"title": "Page Not Found",
|
||||
"description": "The requested page does not exist or has been moved.",
|
||||
"backHome": "Return to Homepage"
|
||||
}
|
||||
},
|
||||
"portfolio": {
|
||||
"seo": {
|
||||
"title": "Portfolio - Fullstack Developer Cologne Damjan Savic | Python & React Projects",
|
||||
"description": "Portfolio of Freelance Developer Cologne Damjan Savic: Python Automation, OLLAMA AI Integration, ERP System Integration, E-Commerce Development."
|
||||
},
|
||||
"sections": {
|
||||
"title": "Software Developer Cologne - Portfolio Damjan Savic",
|
||||
"subtitle": "Python Developer Cologne & React Developer - Successful Projects"
|
||||
},
|
||||
"filters": {
|
||||
"all": "All",
|
||||
"categories": {
|
||||
"Data Science": "Data Science",
|
||||
"AI Development": "AI Development",
|
||||
"Integration": "Integration",
|
||||
"Full-Stack Development": "Full-Stack Development",
|
||||
"Data Processing": "Data Processing"
|
||||
}
|
||||
},
|
||||
"ui": {
|
||||
"loading": "Loading projects...",
|
||||
"noProjects": "No projects found",
|
||||
"viewProject": "View Project",
|
||||
"backToPortfolio": "Back to Portfolio",
|
||||
"technologies": "Technologies"
|
||||
}
|
||||
},
|
||||
"blog": {
|
||||
"meta": {
|
||||
"title": "Blog by Damjan Savic - JTL Integration & Digital Solutions",
|
||||
"description": "Insights and best practices from Damjan Savic on JTL-WaWi, e-commerce, and digital transformation.",
|
||||
"header": {
|
||||
"title": "Insights & Best Practices from Damjan Savic",
|
||||
"subtitle": "Damjan Savic shares insights and best practices on JTL-WaWi, e-commerce, and digital transformation"
|
||||
}
|
||||
},
|
||||
"ui": {
|
||||
"readMore": "Read More",
|
||||
"loading": {
|
||||
"posts": "Loading blog posts...",
|
||||
"post": "Loading blog post..."
|
||||
},
|
||||
"errors": {
|
||||
"posts": "Error loading blog posts",
|
||||
"post": "The requested blog post does not exist or has been moved."
|
||||
},
|
||||
"backToBlog": "Back to Blog",
|
||||
"publishedOn": "Published on",
|
||||
"category": "Category",
|
||||
"tags": "Tags"
|
||||
}
|
||||
},
|
||||
"login": {
|
||||
"seo": {
|
||||
"title": "Login",
|
||||
"description": "Sign in to access the dashboard"
|
||||
},
|
||||
"header": {
|
||||
"title": "Sign in to Dashboard"
|
||||
},
|
||||
"form": {
|
||||
"email": {
|
||||
"label": "Email address",
|
||||
"placeholder": "your.email@example.com"
|
||||
},
|
||||
"password": {
|
||||
"label": "Password",
|
||||
"placeholder": "Your password"
|
||||
},
|
||||
"submit": {
|
||||
"default": "Sign in",
|
||||
"loading": "Signing in..."
|
||||
},
|
||||
"errors": {
|
||||
"default": "An error occurred",
|
||||
"invalidCredentials": "Invalid credentials"
|
||||
}
|
||||
},
|
||||
"security": {
|
||||
"secureConnection": "Secure connection"
|
||||
}
|
||||
},
|
||||
"dashboard": {
|
||||
"header": {
|
||||
"title": "Analytics Dashboard",
|
||||
"activeUsers": "active users"
|
||||
},
|
||||
"metrics": {
|
||||
"pageViews": {
|
||||
"title": "Page Views",
|
||||
"perMinute": "per minute"
|
||||
},
|
||||
"uniqueVisitors": {
|
||||
"title": "Unique Visitors",
|
||||
"currentlyActive": "currently active"
|
||||
},
|
||||
"conversions": {
|
||||
"title": "Conversions",
|
||||
"rate": "conversion rate"
|
||||
},
|
||||
"timeOnSite": {
|
||||
"title": "Avg. Time on Site",
|
||||
"bounceRate": "bounce rate"
|
||||
}
|
||||
},
|
||||
"topPages": {
|
||||
"title": "Top Pages",
|
||||
"columns": {
|
||||
"path": "Path",
|
||||
"views": "Views",
|
||||
"change": "Change"
|
||||
}
|
||||
},
|
||||
"status": {
|
||||
"loading": "Loading Dashboard...",
|
||||
"error": "Error loading data",
|
||||
"notAuthenticated": "Please sign in"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user