Initial commit: Portfolio Website

Vollständige Next.js 15 Portfolio-Website mit:
- Blog-System mit 100+ Artikeln
- Supabase-Integration
- Responsive Design mit Tailwind CSS
- TypeScript-Konfiguration
- Testing-Setup mit Vitest und Playwright

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-02-01 15:07:20 +01:00
co-authored by Claude Opus 4.5
commit e1bbe5455d
315 changed files with 94124 additions and 0 deletions
+771
View File
@@ -0,0 +1,771 @@
{
"meta": {
"site": {
"name": "Damjan Savić",
"title": "Damjan Savić | Fullstack, IoT & AI Developer",
"subtitle": "Scalable Software Solutions with IoT and AI Integration",
"description": "As a fullstack developer from Cologne, Damjan Savić specializes in developing scalable software solutions with IoT and AI integration.",
"keywords": [
"Fullstack Developer",
"AI Developer Germany",
"AI Agent Development",
"Process Automation",
"Voice AI Developer",
"n8n Automation Expert",
"Python Developer",
"React Developer",
"TypeScript Developer",
"Remote Developer Europe",
"Cologne Germany Developer",
"SaaS Development"
]
},
"author": {
"name": "Damjan Savić",
"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 Savić - 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",
"services": "Services",
"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": "FULLSTACK DEVELOPER",
"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",
"image": {
"alt": "Damjan Savić - Fullstack Developer"
},
"social": {
"getInTouch": "Get in touch"
},
"navigation": {
"experience": "EXPERIENCE",
"skills": "SKILLS",
"projects": "PROJECTS",
"about": "ABOUT"
}
},
"gallery": {
"title": "Insights",
"description": "Professional moments from my daily work"
},
"about": {
"title": "About Damjan Savić - Senior Fullstack Developer & Digital Solutions Consultant",
"content": "Damjan Savić 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 Savić | Fullstack Developer & AI Specialist",
"description": "Learn more about Damjan Savić - AI & Automation Specialist focusing on Voice AI, autonomous agents, and process automation from Cologne."
},
"hero": {
"aboutMe": "About Me",
"title": "FULLSTACK DEVELOPER COLOGNE",
"description": "As an AI & Automation Specialist with over 7 years of experience, I develop scalable solutions for complex business processes. My focus is on Voice AI, autonomous agents, and process automation.",
"expertise": {
"processAutomation": {
"title": "Process Automation",
"description": "Automation of complex business processes with n8n, Zapier and Python"
},
"systemIntegration": {
"title": "System Integration",
"description": "Seamless integration of ERP, CRM and e-commerce systems"
},
"customDevelopment": {
"title": "Custom Development",
"description": "Tailored software solutions with Python, TypeScript and React"
}
},
"languages": {
"python": "Python",
"typescript": "TypeScript",
"react": "React",
"nextjs": "Next.js",
"nodejs": "Node.js",
"sql": "SQL"
}
},
"skills": {
"title": "Skills & Expertise",
"description": "My technical skills and competencies acquired over 7+ years of professional experience.",
"skillGroups": [
{
"category": "Backend & Automation",
"items": [
{ "name": "Python", "level": 90 },
{ "name": "n8n / Zapier", "level": 85 },
{ "name": "Node.js", "level": 80 },
{ "name": "FastAPI", "level": 85 }
]
},
{
"category": "Frontend",
"items": [
{ "name": "React", "level": 85 },
{ "name": "TypeScript", "level": 85 },
{ "name": "Next.js", "level": 80 },
{ "name": "Tailwind CSS", "level": 90 }
]
},
{
"category": "Databases & Cloud",
"items": [
{ "name": "PostgreSQL", "level": 85 },
{ "name": "Supabase", "level": 80 },
{ "name": "Docker", "level": 75 },
{ "name": "Azure", "level": 70 }
]
}
]
},
"workflow": {
"title": "My Workflow",
"description": "Structured process from requirements analysis to successful implementation.",
"steps": [
{ "number": "01", "title": "Requirements Analysis & Consulting" },
{ "number": "02", "title": "Technical Concept & Architecture" },
{ "number": "03", "title": "Agile Development & Testing" },
{ "number": "04", "title": "Deployment & Integration" },
{ "number": "05", "title": "Monitoring & Optimization" },
{ "number": "06", "title": "Support & Maintenance" }
]
},
"journey": {
"title": "My Journey",
"subtitle": "Education, languages and professional experience",
"education": {
"title": "Education",
"degrees": {
"masters": {
"degree": "M.A. Software Development",
"university": "FOM University of Applied Sciences",
"period": "2021 - 2023"
},
"bachelors": {
"degree": "B.Sc. Business Informatics",
"university": "FOM University of Applied Sciences",
"period": "2017 - 2021"
}
}
},
"languages": {
"title": "Languages",
"items": {
"german": { "name": "German", "level": "Native" },
"english": { "name": "English", "level": "Fluent (C1)" },
"serbian": { "name": "Serbian", "level": "Native" }
}
},
"work": {
"positions": [
{
"title": "Process Automation Specialist",
"period": "12/2024 - Present",
"company": "Everlast Consulting GmbH",
"location": "Cologne",
"highlights": [
"Development of AI agents with n8n and Zapier",
"Building web scraping solutions",
"Migration from Power Automate to n8n"
]
},
{
"title": "Consultant Digital Solutions",
"period": "08/2023 - 11/2024",
"company": "Ritter Digital GmbH",
"location": "Cologne",
"highlights": [
"Backend services on dedicated servers",
"AI integration via Power Automate",
"RFID/IoT solutions with Zebra hardware"
]
},
{
"title": "ERP Integration Specialist",
"period": "01/2023 - 08/2023",
"company": "Joyce & Girls",
"location": "Cologne",
"highlights": [
"ApparelMagic & TradeByte Integration",
"MariaDB Middleware Development",
"Shopify Optimization"
]
}
]
}
}
},
"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"
},
"availabilityNote": "I usually respond within 24 hours."
},
"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..."
},
"characterCounter": "{current}/{max} characters",
"submit": "Send Message",
"submitting": "Sending 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.",
"rateLimit": {
"warning": "You have {count} {count, plural, one {attempt} other {attempts}} remaining",
"error": "Too many requests. Please try again in {time}.",
"blockedUntil": "Rate limit exceeded. You can try again in {time}."
},
"errors": {
"nameRequired": "Name is required",
"emailRequired": "Email is required",
"emailInvalid": "Please enter a valid email address",
"messageRequired": "Message is required"
}
}
},
"privacy": {
"seo": {
"title": "Privacy Policy | Damjan Savić - AI Developer",
"description": "Privacy policy for Damjan Savić portfolio website. Information about data processing, cookies, Google Analytics, Supabase and your GDPR rights."
},
"content": {
"title": "Privacy Policy",
"lastUpdated": "Last updated: January 2025",
"breadcrumb": {
"home": "Home"
},
"intro": {
"title": "Introduction",
"content": "The protection of your personal data is important to me. In this privacy policy, I inform you about how I process your personal data when using this website. This privacy policy complies with the requirements of the General Data Protection Regulation (GDPR) and the German Federal Data Protection Act (BDSG)."
},
"controller": {
"title": "Data Controller",
"name": "Damjan Savić",
"role": "Fullstack Developer & Digital Solutions Consultant",
"email": "Email: info@damjan-savic.com",
"website": "Website: https://damjan-savic.com"
},
"dataCollection": {
"title": "Data Collection on This Website",
"automaticData": {
"title": "Automatically Collected Data",
"content": "When visiting this website, technical data is automatically collected:",
"items": [
"IP address (anonymized)",
"Date and time of access",
"Browser type and version",
"Operating system",
"Referrer URL (previously visited page)",
"Pages visited on this website"
]
},
"contactData": {
"title": "Contact Form and Chatbot",
"content": "When you use the contact form or AI chatbot, the following data is processed:",
"items": [
"Your message and inquiry",
"Email address (for contact form)",
"Time of inquiry",
"Anonymous visitor ID (for chat history)"
]
}
},
"cookies": {
"title": "Cookies and Local Storage",
"intro": "This website uses cookies and local browser storage to ensure functionality and improve user experience.",
"tableHeaders": {
"cookie": "Cookie",
"purpose": "Purpose",
"duration": "Duration"
},
"types": {
"necessary": {
"name": "Technically necessary cookies",
"purpose": "Language settings, session management",
"duration": "Session or up to 1 year"
},
"analytics": {
"name": "Analytics cookies (Google Analytics)",
"purpose": "Website statistics, user behavior",
"duration": "Up to 2 years"
},
"localStorage": {
"name": "Local storage",
"purpose": "Chatbot visitor ID, theme settings",
"duration": "Unlimited (until manually deleted)"
}
},
"management": "You can manage or disable cookies in your browser settings. Note that disabling certain cookies may affect the functionality of the website."
},
"thirdParty": {
"title": "Third-Party Services",
"labels": {
"purpose": "Purpose:",
"dataProcessed": "Data processed:",
"privacy": "Privacy:"
},
"services": {
"googleAnalytics": {
"name": "Google Analytics",
"purpose": "Analysis of user behavior and website performance to improve my services.",
"dataProcessed": "Anonymized IP addresses, page views, time on site, device and browser information, location (country level).",
"privacy": "https://policies.google.com/privacy"
},
"supabase": {
"name": "Supabase",
"purpose": "Storage of chat histories and contact requests in a secure database.",
"dataProcessed": "Chat messages, anonymous visitor IDs, timestamps, contact form data.",
"privacy": "https://supabase.com/privacy"
},
"deepseek": {
"name": "Deepseek API",
"purpose": "AI-powered chatbot for visitor inquiries and portfolio information.",
"dataProcessed": "Chat messages are transmitted to Deepseek to generate AI responses.",
"privacy": "https://www.deepseek.com/privacy"
},
"vercel": {
"name": "Vercel",
"purpose": "Website hosting and edge function delivery.",
"dataProcessed": "Server logs, IP addresses (for security and performance).",
"privacy": "https://vercel.com/legal/privacy-policy"
}
}
},
"legalBasis": {
"title": "Legal Basis for Processing",
"intro": "The processing of your personal data is based on the following legal bases under GDPR:",
"bases": {
"consent": {
"basis": "Art. 6(1)(a) GDPR",
"description": "Consent for analytics and non-essential cookies"
},
"contract": {
"basis": "Art. 6(1)(b) GDPR",
"description": "Contract performance for processing contact requests"
},
"legitimate": {
"basis": "Art. 6(1)(f) GDPR",
"description": "Legitimate interests for technically necessary data processing and website security"
}
}
},
"rights": {
"title": "Your Rights",
"intro": "Under GDPR, you have the following rights regarding your personal data:",
"items": {
"access": {
"right": "Right of Access (Art. 15 GDPR)",
"description": "You can request information about your personal data stored with me."
},
"rectification": {
"right": "Right to Rectification (Art. 16 GDPR)",
"description": "You can request the correction of inaccurate data or completion of your data."
},
"erasure": {
"right": "Right to Erasure (Art. 17 GDPR)",
"description": "You can request the deletion of your data, provided there are no retention obligations."
},
"restriction": {
"right": "Right to Restriction (Art. 18 GDPR)",
"description": "You can request the restriction of processing of your data."
},
"portability": {
"right": "Right to Data Portability (Art. 20 GDPR)",
"description": "You can receive your data in a common format."
},
"object": {
"right": "Right to Object (Art. 21 GDPR)",
"description": "You can object to the processing of your data at any time."
},
"withdraw": {
"right": "Right to Withdraw Consent (Art. 7(3) GDPR)",
"description": "You can withdraw your consent at any time with effect for the future."
},
"complaint": {
"right": "Right to Lodge a Complaint (Art. 77 GDPR)",
"description": "You have the right to lodge a complaint with a supervisory authority."
}
},
"contact": "To exercise your rights, please contact me at: info@damjan-savic.com"
},
"dataRetention": {
"title": "Data Retention",
"content": "Personal data is only stored for as long as necessary for the respective purpose. Contact requests are typically deleted after 3 years, unless longer retention periods apply. Chat histories are automatically deleted or anonymized after 24 hours. Analytics data is stored according to Google Analytics policies (up to 26 months)."
},
"dataSecurity": {
"title": "Data Security",
"content": "This website uses SSL/TLS encryption for secure data transmission. I implement technical and organizational measures to protect your data from unauthorized access, loss, or misuse. All third-party services are carefully selected and must comply with appropriate data protection standards."
},
"changes": {
"title": "Changes to This Privacy Policy",
"content": "I reserve the right to adapt this privacy policy as needed, for example in the event of changes in the legal situation or new features on the website. The current version can always be found on this page."
},
"contact": {
"title": "Contact",
"intro": "For questions about data protection, you can reach me at:",
"name": "Damjan Savić",
"email": "Email: info@damjan-savic.com"
},
"imprint": {
"intro": "For more legal information, please see the",
"link": "Legal Notice"
}
}
},
"terms": {
"seo": {
"title": "Terms and Conditions",
"description": "Terms and Conditions for the portfolio website of Damjan Savić"
},
"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 Savić | Python & React Projects",
"description": "Portfolio of Freelance Developer Cologne Damjan Savić: Python Automation, OLLAMA AI Integration, ERP System Integration, E-Commerce Development."
},
"sections": {
"title": "Software Developer Cologne - Portfolio Damjan Savić",
"subtitle": "Python Developer Cologne & React Developer - Successful Projects"
},
"filters": {
"all": "All",
"categories": {
"AI Development": "AI Development",
"IoT": "IoT",
"Full-Stack": "Full-Stack",
"Enterprise Software": "Enterprise Software",
"E-Commerce": "E-Commerce",
"Developer Tools": "Developer Tools"
}
},
"ui": {
"loading": "Loading projects...",
"noProjects": "No projects found",
"viewProject": "View Project",
"backToPortfolio": "Back to Portfolio",
"technologies": "Technologies"
}
},
"blog": {
"meta": {
"title": "Blog by Damjan Savić - JTL Integration & Digital Solutions",
"description": "Insights and best practices from Damjan Savić on JTL-WaWi, e-commerce, and digital transformation.",
"header": {
"title": "Insights & Best Practices from Damjan Savić",
"subtitle": "Damjan Savić shares insights and best practices on JTL-WaWi, e-commerce, and digital transformation"
}
},
"ui": {
"readMore": "Read More",
"search": {
"placeholder": "Search posts..."
},
"loading": {
"posts": "Loading blog posts...",
"post": "Loading blog post..."
},
"errors": {
"posts": "No posts found",
"post": "The requested blog post does not exist or has been moved."
},
"backToBlog": "Back to Blog",
"publishedOn": "Published on",
"category": "Category",
"tags": "Tags",
"pagination": {
"previous": "Previous",
"next": "Next",
"page": "Page",
"of": "of",
"showing": "Showing {start}-{end} of {total} articles"
}
}
},
"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"
}
}
}