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 Programer",
|
||||
"subtitle": "Skalabilna softverska resenja sa IoT i AI integracijom",
|
||||
"description": "Kao fullstack programer iz Kelna, Damjan Savic se specijalizuje za razvoj skalabilnih softverskih resenja sa IoT i AI integracijom."
|
||||
},
|
||||
"author": {
|
||||
"name": "Damjan Savic",
|
||||
"role": "Senior Fullstack Developer & Digital Solutions Consultant",
|
||||
"location": "Keln, Nemacka",
|
||||
"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 - Digitalna resenja & JTL integracija",
|
||||
"siteDescription": "Programer individualnih resenja za automatizaciju procesa",
|
||||
"nav": {
|
||||
"home": "Pocetna",
|
||||
"about": "O meni",
|
||||
"services": "Usluge",
|
||||
"portfolio": "Portfolio",
|
||||
"blog": "Blog",
|
||||
"contact": "Kontakt"
|
||||
},
|
||||
"actions": {
|
||||
"readMore": "Procitaj vise",
|
||||
"viewMore": "Prikazi vise",
|
||||
"viewAll": "Prikazi sve",
|
||||
"back": "Nazad",
|
||||
"close": "Zatvori",
|
||||
"submit": "Posalji",
|
||||
"loading": "Ucitavanje..."
|
||||
},
|
||||
"errors": {
|
||||
"generic": "Doslo je do greske",
|
||||
"notFound": "Stranica nije pronadjena",
|
||||
"loading": "Greska pri ucitavanju",
|
||||
"return": "Povratak na pocetnu stranicu"
|
||||
},
|
||||
"cookies": {
|
||||
"message": "Ovaj sajt koristi kolacice za poboljsanje vaseg iskustva pregledanja. Podaci se ne dele sa trecim stranama.",
|
||||
"accept": "Prihvati kolacice",
|
||||
"decline": "Odbij",
|
||||
"necessary": "Neophodni kolacici",
|
||||
"necessaryDesc": "Potrebni za osnovne funkcije sajta",
|
||||
"analytics": "Analiticki kolacici",
|
||||
"analyticsDesc": "Za analitiku radi poboljsanja sajta",
|
||||
"learnMore": "Saznaj vise"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"main": {
|
||||
"home": "Pocetna",
|
||||
"about": "O meni",
|
||||
"portfolio": "Portfolio",
|
||||
"blog": "Blog",
|
||||
"contact": "Kontakt"
|
||||
},
|
||||
"admin": {
|
||||
"login": "Prijava",
|
||||
"dashboard": "Kontrolna tabla",
|
||||
"logout": "Odjava"
|
||||
},
|
||||
"footer": {
|
||||
"legal": {
|
||||
"privacy": "Politika privatnosti",
|
||||
"terms": "Uslovi koriscenja",
|
||||
"imprint": "Impresum"
|
||||
}
|
||||
},
|
||||
"mobile": {
|
||||
"menu": "Meni",
|
||||
"close": "Zatvori",
|
||||
"open": "Otvori meni"
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"sections": {
|
||||
"contact": {
|
||||
"title": "Kontakt",
|
||||
"email": "info@damjan-savic.com",
|
||||
"location": "Keln, Nemacka"
|
||||
},
|
||||
"navigation": {
|
||||
"title": "Navigacija",
|
||||
"links": {
|
||||
"portfolio": "Portfolio",
|
||||
"blog": "Blog",
|
||||
"about": "O meni",
|
||||
"contact": "Kontakt"
|
||||
}
|
||||
},
|
||||
"social": {
|
||||
"title": "Drustvene mreze"
|
||||
}
|
||||
},
|
||||
"legal": {
|
||||
"copyright": "Sva prava zadrzana",
|
||||
"links": {
|
||||
"privacy": "Politika privatnosti",
|
||||
"imprint": "Impresum",
|
||||
"terms": "Uslovi koriscenja"
|
||||
}
|
||||
}
|
||||
},
|
||||
"pages": {
|
||||
"home": {
|
||||
"hero": {
|
||||
"title": "AI & AUTOMATION SPECIALIST",
|
||||
"name": "DAMJAN SAVIC",
|
||||
"subtitle": "AI AGENTI | VOICE AI | AUTOMATIZACIJA PROCESA",
|
||||
"description": "Razvoj AI agenata i resenja za automatizaciju. Od voice AI platformi do autonomnih web agenata.",
|
||||
"currentRole": "Trenutno @ Everlast Consulting GmbH",
|
||||
"cta": "KONTAKTIRAJTE ME",
|
||||
"navigation": {
|
||||
"experience": "ISKUSTVO",
|
||||
"skills": "VESTINE",
|
||||
"projects": "PROJEKTI",
|
||||
"about": "O MENI"
|
||||
}
|
||||
},
|
||||
"about": {
|
||||
"title": "O Damjanu Savicu - Senior Fullstack Developer & Digital Solutions Consultant",
|
||||
"content": "Damjan Savic je AI & Automation Specialist sa fokusom na Voice AI, autonomne agente i automatizaciju procesa. Sa MA diplomom iz razvoja softvera i preko 7 godina iskustva u razvoju digitalnih resenja, kombinuje tehnicku ekspertizu sa strateskim razumevanjem poslovanja.",
|
||||
"buttons": {
|
||||
"learnMore": "Saznaj vise",
|
||||
"downloadCV": "Preuzmi CV"
|
||||
}
|
||||
},
|
||||
"experience": {
|
||||
"title": "Radno iskustvo",
|
||||
"positions": [
|
||||
{
|
||||
"role": "Process Automation Specialist",
|
||||
"company": "Everlast Consulting GmbH",
|
||||
"period": "12/2024 - DANAS",
|
||||
"highlights": [
|
||||
"Razvoj AI agenata sa n8n i Zapier",
|
||||
"Izgradnja web scraping resenja",
|
||||
"Migracija sa Power Automate na n8n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"role": "Consultant Digital Solutions",
|
||||
"company": "Ritter Digital GmbH",
|
||||
"period": "08/2023 - 11/2024",
|
||||
"highlights": [
|
||||
"Backend servisi na namenskim serverima",
|
||||
"AI integracija preko Power Automate",
|
||||
"RFID/IoT resenja sa Zebra hardverom"
|
||||
]
|
||||
},
|
||||
{
|
||||
"role": "ERP Integration Specialist & E-Commerce Developer",
|
||||
"company": "Joyce & Girls",
|
||||
"period": "01/2023 - 08/2023",
|
||||
"highlights": [
|
||||
"ApparelMagic & TradeByte integracija",
|
||||
"MariaDB Middleware razvoj",
|
||||
"Windows Server administracija",
|
||||
"Shopify optimizacija"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"skills": {
|
||||
"title": "Vestine",
|
||||
"skills": [
|
||||
{
|
||||
"name": "AI & LLMs",
|
||||
"level": 90,
|
||||
"description": "GPT-4, Claude API, Vapi Voice AI"
|
||||
},
|
||||
{
|
||||
"name": "Automatizacija",
|
||||
"level": 85,
|
||||
"description": "n8n, Zapier, Power Automate"
|
||||
},
|
||||
{
|
||||
"name": "Python",
|
||||
"level": 90,
|
||||
"description": "Backend, APIs, Automatizacija"
|
||||
},
|
||||
{
|
||||
"name": "TypeScript",
|
||||
"level": 85,
|
||||
"description": "React, Next.js, Node.js"
|
||||
},
|
||||
{
|
||||
"name": "Baze podataka",
|
||||
"level": 85,
|
||||
"description": "PostgreSQL, Supabase, MariaDB"
|
||||
},
|
||||
{
|
||||
"name": "DevOps",
|
||||
"level": 75,
|
||||
"description": "Docker, Vercel, Namenski serveri"
|
||||
}
|
||||
]
|
||||
},
|
||||
"projects": {
|
||||
"title": "Portfolio",
|
||||
"viewAll": "Svi projekti"
|
||||
}
|
||||
},
|
||||
"about": {
|
||||
"seo": {
|
||||
"title": "O meni - Damjan Savic | Fullstack Developer & AI Specijalista",
|
||||
"description": "Saznajte vise o Damjanu Savicu - AI & Automation Specialist sa fokusom na Voice AI, autonomne agente i automatizaciju procesa iz Kelna."
|
||||
},
|
||||
"hero": {
|
||||
"aboutMe": "FULLSTACK DEVELOPER KELN - DAMJAN SAVIC",
|
||||
"title": "Python Developer Keln & React Developer - Damjan Savic",
|
||||
"description": "Kao Fullstack Developer u Kelnu, Damjan Savic je vas Freelance Developer za Python automatizaciju i React razvoj."
|
||||
}
|
||||
},
|
||||
"contact": {
|
||||
"breadcrumb": "KONTAKT",
|
||||
"hero": {
|
||||
"title": "Hajde da radimo zajedno",
|
||||
"subtitle": "Imate projekat na umu? Hajde da razgovaramo kako vam mozemo pomoci da ostvarite vase ciljeve."
|
||||
},
|
||||
"contactInfo": {
|
||||
"title": "Kontakt informacije",
|
||||
"description": "Mozete me kontaktirati putem sledecih kanala",
|
||||
"address": {
|
||||
"label": "Lokacija kancelarije",
|
||||
"value": "Rotdornallee, Keln"
|
||||
},
|
||||
"phone": {
|
||||
"label": "Telefon",
|
||||
"value": "+49 175 695 0979"
|
||||
},
|
||||
"email": {
|
||||
"label": "E-mail",
|
||||
"value": "info@damjan-savic.com"
|
||||
}
|
||||
},
|
||||
"contactForm": {
|
||||
"title": "Kontaktirajte me",
|
||||
"description": "Imate pitanja ili zelite da saradjujemo? Posaljite mi poruku.",
|
||||
"name": {
|
||||
"label": "Ime",
|
||||
"placeholder": "Vase puno ime"
|
||||
},
|
||||
"email": {
|
||||
"label": "E-mail",
|
||||
"placeholder": "vas.email@primer.com"
|
||||
},
|
||||
"message": {
|
||||
"label": "Poruka",
|
||||
"placeholder": "Vasa poruka za mene..."
|
||||
},
|
||||
"submit": "Posalji poruku",
|
||||
"successMessage": "Hvala vam na poruci! Javicu vam se sto je pre moguce.",
|
||||
"errorMessage": "Izvinite, doslo je do greske prilikom slanja vase poruke."
|
||||
}
|
||||
},
|
||||
"privacy": {
|
||||
"seo": {
|
||||
"title": "Politika privatnosti",
|
||||
"description": "Politika privatnosti za portfolio sajt Damjana Savica"
|
||||
},
|
||||
"content": {
|
||||
"title": "Politika privatnosti",
|
||||
"lastUpdated": "Poslednje azuriranje: 10. mart 2024."
|
||||
}
|
||||
},
|
||||
"terms": {
|
||||
"seo": {
|
||||
"title": "Uslovi koriscenja",
|
||||
"description": "Uslovi koriscenja za portfolio sajt Damjana Savica"
|
||||
},
|
||||
"content": {
|
||||
"title": "Uslovi koriscenja",
|
||||
"lastUpdated": "Poslednje azuriranje: 10. mart 2024."
|
||||
}
|
||||
},
|
||||
"notfound": {
|
||||
"title": "Stranica nije pronadjena",
|
||||
"description": "Trazena stranica ne postoji ili je premestena.",
|
||||
"backHome": "Povratak na pocetnu"
|
||||
}
|
||||
},
|
||||
"portfolio": {
|
||||
"seo": {
|
||||
"title": "Portfolio - Fullstack Developer Keln Damjan Savic | Python & React Projekti",
|
||||
"description": "Portfolio Freelance Developera iz Kelna Damjana Savica: Python automatizacija, OLLAMA AI integracija, ERP sistem integracija, E-Commerce razvoj."
|
||||
},
|
||||
"sections": {
|
||||
"title": "Software Developer Keln - Portfolio Damjan Savic",
|
||||
"subtitle": "Python Developer Keln & React Developer - Uspesni projekti"
|
||||
},
|
||||
"filters": {
|
||||
"all": "Sve",
|
||||
"categories": {
|
||||
"Data Science": "Data Science",
|
||||
"AI Development": "AI Razvoj",
|
||||
"Integration": "Integracija",
|
||||
"Full-Stack Development": "Full-Stack Razvoj",
|
||||
"Data Processing": "Obrada podataka"
|
||||
}
|
||||
},
|
||||
"ui": {
|
||||
"loading": "Ucitavanje projekata...",
|
||||
"noProjects": "Nema pronadjenih projekata",
|
||||
"viewProject": "Pogledaj projekat",
|
||||
"backToPortfolio": "Nazad na Portfolio",
|
||||
"technologies": "Tehnologije"
|
||||
}
|
||||
},
|
||||
"blog": {
|
||||
"meta": {
|
||||
"title": "Blog Damjana Savica - JTL Integracija & Digitalna Resenja",
|
||||
"description": "Uvidi i najbolje prakse Damjana Savica o JTL-WaWi, e-trgovini i digitalnoj transformaciji.",
|
||||
"header": {
|
||||
"title": "Uvidi & Najbolje prakse Damjana Savica",
|
||||
"subtitle": "Damjan Savic deli uvide i najbolje prakse o JTL-WaWi, e-trgovini i digitalnoj transformaciji"
|
||||
}
|
||||
},
|
||||
"ui": {
|
||||
"readMore": "Procitaj vise",
|
||||
"loading": {
|
||||
"posts": "Ucitavanje blog postova...",
|
||||
"post": "Ucitavanje blog posta..."
|
||||
},
|
||||
"errors": {
|
||||
"posts": "Greska pri ucitavanju blog postova",
|
||||
"post": "Trazeni blog post ne postoji ili je premesten."
|
||||
},
|
||||
"backToBlog": "Nazad na Blog",
|
||||
"publishedOn": "Objavljeno",
|
||||
"category": "Kategorija",
|
||||
"tags": "Oznake"
|
||||
}
|
||||
},
|
||||
"login": {
|
||||
"seo": {
|
||||
"title": "Prijava",
|
||||
"description": "Prijavite se za pristup kontrolnoj tabli"
|
||||
},
|
||||
"header": {
|
||||
"title": "Prijavite se na kontrolnu tablu"
|
||||
},
|
||||
"form": {
|
||||
"email": {
|
||||
"label": "E-mail adresa",
|
||||
"placeholder": "vas.email@primer.com"
|
||||
},
|
||||
"password": {
|
||||
"label": "Lozinka",
|
||||
"placeholder": "Vasa lozinka"
|
||||
},
|
||||
"submit": {
|
||||
"default": "Prijavi se",
|
||||
"loading": "Prijavljivanje..."
|
||||
},
|
||||
"errors": {
|
||||
"default": "Doslo je do greske",
|
||||
"invalidCredentials": "Nevazeci podaci za prijavu"
|
||||
}
|
||||
},
|
||||
"security": {
|
||||
"secureConnection": "Bezbedna veza"
|
||||
}
|
||||
},
|
||||
"dashboard": {
|
||||
"header": {
|
||||
"title": "Kontrolna tabla analitike",
|
||||
"activeUsers": "aktivnih korisnika"
|
||||
},
|
||||
"metrics": {
|
||||
"pageViews": {
|
||||
"title": "Pregledi stranica",
|
||||
"perMinute": "po minutu"
|
||||
},
|
||||
"uniqueVisitors": {
|
||||
"title": "Jedinstveni posetioci",
|
||||
"currentlyActive": "trenutno aktivnih"
|
||||
},
|
||||
"conversions": {
|
||||
"title": "Konverzije",
|
||||
"rate": "stopa konverzije"
|
||||
},
|
||||
"timeOnSite": {
|
||||
"title": "Prosecno vreme na sajtu",
|
||||
"bounceRate": "stopa napustanja"
|
||||
}
|
||||
},
|
||||
"topPages": {
|
||||
"title": "Najpopularnije stranice",
|
||||
"columns": {
|
||||
"path": "Putanja",
|
||||
"views": "Pregledi",
|
||||
"change": "Promena"
|
||||
}
|
||||
},
|
||||
"status": {
|
||||
"loading": "Ucitavanje kontrolne table...",
|
||||
"error": "Greska pri ucitavanju podataka",
|
||||
"notAuthenticated": "Molimo prijavite se"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user