- );
-}
diff --git a/docs/prd.md b/docs/prd.md
new file mode 100644
index 0000000..0ab16b1
--- /dev/null
+++ b/docs/prd.md
@@ -0,0 +1,55 @@
+BÖLÜM 1: Ürün Gereksinim Dokümanı (PRD)
+Proje Adı: Salmakis Group Kurumsal Gateway Sitesi Modernizasyonu
+Sürüm: 1.0 (Taslak)
+Tarih: 24 Mayıs 2024
+Hedef Kitle: Global ve Yerel Yatırımcılar, Lüks Turizm Müşterileri, İş Ortakları.
+
+1. Yönetici Özeti (Executive Summary)
+Mevcut salmakis.com.tr sitesi, grubun üç ana iş kolunu (Resort, Villas, Yachting) barındıran tek sayfalık bir yönlendirme sitesidir. Ancak, 2019 yılından kalma tasarımı, düşük görsel kalitesi ve zayıf kullanıcı deneyimi nedeniyle grubun 1980'den gelen köklü ve lüks marka imajını yansıtmamaktadır.
+
+Bu projenin amacı; siteyi "Dijital Prestij Vitrini" olarak yeniden tasarlamak, ziyaretçileri etkilemek ve alt markalara (Resort, Villas, Yachting) geçişi pürüzsüz ve davetkar hale getirmektir.
+
+2. Proje Hedefleri (Goals)
+Marka İmajını Güçlendirmek: Grubun lüks, köklü (Since 1980) ve Bodrum kökenli kimliğini vurgulamak.
+
+Kullanıcı Deneyimini (UX) Mükemmelleştirmek: Karmaşadan uzak, sezgisel ve etkileşimli bir yönlendirme sağlamak.
+
+Görsel Mükemmeliyet: Yüksek çözünürlüklü medya kullanarak ziyaretçide anında hayranlık uyandırmak.
+
+Teknik Performans: Mobil öncelikli (Mobile-First), Google PageSpeed skorları 90+ olan, ultra hızlı bir site oluşturmak.
+
+3. Kullanıcı Hikayeleri (User Stories)
+Bir Müşteri Olarak: Salmakis Group sitesine girdiğimde, grubun kalitesini hissetmek ve Otel mi, Villa mı yoksa Tekne mi kiralayacağıma saniyeler içinde karar verip ilgili siteye gitmek istiyorum.
+
+Bir İş Ortağı Olarak: Grubun ana sitesini ziyaret ettiğimde, 1980'den beri faal olan güvenilir bir holding imajı görmek istiyorum.
+
+4. Fonksiyonel Gereksinimler (Functional Requirements)
+4.1. Ana Sayfa Yapısı (Gateway)
+Bölünmüş Ekran (Split Screen) veya İnteraktif Slider: Ekran, üç iş kolunu temsil eden üç ana dikey bölüme ayrılmalıdır (Resort, Villas, Yachting).
+
+Dinamik Arka Plan: Her bölümün arkasında, o iş koluna ait yüksek kaliteli (4K) ağır çekim videolar (Cinemagraph) sessizce oynamalıdır.
+
+Hover Etkileşimi: Kullanıcı bir bölümün (örneğin Yachting) üzerine geldiğinde, o bölüm genişlemeli, görsel daha belirginleşmeli ve "Keşfet" butonu ortaya çıkmalıdır.
+
+Minimal Navigasyon: Sadece Dil Seçimi (TR/EN) ve Kurumsal İletişim için minimal ikonlar bulunmalıdır.
+
+4.2. İçerik Bölümleri (Scroll ile Erişilen)
+Since 1980 & Hakkımızda: Ana görselin hemen altında, grubun köklü geçmişini anlatan minimal, prestijli bir metin bölümü.
+
+Salmakis Efsanesi (İnteraktif): Efsane, düz metin yerine, kaydırma (scroll) ile tetiklenen parallax efektleri veya özel minimal illüstrasyonlarla anlatılmalıdır.
+
+Footer (İletişim): Tüm alt şirketlerin iletişim bilgilerinin modern bir hiyerarşiyle sunulduğu, harita entegrasyonlu minimal bir footer.
+
+4.3. Teknik Gereksinimler
+Altyapı: Modern JavaScript framework'leri (örneğin Next.js veya Nuxt.js) ile Server-Side Rendering (SSR) yapısı.
+
+Performans: Görseller WebP/AVIF formatında olmalı, videolar lazy-load edilmelidir.
+
+Responsive: Masaüstü, tablet ve mobil cihazlarda kusursuz görüntüleme (özellikle mobil hover deneyimi dokunmatik öncelikli kurgulanmalı).
+
+5. Tasarım İlkeleri (Design Principles)
+Lüks Minimalizm: Az içerik, çok boşluk (whitespaces), devasa görseller.
+
+Bodrum Renkleri: Saf beyaz, turkuaz mavisi, kum beji ve prestij için altın/lacivert detaylar.
+
+Tipografi: Serif (başlıklar için, örneğin Playfair Display) ve Sans-Serif (metinler için, örneğin Montserrat) fontların modern kombinasyonu.
\ No newline at end of file
diff --git a/middleware.ts b/middleware.ts
new file mode 100644
index 0000000..82b6b70
--- /dev/null
+++ b/middleware.ts
@@ -0,0 +1,33 @@
+import { NextResponse } from 'next/server';
+import type { NextRequest } from 'next/server';
+
+const locales = ['tr', 'en'];
+const defaultLocale = 'tr';
+
+export function middleware(request: NextRequest) {
+ const { pathname } = request.nextUrl;
+
+ // Exclude static files, public folder items, API routes, next internals
+ if (
+ pathname.startsWith('/_next') ||
+ pathname.startsWith('/api') ||
+ pathname.includes('.') ||
+ pathname === '/favicon.ico'
+ ) {
+ return NextResponse.next();
+ }
+
+ const pathnameHasLocale = locales.some(
+ (locale) => pathname.startsWith(`/${locale}/`) || pathname === `/${locale}`
+ );
+
+ if (pathnameHasLocale) return NextResponse.next();
+
+ // Redirect if there is no locale
+ request.nextUrl.pathname = `/${defaultLocale}${pathname}`;
+ return NextResponse.redirect(request.nextUrl);
+}
+
+export const config = {
+ matcher: ['/((?!_next|api|favicon.ico).*)'],
+};
diff --git a/next.config.ts b/next.config.ts
index e9ffa30..f7b60bb 100644
--- a/next.config.ts
+++ b/next.config.ts
@@ -1,6 +1,7 @@
import type { NextConfig } from "next";
const nextConfig: NextConfig = {
+ output: 'standalone',
/* config options here */
};
diff --git a/public/1.jpg b/public/1.jpg
new file mode 100644
index 0000000..16ac6b7
Binary files /dev/null and b/public/1.jpg differ
diff --git a/public/2.jpg b/public/2.jpg
new file mode 100644
index 0000000..99c2ab5
Binary files /dev/null and b/public/2.jpg differ
diff --git a/public/MEIRA-2000x1333.jpg b/public/MEIRA-2000x1333.jpg
new file mode 100644
index 0000000..60d5c69
Binary files /dev/null and b/public/MEIRA-2000x1333.jpg differ
diff --git a/public/SU-3.jpg b/public/SU-3.jpg
new file mode 100644
index 0000000..d7d8324
Binary files /dev/null and b/public/SU-3.jpg differ
diff --git a/public/favicon_io.zip b/public/favicon_io.zip
new file mode 100644
index 0000000..941f64d
Binary files /dev/null and b/public/favicon_io.zip differ
diff --git a/public/favicon_io/android-chrome-192x192.png b/public/favicon_io/android-chrome-192x192.png
new file mode 100644
index 0000000..0e04ed6
Binary files /dev/null and b/public/favicon_io/android-chrome-192x192.png differ
diff --git a/public/favicon_io/android-chrome-512x512.png b/public/favicon_io/android-chrome-512x512.png
new file mode 100644
index 0000000..0aaa2b1
Binary files /dev/null and b/public/favicon_io/android-chrome-512x512.png differ
diff --git a/public/favicon_io/apple-touch-icon.png b/public/favicon_io/apple-touch-icon.png
new file mode 100644
index 0000000..8d35a11
Binary files /dev/null and b/public/favicon_io/apple-touch-icon.png differ
diff --git a/public/favicon_io/favicon-16x16.png b/public/favicon_io/favicon-16x16.png
new file mode 100644
index 0000000..8217312
Binary files /dev/null and b/public/favicon_io/favicon-16x16.png differ
diff --git a/public/favicon_io/favicon-32x32.png b/public/favicon_io/favicon-32x32.png
new file mode 100644
index 0000000..55855e8
Binary files /dev/null and b/public/favicon_io/favicon-32x32.png differ
diff --git a/public/favicon_io/site.webmanifest b/public/favicon_io/site.webmanifest
new file mode 100644
index 0000000..45dc8a2
--- /dev/null
+++ b/public/favicon_io/site.webmanifest
@@ -0,0 +1 @@
+{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
\ No newline at end of file
diff --git a/public/logo_m.png b/public/logo_m.png
new file mode 100644
index 0000000..44b388b
Binary files /dev/null and b/public/logo_m.png differ