- Migrate to Tailwind CSS v4 with @theme, @layer, @plugin syntax - Upgrade to Next.js 16.1, React 19.2, TypeScript 5.9.3 - Add 8 technology landing pages (Next.js, React, TypeScript, Tailwind CSS, Claude AI, Python, n8n, KI-Agenten) - Expand SEO keywords across all locales (de/en/sr) for home, layout, cities, services - Add tech-specific keywords to all 22 city pages - Add FAQ schema + seoKeywords to service detail pages - Add CollectionPage JSON-LD to blog listing - Fix city page: dynamic region, BASE_URL canonicals, x-default hreflang - Rewrite terms page with full German AGB, English and Serbian translations - Remove dead crypto import and unused CSRF middleware (Edge Runtime fix) - Remove crawlDelay from robots.ts - Update sitemap with technology pages (~198 indexed URLs) - Remove deprecated tailwind.config.js Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
130 lines
2.8 KiB
TypeScript
130 lines
2.8 KiB
TypeScript
export const locales = ['de', 'en', 'sr'] as const;
|
|
export const defaultLocale = 'de' as const;
|
|
|
|
export type Locale = (typeof locales)[number];
|
|
|
|
export const localeNames: Record<Locale, string> = {
|
|
de: 'Deutsch',
|
|
en: 'English',
|
|
sr: 'Srpski',
|
|
};
|
|
|
|
export const localeFlags: Record<Locale, string> = {
|
|
de: '🇩🇪',
|
|
en: '🇬🇧',
|
|
sr: '🇷🇸',
|
|
};
|
|
|
|
// Extended locale metadata for SEO
|
|
export const localeMetadata: Record<Locale, {
|
|
language: string;
|
|
region: string;
|
|
hreflang: string;
|
|
ogLocale: string;
|
|
script: string;
|
|
territory: string;
|
|
currency: string;
|
|
}> = {
|
|
de: {
|
|
language: 'de',
|
|
region: 'DE',
|
|
hreflang: 'de-DE',
|
|
ogLocale: 'de_DE',
|
|
script: 'Latn',
|
|
territory: 'Germany',
|
|
currency: 'EUR',
|
|
},
|
|
en: {
|
|
language: 'en',
|
|
region: 'US',
|
|
hreflang: 'en-US',
|
|
ogLocale: 'en_US',
|
|
script: 'Latn',
|
|
territory: 'United States',
|
|
currency: 'USD',
|
|
},
|
|
sr: {
|
|
language: 'sr',
|
|
region: 'RS',
|
|
hreflang: 'sr-RS',
|
|
ogLocale: 'sr_RS',
|
|
script: 'Latn', // Using Latin script for web compatibility (Cyrillic: Cyrl)
|
|
territory: 'Serbia',
|
|
currency: 'RSD',
|
|
},
|
|
};
|
|
|
|
// SEO keywords per locale
|
|
export const seoKeywords: Record<Locale, string[]> = {
|
|
de: [
|
|
'Fullstack Developer',
|
|
'KI Entwickler',
|
|
'Künstliche Intelligenz',
|
|
'Claude AI Entwickler',
|
|
'Next.js Entwickler',
|
|
'React Entwickler',
|
|
'TypeScript Entwickler',
|
|
'Tailwind CSS',
|
|
'AI Agentenentwicklung',
|
|
'KI-Agenten Entwicklung',
|
|
'Prozessautomatisierung',
|
|
'Voice AI',
|
|
'n8n Automatisierung',
|
|
'Python Entwickler',
|
|
'Köln',
|
|
'Deutschland',
|
|
],
|
|
en: [
|
|
'Fullstack Developer',
|
|
'AI Developer',
|
|
'Claude AI Developer',
|
|
'Claude AI Integration',
|
|
'Next.js Developer',
|
|
'React Developer',
|
|
'TypeScript Developer',
|
|
'Tailwind CSS Developer',
|
|
'Artificial Intelligence',
|
|
'AI Agent Developer',
|
|
'AI Agent Development',
|
|
'Process Automation Expert',
|
|
'Voice AI Developer',
|
|
'n8n Automation',
|
|
'Python Developer',
|
|
'SaaS Development',
|
|
'Remote Developer Europe',
|
|
'Remote Developer USA',
|
|
'Remote Developer UK',
|
|
'Freelance AI Developer',
|
|
'London',
|
|
'New York',
|
|
'Los Angeles',
|
|
'Miami',
|
|
'San Francisco',
|
|
],
|
|
sr: [
|
|
'Fullstack Programer',
|
|
'AI Programer Srbija',
|
|
'AI Developer Beograd',
|
|
'Claude AI Developer',
|
|
'Next.js Programer',
|
|
'React Programer',
|
|
'TypeScript Programer',
|
|
'Veštačka Inteligencija',
|
|
'Razvoj AI Agenata',
|
|
'Automatizacija Procesa',
|
|
'Voice AI Srbija',
|
|
'n8n Automatizacija',
|
|
'Python Programer Srbija',
|
|
'React Programer Beograd',
|
|
'Beograd',
|
|
'Novi Sad',
|
|
'Niš',
|
|
'Kragujevac',
|
|
'Subotica',
|
|
'Srbija',
|
|
'Softverski Razvoj Srbija',
|
|
'Remote Developer Dijaspora',
|
|
'Freelance Programer Srbija',
|
|
],
|
|
};
|