diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..94946cd
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,53 @@
+# 1. Base image
+FROM node:20-alpine AS base
+
+# 2. Dependencies
+FROM base AS deps
+RUN apk add --no-cache libc6-compat
+WORKDIR /app
+
+# Install dependencies
+COPY package.json package-lock.json* ./
+RUN npm ci --legacy-peer-deps
+
+
+# 3. Builder
+FROM base AS builder
+WORKDIR /app
+COPY --from=deps /app/node_modules ./node_modules
+COPY . .
+
+# Environment variables must be present at build time for Next.js
+ENV NEXT_TELEMETRY_DISABLED=1
+
+RUN npm run build
+
+# 4. Runner
+FROM base AS runner
+WORKDIR /app
+
+ENV NODE_ENV=production
+ENV NEXT_TELEMETRY_DISABLED=1
+
+RUN addgroup --system --gid 1001 nodejs
+RUN adduser --system --uid 1001 nextjs
+
+COPY --from=builder /app/public ./public
+
+# Set the correct permission for prerender cache
+RUN mkdir .next
+RUN chown nextjs:nodejs .next
+
+# Automatically leverage output traces to reduce image size
+COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
+COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
+
+USER nextjs
+
+EXPOSE 3000
+
+ENV PORT=3000
+ENV HOSTNAME="0.0.0.0"
+
+# Start the server
+CMD ["node", "server.js"]
diff --git a/README.md b/README.md
index e215bc4..203e50a 100644
--- a/README.md
+++ b/README.md
@@ -1,36 +1,43 @@
-This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).
+# Moy Beach Menu
-## Getting Started
+Moy Beach için modern, şık ve animasyonlu dijital menü uygulaması.
-First, run the development server:
+## 🚀 Teknolojiler
+- **Next.js 15** (App Router)
+- **React 19**
+- **Tailwind CSS v4**
+- **Framer Motion** (Yumuşak geçişler ve modal animasyonları)
+- **TypeScript**
+
+## 📦 Özellikler
+- **Kategori Navigasyonu:** Kullanıcı kaydırdıkça hangi kategoride olduğunu takip eden `IntersectionObserver` destekli navigasyon.
+- **Dinamik Modal Görünümü:** Ürünlere tıklandığında detaylı bilgi gösteren, şık ve tepkisel modal tasarımı.
+- **Özelleştirilmiş Tasarım Tokenleri:** `app/globals.css` içerisinde renk paletleri ve yazı tipleri (Cormorant, Plus Jakarta Sans) kolayca yönetilebilir.
+- **Docker Desteği:** `Dockerfile` ile optimize edilmiş `standalone` output desteğiyle kolayca konteynerize edilebilir.
+
+## 🛠️ Kurulum ve Çalıştırma
+
+Lokal geliştirme ortamında çalıştırmak için:
```bash
+# Bağımlılıkları yükleyin
+npm install
+
+# Geliştirme sunucusunu başlatın
npm run dev
-# or
-yarn dev
-# or
-pnpm dev
-# or
-bun dev
```
-Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
+Tarayıcınızda [http://localhost:3000](http://localhost:3000) adresine giderek uygulamayı görüntüleyebilirsiniz.
-You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
+## 🐳 Docker ile Çalıştırma
-This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
+```bash
+# İmajı oluşturun
+docker build -t moy-qr .
-## Learn More
+# Konteyneri başlatın
+docker run -p 3000:3000 moy-qr
+```
-To learn more about Next.js, take a look at the following resources:
-
-- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
-- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
-
-You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
-
-## Deploy on Vercel
-
-The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
-
-Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
+## 📝 Menü İçeriğini Güncelleme
+Menü kategorileri, ürünler, fiyatlar ve resimler `data/menu.ts` dosyasından okunur. Yeni ürün eklemek veya düzenlemek için bu dosyayı güncelleyebilirsiniz.
diff --git a/app/favicon.ico b/app/favicon.ico
index 718d6fe..380789b 100644
Binary files a/app/favicon.ico and b/app/favicon.ico differ
diff --git a/app/globals.css b/app/globals.css
index a2dc41e..c8f4568 100644
--- a/app/globals.css
+++ b/app/globals.css
@@ -1,26 +1,70 @@
@import "tailwindcss";
+/* ── Design Tokens ─────────────────────────────── */
:root {
- --background: #ffffff;
- --foreground: #171717;
+ --cream: #FAF8F3;
+ --sand: #F0E8DC;
+ --sand-border: rgba(140, 108, 72, 0.13);
+ --amber: #C2712E;
+ --amber-light: #E49248;
+ --amber-pale: #F6EDDE;
+ --stone-ink: #2E2820;
+ --stone-mid: #6B5E54;
+ --stone-muted: #9C9088;
+ --hero-from: #1E0E06;
+ --hero-via: #7C3312;
+ --hero-to: #C96B28;
}
@theme inline {
- --color-background: var(--background);
- --color-foreground: var(--foreground);
- --font-sans: var(--font-geist-sans);
- --font-mono: var(--font-geist-mono);
-}
+ --color-cream: var(--cream);
+ --color-sand: var(--sand);
+ --color-amber: var(--amber);
+ --color-amber-light: var(--amber-light);
+ --color-amber-pale: var(--amber-pale);
+ --color-stone-ink: var(--stone-ink);
+ --color-stone-mid: var(--stone-mid);
+ --color-stone-muted: var(--stone-muted);
-@media (prefers-color-scheme: dark) {
- :root {
- --background: #0a0a0a;
- --foreground: #ededed;
- }
+ --font-display: var(--font-cormorant);
+ --font-sans: var(--font-jakarta);
}
body {
- background: var(--background);
- color: var(--foreground);
- font-family: Arial, Helvetica, sans-serif;
+ background: var(--cream);
+ color: var(--stone-ink);
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+@layer utilities {
+ .hide-scrollbar::-webkit-scrollbar { display: none; }
+ .hide-scrollbar {
+ -ms-overflow-style: none;
+ scrollbar-width: none;
+ }
+
+ .font-display {
+ font-family: var(--font-cormorant), "Garamond", serif;
+ }
+
+ .hero-gradient {
+ background: linear-gradient(
+ 170deg,
+ var(--hero-from) 0%,
+ var(--hero-via) 50%,
+ var(--hero-to) 100%
+ );
+ }
+
+ .pill-active {
+ background: linear-gradient(135deg, #C2712E, #9A5320);
+ color: #FFF6E8;
+ box-shadow: 0 2px 10px rgba(194, 113, 46, 0.38);
+ }
+
+ .pill-inactive {
+ background: rgba(120, 90, 58, 0.09);
+ color: var(--stone-mid);
+ }
}
diff --git a/app/layout.tsx b/app/layout.tsx
index 976eb90..23ec8f0 100644
--- a/app/layout.tsx
+++ b/app/layout.tsx
@@ -1,20 +1,25 @@
import type { Metadata } from "next";
-import { Geist, Geist_Mono } from "next/font/google";
+import { Cormorant_Garamond, Plus_Jakarta_Sans } from "next/font/google";
import "./globals.css";
-const geistSans = Geist({
- variable: "--font-geist-sans",
+const cormorant = Cormorant_Garamond({
+ variable: "--font-cormorant",
subsets: ["latin"],
+ weight: ["300", "400", "500", "600", "700"],
+ style: ["normal", "italic"],
+ display: "swap",
});
-const geistMono = Geist_Mono({
- variable: "--font-geist-mono",
+const jakarta = Plus_Jakarta_Sans({
+ variable: "--font-jakarta",
subsets: ["latin"],
+ weight: ["300", "400", "500", "600", "700"],
+ display: "swap",
});
export const metadata: Metadata = {
- title: "Create Next App",
- description: "Generated by create next app",
+ title: "Moy Beach Akyaka | Menü",
+ description: "Moy Beach Akyaka dijital menü.",
};
export default function RootLayout({
@@ -23,11 +28,8 @@ export default function RootLayout({
children: React.ReactNode;
}>) {
return (
-
-
{children}
+
+ {children}
);
}
diff --git a/app/page.tsx b/app/page.tsx
index 3f36f7c..bd95e39 100644
--- a/app/page.tsx
+++ b/app/page.tsx
@@ -1,65 +1,271 @@
-import Image from "next/image";
+"use client";
+
+import { useEffect, useState, useRef } from "react";
+import { motion, AnimatePresence } from "framer-motion";
+import { menuData, MenuItem as MenuItemType } from "@/data/menu";
+import { CategoryNav } from "@/components/CategoryNav";
+import { MenuItem } from "@/components/MenuItem";
+
+export const CATEGORY_ICONS: Record = {
+ "kahvaltiliklar": "🌅",
+ "kaseler": "🥗",
+ "burger-ve-sandvic": "🍔",
+ "pizzalar": "🍕",
+ "makarnalar": "🍝",
+ "baslangiclar": "🧆",
+ "salatalar": "🥬",
+ "ana-yemekler": "🍽️",
+ "tatlilar": "🍮",
+ "i̇mza-kokteyller": "🍹",
+ "klasik-kokteyller": "🍸",
+ "biralar": "🍺",
+ "shotlar": "🥃",
+ "sise-ve-kadeh-alkollu": "🥂",
+ "saraplar": "🍷",
+ "cerezler": "🥜",
+ "alkolsuz-i̇cecekler": "🧃",
+ "sicak-kahveler": "☕",
+ "soguk-kahveler": "🧊",
+ "ekstralar": "✨",
+};
+
+export default function MenuPage() {
+ const [activeCategoryId, setActiveCategoryId] = useState(
+ menuData[0]?.id || ""
+ );
+ const [selectedItem, setSelectedItem] = useState(null);
+ const sectionRefs = useRef<(HTMLElement | null)[]>([]);
+
+ useEffect(() => {
+ const observer = new IntersectionObserver(
+ (entries) => {
+ const hit = entries.find((e) => e.isIntersecting);
+ if (hit) setActiveCategoryId(hit.target.id);
+ },
+ { root: null, rootMargin: "-100px 0px -62% 0px", threshold: 0 }
+ );
+
+ sectionRefs.current.forEach((ref) => ref && observer.observe(ref));
+ return () => observer.disconnect();
+ }, []);
+
+ useEffect(() => {
+ if (selectedItem) {
+ document.body.style.overflow = "hidden";
+ } else {
+ document.body.style.overflow = "unset";
+ }
+ return () => {
+ document.body.style.overflow = "unset";
+ };
+ }, [selectedItem]);
-export default function Home() {
return (
-
-
-
+
+ {/* ── Hero ─────────────────────────────────────── */}
+
+ {/* Background Image */}
+
-
-
- To get started, edit the page.tsx file.
-
-
- Looking for a starting point or more instructions? Head over to{" "}
-
+
+ {/* hero content */}
+
+
+
- Templates
- {" "}
- or the{" "}
-
+
+
- Learning
-
{" "}
- center.
+ Moy
+
+
+
+ Beach
+
+
+
+
+
+ Akyaka'nın en keyifli menüsü
+
+
+
+
+ {/* wave transition */}
+
+
+
+ {/* ── Category Nav ─────────────────────────────── */}
+
+
+ {/* ── Menu Sections ────────────────────────────── */}
+
+ {menuData.map((category, index) => (
+ { sectionRefs.current[index] = el; }}
+ className="pt-10 px-4 max-w-lg mx-auto scroll-mt-[62px]"
+ initial={{ opacity: 0, y: 14 }}
+ whileInView={{ opacity: 1, y: 0 }}
+ viewport={{ once: true, margin: "-50px" }}
+ transition={{ duration: 0.5, ease: [0.16, 1, 0.3, 1] }}
+ >
+ {/* section header */}
+
+
+ {CATEGORY_ICONS[category.id] ?? "🍽️"}
+
+
+ {category.title}
+
+
+
+
+ {category.items.map((item, idx) => (
+
+
+ ))}
+
+
+ {/* ── Footer ───────────────────────────────────── */}
+
);
}
diff --git a/components/CategoryNav.tsx b/components/CategoryNav.tsx
new file mode 100644
index 0000000..6353eea
--- /dev/null
+++ b/components/CategoryNav.tsx
@@ -0,0 +1,68 @@
+"use client";
+
+import React, { useEffect, useRef } from "react";
+import { MenuCategory } from "@/data/menu";
+
+interface CategoryNavProps {
+ categories: MenuCategory[];
+ activeCategoryId: string;
+ icons: Record;
+}
+
+export function CategoryNav({ categories, activeCategoryId, icons }: CategoryNavProps) {
+ const containerRef = useRef(null);
+
+ useEffect(() => {
+ if (!activeCategoryId || !containerRef.current) return;
+ const el = containerRef.current.querySelector(
+ `[data-id="${activeCategoryId}"]`
+ ) as HTMLElement | null;
+ el?.scrollIntoView({ behavior: "smooth", block: "nearest", inline: "center" });
+ }, [activeCategoryId]);
+
+ const scrollTo = (id: string) => {
+ const el = document.getElementById(id);
+ if (!el) return;
+ const y = el.getBoundingClientRect().top + window.scrollY - 72;
+ window.scrollTo({ top: y, behavior: "smooth" });
+ };
+
+ return (
+
+
+ {categories.map((cat) => {
+ const active = cat.id === activeCategoryId;
+ return (
+
+ );
+ })}
+
+
+ );
+}
diff --git a/components/MenuItem.tsx b/components/MenuItem.tsx
new file mode 100644
index 0000000..dc7ff83
--- /dev/null
+++ b/components/MenuItem.tsx
@@ -0,0 +1,48 @@
+import React from "react";
+import { MenuItem as MenuItemType } from "@/data/menu";
+
+export function MenuItem({ item, onClick }: { item: MenuItemType; onClick?: () => void }) {
+ return (
+
+
+
+
+ {item.name}
+
+ {item.description && (
+
+ {item.description}
+
+ )}
+ {item.price && (
+
+ {item.price}
+
+ )}
+
+ {item.image && (
+
+

+
+ )}
+
+
+ );
+}
diff --git a/data/menu.ts b/data/menu.ts
new file mode 100644
index 0000000..522ca63
--- /dev/null
+++ b/data/menu.ts
@@ -0,0 +1,1054 @@
+export interface MenuItem {
+ id?: string;
+ name: string;
+ description: string;
+ price: string;
+ image?: string;
+}
+
+export interface MenuCategory {
+ id: string;
+ title: string;
+ items: MenuItem[];
+}
+
+export const menuData: MenuCategory[] = [
+ {
+ id: "kahvaltiliklar",
+ title: "Kahvaltılıklar",
+ items: [
+ {
+ name: "Kahvaltı Tabağı",
+ description: "Haşlanmış yumurta, siyah ve yeşil zeytin, bal, kaymak, taze avokado, domates ve salatalık ile hazırl ...",
+ price: "239 ₺",
+ image: "https://images.unsplash.com/photo-1555939594-58d7cb561ad1?w=800&q=80"
+ },
+ {
+ name: "Kavurmalı Yumurta",
+ description: "Tereyağında pişirilen yumurtaların, yumuşak dokulu dana kavurma ile buluştuğu doyurucu kahvaltılık.",
+ price: "156 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Menemen",
+ description: "Olgun domates, yeşil biber ve yumurta ile hazırlanan geleneksel Türk menemeni.",
+ price: "363 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Sucuklu Yumurta",
+ description: "Izgarada hafifçe kızartılmış sucuk dilimleri ve tereyağlı yumurta ile hazırlanan klasik lezzet.",
+ price: "337 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Göz Yumurta",
+ description: "Tereyağında pişirilmiş iki adet yumurta, sade ve klasik sunumuyla servis edilir.",
+ price: "253 ₺",
+ image: "https://images.unsplash.com/photo-1555939594-58d7cb561ad1?w=800&q=80"
+ },
+ {
+ name: "Çırpılmış Yumurta",
+ description: "Tereyağında yumuşak kıvamda hazırlanan çırpılmış yumurta.",
+ price: "400 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ },
+ {
+ name: "Sebzeli ve Peynirli Omlet",
+ description: "Üç yumurta ile hazırlanan omlet; mevsim sebzeleri veya peynir seçeneğiyle servis edilir.",
+ price: "216 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ },
+ {
+ name: "Eggs Benedict",
+ description: "Tereyağında kızartılmış ekmek üzerinde sotelenmiş ıspanak, ince dilim kuru et ve poşe yumurta; holla ...",
+ price: "425 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ }
+ ]
+ },
+ {
+ id: "kaseler",
+ title: "Kaseler",
+ items: [
+ {
+ name: "Kavrulmuş Kinoa Kasesi",
+ description: "Kavrulmuş kinoa; köz aromalı tatlı patates, edamame, baby mısır ve Meksika fasulyesi ile buluşturulu ...",
+ price: "357 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Avokado Kasesi",
+ description: "Taze avokado küpleri; salatalık, cherry domates ve nane ile buluşur. Edamame, nohut ve peynir küpler ...",
+ price: "306 ₺",
+ image: "https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=800&q=80"
+ },
+ {
+ name: "Granola Kasesi",
+ description: "Meyveli yoğurt üzerine yerleştirilen çıtır granola ve mevsim meyveleriyle hazırlanan hafif ve ferah ...",
+ price: "311 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Naneli Karpuz Kasesi",
+ description: "Sulu karpuz dilimleri; taze nane, fesleğen ve kaya koruğu ile harmanlanır. Ezine peyniri ve balzamik ...",
+ price: "367 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ },
+ {
+ name: "Sushi Kasesi",
+ description: "Füme somon, surimi, avokado, baby turp, salatalık ve marine yosun ile buluşur. Spicy mayo, frenk soğ ...",
+ price: "258 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ }
+ ]
+ },
+ {
+ id: "burger-ve-sandvic",
+ title: "Burger & Sandviç",
+ items: [
+ {
+ name: "Cheeseburger",
+ description: "Izgara hamburger köftesi, eriyen cheddar peyniri ve karamelize soğan; özel sos eşliğinde yumuşak bur ...",
+ price: "334 ₺",
+ image: "https://images.unsplash.com/photo-1555939594-58d7cb561ad1?w=800&q=80"
+ },
+ {
+ name: "Sloppy Joe",
+ description: "Yavaş pişirilmiş sebzeli kıyma ile hazırlanan Sloppy Joe, artisan burger ekmeğinde trüflü mayonez eş ...",
+ price: "260 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Caprese Sandviç",
+ description: "Pesto sos, buratta, olgun domates ve fesleğen yapraklarının zeytinli biberiyeli köy ekmeği ile buluş ...",
+ price: "205 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ },
+ {
+ name: "Hot Dog",
+ description: "Izgara sosis; cheddar, kıtır soğan, hardal ve sweet chili sos ile sandviç ekmeği içerisinde servis e ...",
+ price: "390 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ },
+ {
+ name: "Chili Hot Dog",
+ description: "Bolonez kıyma ve hafif acılı chili sos ile hazırlanan yoğun aromalı hot dog yorumu.",
+ price: "388 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Tex-Mex Biftek Sandviç",
+ description: "Izgara biftek dilimleri, özel soslar ve Tex-Mex aromalarıyla hazırlanan sade köy ekmeği.",
+ price: "208 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ }
+ ]
+ },
+ {
+ id: "pizzalar",
+ title: "Pizzalar",
+ items: [
+ {
+ name: "Margherita Pizza",
+ description: "İnce pizza tabanı üzerinde domates sosu, mozzarella ve taze fesleğen ile hazırlanan klasik İtalyan p ...",
+ price: "312 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ },
+ {
+ name: "Sucuklu Pizza",
+ description: "Domates sosu ve mozzarella peyniri üzerine yerleştirilen sucuk dilimleriyle hazırlanan yoğun aromalı ...",
+ price: "243 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ },
+ {
+ name: "Burrata & Enginar Pestolu Pizza",
+ description: "Enginar pesto sosu, feta peyniri ve kremamsı burrata ile hazırlanan ince taban pizza yorumu.",
+ price: "414 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Kuru Et & Enginarlı Pizza",
+ description: "Kuru et, enginar ve kurutulmuş domates ile hazırlanan pizza.",
+ price: "376 ₺",
+ image: "https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=800&q=80"
+ },
+ {
+ name: "Dört Peynirli Pizza",
+ description: "Mozzarella, rokfor, brie ve edam peynirlerinin buluştuğu yoğun peynir aromalı pizza.",
+ price: "326 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ },
+ {
+ name: "Karışık Pizza",
+ description: "Sucuk, biber, mantar, mısır ve siyah zeytin ile hazırlanan doyurucu karışık pizza.",
+ price: "449 ₺",
+ image: "https://images.unsplash.com/photo-1555939594-58d7cb561ad1?w=800&q=80"
+ },
+ {
+ name: "Vejetaryen Pizza",
+ description: "Izgara kabak, renkli biberler, mantar, kırmızı soğan ve siyah zeytin ile hazırlanan sebzeli pizza.",
+ price: "162 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ }
+ ]
+ },
+ {
+ id: "makarnalar",
+ title: "Makarnalar",
+ items: [
+ {
+ name: "Limon & Adaçaylı Capellini",
+ description: "İnce capellini makarnası; taze limon suyu ve aromatik adaçayı ile hazırlanır.",
+ price: "304 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ },
+ {
+ name: "Kremalı Enginar & Gnocchi",
+ description: "Kremalı pesto sos, taze enginar ve parmesan ile hazırlanan yumuşak dokulu makarna.",
+ price: "362 ₺",
+ image: "https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=800&q=80"
+ },
+ {
+ name: "Deniz Mahsullü Linguine",
+ description: "Karides, yengeç ve aromatik deniz mahsullü sos ile hazırlanan linguine makarna, parmesan ile tamamla ...",
+ price: "229 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ },
+ {
+ name: "Spagetti Bolonez",
+ description: "Yavaş pişirilmiş bolonez sosun spaghetti ile buluştuğu klasik İtalyan lezzeti.",
+ price: "438 ₺",
+ image: "https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=800&q=80"
+ },
+ {
+ name: "Fettuccine Alfredo",
+ description: "Kremalı Alfredo sos; tavuk parçaları, mantar ve parmesan ile zenginleştirilir.",
+ price: "285 ₺",
+ image: "https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=800&q=80"
+ },
+ {
+ name: "Glütensiz Makarna Seçenekleri",
+ description: "Glütensiz makarna seçenekleri mevcut; diyet gereksinimlerinize uygun olarak hazırlanır.",
+ price: "312 ₺",
+ image: "https://images.unsplash.com/photo-1555939594-58d7cb561ad1?w=800&q=80"
+ }
+ ]
+ },
+ {
+ id: "baslangiclar",
+ title: "Başlangıçlar",
+ items: [
+ {
+ name: "Patates Kızartması",
+ description: "Çıtır ve altın renginde kızartılmış patates dilimleri.",
+ price: "363 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Trüflü Parmesanlı Patates",
+ description: "Çıtır patates kızartmaları, aromatik trüf sosu ve parmesan ile servis edilir.",
+ price: "278 ₺",
+ image: "https://images.unsplash.com/photo-1555939594-58d7cb561ad1?w=800&q=80"
+ },
+ {
+ name: "Çıtır Tavuk Parçaları",
+ description: "Altın renginde çıtır tavuk parçaları, patates kızartması eşliğinde servis edilir.",
+ price: "282 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Dinamit Karides",
+ description: "Çıtır karidesler; sriracha, lime ve özel dynamite sos ile buluşturulur.",
+ price: "276 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Tempura Kabak",
+ description: "Tempura kaplamalı kabak dilimleri, dereotlu yoğurt sos eşliğinde servis edilir.",
+ price: "357 ₺",
+ image: "https://images.unsplash.com/photo-1555939594-58d7cb561ad1?w=800&q=80"
+ },
+ {
+ name: "Karışık Başlangıç Tabağı",
+ description: "Patates kızartması, sosis parçaları, çıtır tavuk ve acılı soğan halkası içeren paylaşım tabağı.",
+ price: "243 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ }
+ ]
+ },
+ {
+ id: "salatalar",
+ title: "Salatalar",
+ items: [
+ {
+ name: "Tavuklu Sezar Salata",
+ description: "Iceberg ve Yedikule marulu; ızgara tavuk, parmesan ve kruton ile hazırlanır.",
+ price: "351 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Yunan Salatası",
+ description: "Domates, salatalık, kırmızı soğan, siyah zeytin ve feta peyniriyle hazırlanan ferah Ege salatası.",
+ price: "303 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ },
+ {
+ name: "Caprese Salatası",
+ description: "Taze mozzarella, domates ve fesleğen yaprakları pesto sos ile tamamlanır.",
+ price: "433 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Avokado & Enginarlı Salata",
+ description: "Avokado, enginar kalbi ve mascolin yeşillikleri hafif Vinegret sos ile servis edilir.",
+ price: "395 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ },
+ {
+ name: "Roka Salatası",
+ description: "Pembe domates, roka, parmesan ve balzamik sirke sırrı.",
+ price: "185 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ }
+ ]
+ },
+ {
+ id: "ana-yemekler",
+ title: "Ana Yemekler",
+ items: [
+ {
+ name: "Bal & Soya Soslu Somon",
+ description: "Bal–soya glaze ile ızgaralanmış somon fileto, yüzeyinde hafif karamelizasyon oluşturularak servis ed ...",
+ price: "198 ₺",
+ image: "https://images.unsplash.com/photo-1555939594-58d7cb561ad1?w=800&q=80"
+ },
+ {
+ name: "Ojo de Bife",
+ description: "Dana antrikot, yoğun aromalı chimichurri sos ve pekmez dokunuşlu demi-glace eşliğinde servis edilir. ...",
+ price: "211 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Yakitori Tavuk Şiş",
+ description: "Marine tavuk şişler, esmer şekerle dengelenmiş glaze sos ile karamelize edilerek servis edilir. Fren ...",
+ price: "415 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ },
+ {
+ name: "Limon & Sarımsaklı Semizotlu Chateaubriand",
+ description: "Dana bonfile, yüksek ısıda mühürlenerek merkezinde yumuşak dokusunu koruyan klasik chateaubriand tek ...",
+ price: "430 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ },
+ {
+ name: "Levrek en Papillote",
+ description: "Levrek, kendi aroması korunarak beurre blanc sosun ipeksi dokusuyla servis edilir. Enginar pestosunu ...",
+ price: "325 ₺",
+ image: "https://images.unsplash.com/photo-1555939594-58d7cb561ad1?w=800&q=80"
+ },
+ {
+ name: "Geleneksel Türk Köftesi",
+ description: "Geleneksel Türk köftesi, tırnak pide ve çıtır patates kızartması eşliğinde servis edilir. Sarımsaklı ...",
+ price: "396 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ }
+ ]
+ },
+ {
+ id: "tatlilar",
+ title: "Tatlılar",
+ items: [
+ {
+ name: "Kaymaklı Churros",
+ description: "Dışı altın renginde çıtır, içi yumuşak dokulu churroslar geleneksel yöntemle hazırlanarak sıcak serv ...",
+ price: "303 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ },
+ {
+ name: "Lotuslu Meyveli Krema",
+ description: "Kadifemsi meyve kreması, taze meyvelerin ferah aroması ve Lotus bisküvisinin karamelize notalarıyla ...",
+ price: "331 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ },
+ {
+ name: "Sufle",
+ description: "Yoğun kakao aromasıyla hazırlanan sıcak sufle, ince kabuğunun altında akışkan ve kadifemsi bir iç do ...",
+ price: "364 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ }
+ ]
+ },
+ {
+ id: "i̇mza-kokteyller",
+ title: "İmza Kokteyller",
+ items: [
+ {
+ name: "Grass",
+ description: "Ferah otsu ve yeşil notalarıyla öne çıkan, yaz plajına özel imza kokteyl.",
+ price: "443 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ },
+ {
+ name: "Placebo",
+ description: "Karmaşık ve beklenmedik tat profiliyle tekrar tekrar içmek isteteceğiniz imza Moy Beach kokteyli.",
+ price: "240 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Chili Mango",
+ description: "Olgun mango aromasının acı biberle dengelendiği tatlı, tropikal ve cesur bir kokteyl.",
+ price: "353 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Purble Basil",
+ description: "Aromatik mor fesleğenin yıldız olduğu, çiçeksi ve otsu karakterde bir kokteyl.",
+ price: "249 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ },
+ {
+ name: "Tuxedo",
+ description: "Sofistike notaları olan, şık ve güçlü bir kokteyl.",
+ price: "287 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Passion Martini",
+ description: "Tropikal çpassion fruit aromasıyla dolu, hafif ve canlandırıcı bir martini.",
+ price: "371 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ },
+ {
+ name: "Whiskey Sour Satsuma",
+ description: "Klasik whiskey sour'a satsuma mandalinasının parlak narenciye aromasıyla verilen yeni bir yorum.",
+ price: "424 ₺",
+ image: "https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=800&q=80"
+ },
+ {
+ name: "Peach Spritz",
+ description: "Taze şeftali aromasının hafif köpüklü yapıyla buluştuğu, güneşli günlere özel bir kokteyl.",
+ price: "191 ₺",
+ image: "https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=800&q=80"
+ },
+ {
+ name: "Moy Kokteyl",
+ description: "Moy Beach'in yalnızca misafirlerimiz için özel olarak hazırladığı eşsiz imza kokteyli.",
+ price: "437 ₺",
+ image: "https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=800&q=80"
+ }
+ ]
+ },
+ {
+ id: "klasik-kokteyller",
+ title: "Klasik Kokteyller",
+ items: [
+ {
+ name: "Espresso Martini",
+ description: "Votka, kahve likörü ve taze espresso shotuyla hazırlanan pürüzsüz ve lüks bir kokteyl.",
+ price: "443 ₺",
+ image: "https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=800&q=80"
+ },
+ {
+ name: "Margarita",
+ description: "Tekila, triple sec ve taze misket limonuyla hazırlanan, tuzlu kenarlıkla servis edilen ikonik koktey ...",
+ price: "314 ₺",
+ image: "https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=800&q=80"
+ },
+ {
+ name: "Long Island Ice Tea",
+ description: "Votka, rom, tekila, cin ve triple sec'in kola ve limonla buluştuğu efsanevi beş-sert içki kokteyli.",
+ price: "445 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ },
+ {
+ name: "Aperol Spritz",
+ description: "İtalya'nın sevilen aperitifi: Aperol acı likörünün Prosecco ve soda suyuyla buluştuğu, buz üzerinde ...",
+ price: "314 ₺",
+ image: "https://images.unsplash.com/photo-1555939594-58d7cb561ad1?w=800&q=80"
+ }
+ ]
+ },
+ {
+ id: "biralar",
+ title: "Biralar",
+ items: [
+ {
+ name: "Efes Özel Seri 50cl",
+ description: "Efes Özel Seri premium lager, 50cl kutuda servis edilir.",
+ price: "378 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ },
+ {
+ name: "Efes Malt 50cl",
+ description: "Zengin malt aromasıyla pürüzsüz bir koyu bira olan Efes Malt, 50cl kutuda servis edilir.",
+ price: "374 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ },
+ {
+ name: "Belfast 50cl",
+ description: "Pürüzsüz ve iyi dengeli tadıyla Belfast craft lager, 50cl kutuda servis edilir.",
+ price: "299 ₺",
+ image: "https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=800&q=80"
+ },
+ {
+ name: "Bomonti Filtresiz 50cl",
+ description: "Bomonti Filtresiz — doğal bulanık buğday birası, dolgun gövdesiyle 50cl kutuda servis edilir.",
+ price: "445 ₺",
+ image: "https://images.unsplash.com/photo-1555939594-58d7cb561ad1?w=800&q=80"
+ },
+ {
+ name: "Bud 33cl",
+ description: "Budweiser — klasik Amerikan lager, hafif ve ferah, 33cl şişede servis edilir.",
+ price: "377 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ },
+ {
+ name: "Becks 33cl",
+ description: "Beck's — sert atlama aromasıyla temiz ve çıtır Alman pilsneri, 33cl şişede.",
+ price: "415 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ },
+ {
+ name: "Miller 33cl",
+ description: "Miller Genuine Draft — hafif ve pürüzsüz Amerikan lager, 33cl şişede.",
+ price: "205 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Erdinger 33cl",
+ description: "Erdinger Weissbier — Bavyera'nın en iyisi, meyveli ve baharatlı notalarıyla buğday birası, 33cl.",
+ price: "387 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ },
+ {
+ name: "Heineken 33cl",
+ description: "Heineken — dünyaca ünlü Hollanda premium lager, çıtır ve ferah, 33cl şişede.",
+ price: "378 ₺",
+ image: "https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=800&q=80"
+ },
+ {
+ name: "Corona 35.5cl",
+ description: "Corona Extra — ikonik Meksika lager, misket limonuyla en güzel şekilde içilir, 35.5cl şişede.",
+ price: "375 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ },
+ {
+ name: "Stella Artois 33cl",
+ description: "Belçika'nın dünyaca ünlü premium lager birası, hafif meyvemsi ve ferahlatıcı tadıyla 33cl şişede.",
+ price: "419 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ }
+ ]
+ },
+ {
+ id: "shotlar",
+ title: "Shotlar",
+ items: [
+ {
+ name: "Jägermeister Shot",
+ description: "56 botanik ile hazırlanan efsanevi Alman bitkisel likörü Jägermeister, soğuk olarak servis edilir.",
+ price: "282 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ },
+ {
+ name: "Baileys Shot",
+ description: "Kremamsı ve zengin Baileys Original Irish Cream ile hazırlanan pürüzsüz ve lüks bir shot.",
+ price: "321 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ },
+ {
+ name: "Tekila Shot",
+ description: "Geleneksel yöntemle, bir tutam tuz ve misket limonu dilimiyle servis edilen klasik tekila shot.",
+ price: "371 ₺",
+ image: "https://images.unsplash.com/photo-1555939594-58d7cb561ad1?w=800&q=80"
+ }
+ ]
+ },
+ {
+ id: "sise-ve-kadeh-alkollu",
+ title: "Şişe & Kadeh Alkollü",
+ items: [
+ {
+ name: "Johnnie Walker Black Label 70cl",
+ description: "Johnnie Walker Black Label — en az 12 yıl yaşlandırılmış blended Scotch viski, zengin ve pürüzsüz. 7 ...",
+ price: "308 ₺",
+ image: "https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=800&q=80"
+ },
+ {
+ name: "Double Black Label 70cl",
+ description: "Johnnie Walker Double Black — Black Label'ın daha güçlü ve tütsülü yorumu, turba ve baharat notaları ...",
+ price: "389 ₺",
+ image: "https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=800&q=80"
+ },
+ {
+ name: "Johnnie Walker Gold Reserve 70cl",
+ description: "Johnnie Walker Gold Reserve — bal, vanilyalı ve toffee notalarıyla kremamsı blended Scotch viski. 70 ...",
+ price: "366 ₺",
+ image: "https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=800&q=80"
+ },
+ {
+ name: "Johnnie Walker 18yo 70cl",
+ description: "Johnnie Walker 18 Yıllık — olağanüstü derinlik ve pürüzsüzlüğe sahip, sofistike bir blended Scotch v ...",
+ price: "349 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Mortlach 12 70cl",
+ description: "Mortlach 12 Yıllık — kendine özgü damıtma süreciyle bilinen Speyside'den etli ve karmaşık bir single ...",
+ price: "288 ₺",
+ image: "https://images.unsplash.com/photo-1555939594-58d7cb561ad1?w=800&q=80"
+ },
+ {
+ name: "The Singleton 70cl",
+ description: "The Singleton — tatlı ve meyveli notalarıyla erişilebilir ve pürüzsüz bir single malt Scotch viski. ...",
+ price: "187 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ },
+ {
+ name: "Talisker 70cl",
+ description: "Talisker — Skye Adası'nın ikonik Island single malt'ı, güçlü turba ve deniz karakteriyle. 70cl şişe. ...",
+ price: "230 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ },
+ {
+ name: "Dimple Golden Selection 70cl",
+ description: "Dimple Golden Selection — pürüzsüz ve dengeli bir blended Scotch viski, içimi kolay ve zarif. 70cl ş ...",
+ price: "204 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ },
+ {
+ name: "Smirnoff North 70cl",
+ description: "Smirnoff North — olağanüstü pürüzsüzlük için üç kez damıtılmış, temiz ve çıtır bir premium votka. 70 ...",
+ price: "171 ₺",
+ image: "https://images.unsplash.com/photo-1555939594-58d7cb561ad1?w=800&q=80"
+ },
+ {
+ name: "Ketel One 70cl",
+ description: "Ketel One — bakır pot distilasyonuyla üretilen premium Hollanda buğday votkası, ipeksi pürüzsüz ve ç ...",
+ price: "255 ₺",
+ image: "https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=800&q=80"
+ },
+ {
+ name: "Gordon's Pink Cin 70cl",
+ description: "Gordon's Premium Pink Gin — ahududu, çilek ve kırmızı frenk üzümü aromalarıyla klasiğe meyveli bir y ...",
+ price: "271 ₺",
+ image: "https://images.unsplash.com/photo-1555939594-58d7cb561ad1?w=800&q=80"
+ },
+ {
+ name: "Tanqueray No. Ten 70cl",
+ description: "Tanqueray No. TEN — greyfurt, portakal ve misket limonuyla damıtılmış ultra-premium cin. 70cl şişe. ...",
+ price: "313 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Captain Morgan 70cl",
+ description: "Captain Morgan Original Spiced Gold — ısıtıcı baharatlar ve doğal aromalarla harmanlanmış Karayip ru ...",
+ price: "292 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ },
+ {
+ name: "Don Julio 70cl",
+ description: "Don Julio — Jalisco yaylalarından premium %100 mavi agave tekilası, pürüzsüz ve rafine. 70cl şişe. F ...",
+ price: "294 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Gordons GIN 70cl",
+ description: "Gordon's London Dry Gin, 70cl şişe. Klasik, ardıç aromalı cin.",
+ price: "230 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ },
+ {
+ name: "Jägermeister",
+ description: "Jägermeister — 56 botanik ile hazırlanan efsanevi Alman bitkisel likörü, buz üzerinde kadeh olarak s ...",
+ price: "377 ₺",
+ image: "https://images.unsplash.com/photo-1555939594-58d7cb561ad1?w=800&q=80"
+ },
+ {
+ name: "Gordon's",
+ description: "Gordon's London Dry Gin — ardıç ve narenciye notalarıyla klasik ve çıtır cin, kadeh olarak servis ed ...",
+ price: "314 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ },
+ {
+ name: "Gordon's Pink",
+ description: "Gordon's Premium Pink Gin — meyveli, tatlı ve ferah karakterde meyve aromalı cin, kadeh olarak.",
+ price: "170 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ },
+ {
+ name: "Tanqueray No. Ten",
+ description: "Tanqueray No. TEN — taze narenciye meyvesiyle damıtılmış ultra-premium cin, kadeh olarak.",
+ price: "307 ₺",
+ image: "https://images.unsplash.com/photo-1555939594-58d7cb561ad1?w=800&q=80"
+ },
+ {
+ name: "Tanqueray Gin",
+ description: "Tanqueray London Dry Gin — güçlü ve belirgin ardıç karakteriyle cesur, tam aromalı cin, kadeh olarak ...",
+ price: "333 ₺",
+ image: "https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=800&q=80"
+ },
+ {
+ name: "Ketel One",
+ description: "Ketel One — bakır pot distilasyonuyla üretilen premium Hollanda buğday votkası, kadeh olarak.",
+ price: "267 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ },
+ {
+ name: "Dimple",
+ description: "Dimple — klasik ve pürüzsüz blended Scotch viski, kadeh olarak servis edilir.",
+ price: "402 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Johnnie Walker Black Label",
+ description: "Johnnie Walker Black Label — 12 yıl yaşlandırılmış, zengin ve tütsülü katmanlı kompleks viski, kadeh ...",
+ price: "165 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ },
+ {
+ name: "Lagavulin",
+ description: "Lagavulin — yoğun turba dumanı, deniz yosunu ve koyu meyve notalarıyla efsanevi Islay single malt, k ...",
+ price: "312 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ }
+ ]
+ },
+ {
+ id: "saraplar",
+ title: "Şaraplar",
+ items: [
+ {
+ name: "Kırmızı Şarap Kadeh",
+ description: "Özenle seçilmiş ev kırmızı şarabı, kadeh olarak servis edilir — zengin, dolgun gövdeli ve pürüzsüz.",
+ price: "314 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Beyaz Şarap Kadeh",
+ description: "Özenle seçilmiş ev beyaz şarabı, kadeh olarak servis edilir — çıtır, hafif ve ferahlatıcı.",
+ price: "258 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Rose Şarap Kadeh",
+ description: "Özenle seçilmiş ev rosé şarabı, kadeh olarak servis edilir — taze, meyveli ve mükemmel dengeli.",
+ price: "380 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ }
+ ]
+ },
+ {
+ id: "cerezler",
+ title: "Çerezler",
+ items: [
+ {
+ name: "Antep Fıstığı",
+ description: "Gaziantep'in kaliteli, zengin ve lezzetli kavrulmuş Antep fıstığı.",
+ price: "318 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ },
+ {
+ name: "Badem",
+ description: "Hafifçe kavrulmuş badem — çıtır, besleyici ve doyurucu.",
+ price: "385 ₺",
+ image: "https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=800&q=80"
+ },
+ {
+ name: "Fındık",
+ description: "Kavrulmuş Türk fındığı — Karadeniz bölgesinin en iyisi, zengin aromalı ve doğal tatlılıkta.",
+ price: "244 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ },
+ {
+ name: "Karnaval",
+ description: "Karnaval — içeceklerin yanında paylaşmak için ideal, karışık atıştırmalık çerez seçkisi.",
+ price: "273 ₺",
+ image: "https://images.unsplash.com/photo-1555939594-58d7cb561ad1?w=800&q=80"
+ },
+ {
+ name: "Sarı Leblebi",
+ description: "Sarı leblebi — kavrulmuş ve çıtır, sevilen geleneksel Türk atıştırmalığı.",
+ price: "172 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ },
+ {
+ name: "Tuzlu Fıstık",
+ description: "Klasik kavrulmuş tuzlu fıstık — çıtır, mükemmel baharatlı ve soğuk içecekle mükemmel uyum.",
+ price: "213 ₺",
+ image: "https://images.unsplash.com/photo-1555939594-58d7cb561ad1?w=800&q=80"
+ }
+ ]
+ },
+ {
+ id: "alkolsuz-i̇cecekler",
+ title: "Alkolsüz İçecekler",
+ items: [
+ {
+ name: "Kola",
+ description: "Soğuk servis edilen klasik kola.",
+ price: "239 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Fanta",
+ description: "Narenciye aromasıyla dolu, meyveli ve köpüklü Fanta portakal, soğuk servis edilir.",
+ price: "150 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ },
+ {
+ name: "Sprite",
+ description: "Limon-misket limonu aromasıyla çıtır ve ferah, köpüklü Sprite.",
+ price: "430 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Ice Tea (Limon / Şeftali / Mango)",
+ description: "Limon, şeftali veya mango seçeneğiyle sunulan ferah ice tea.",
+ price: "344 ₺",
+ image: "https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=800&q=80"
+ },
+ {
+ name: "Churcill",
+ description: "Churchill premium köpüklü maden suyu — ince kabarcıklar, temiz tat ve mükemmel serinleticilik.",
+ price: "308 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Uudağ Premium Soda",
+ description: "Uludağ Premium Soda — çıtır ve temiz bir tada sahip, Türkiye'nin sevilen köpüklü içeceği.",
+ price: "231 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ },
+ {
+ name: "Su 0.33cl (Uludağ Cam Şişe)",
+ description: "Şık Uludağ cam şişesinde servis edilen 0.33cl maden suyu.",
+ price: "273 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ },
+ {
+ name: "Jobi Sıkma Portakal",
+ description: "Jobi taze sıkma portakal suyu — %100 doğal, canlı ve vitamin dolu.",
+ price: "174 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Jobi Sıkma Nar Suyu",
+ description: "Jobi taze sıkma nar suyu — antioksidan açısından zengin, derin ve doğal tatlılıkta.",
+ price: "191 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Jobi Sıkma Mandalina Suyu",
+ description: "Jobi taze sıkma mandalina suyu — parlak ve taze aromasıyla doğal tatlılıkta narenciye suyu.",
+ price: "257 ₺",
+ image: "https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=800&q=80"
+ },
+ {
+ name: "Cool Lime",
+ description: "Çıtır, narenciyeli ve ferahlatan misket limonlu köpüklü içecek.",
+ price: "203 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Strawberry & Hibiscus",
+ description: "Tatlı çilekle hibiskusun çiçeksi ekşiliğini birleştiren, meyveli ve çiçeksi köpüklü içecek.",
+ price: "381 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ },
+ {
+ name: "Limonata",
+ description: "Tatlı ve ekşinin mükemmel dengesinde, taze yapılmış limonata.",
+ price: "358 ₺",
+ image: "https://images.unsplash.com/photo-1555939594-58d7cb561ad1?w=800&q=80"
+ },
+ {
+ name: "Red Bull Energy Drink",
+ description: "Red Bull Enerji İçeceği — taurin, kafein ve B vitaminleriyle orijinal enerji içeceği.",
+ price: "379 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Red Bull Sugarfree",
+ description: "Red Bull Şekersiz — aynı enerji, şekersiz ve daha hafif seçenek.",
+ price: "268 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ },
+ {
+ name: "Red Bull Blue Edition",
+ description: "Red Bull Blue Edition — yaban mersini aromasıyla Red Bull enerjisi.",
+ price: "288 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ },
+ {
+ name: "Red Bull Pink Edition",
+ description: "Red Bull Pink Edition — çilek ve yaban mersini aromasıyla Red Bull enerjisi.",
+ price: "166 ₺",
+ image: "https://images.unsplash.com/photo-1555939594-58d7cb561ad1?w=800&q=80"
+ },
+ {
+ name: "Red Bull White Edition",
+ description: "Red Bull White Edition — hindistan cevizi ve zencefil aromasıyla Red Bull enerjisi.",
+ price: "403 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ }
+ ]
+ },
+ {
+ id: "sicak-kahveler",
+ title: "Sıcak Kahveler",
+ items: [
+ {
+ name: "Espresso Single",
+ description: "Yoğun ve konsantre, tek shot espresso — güçlü, pürüzsüz ve bol aromali.",
+ price: "339 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ },
+ {
+ name: "Espresso Double",
+ description: "Daha güçlü yoğunluğuyla derin ve pürüzsüz bir bitiş sunan çift shot espresso.",
+ price: "399 ₺",
+ image: "https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=800&q=80"
+ },
+ {
+ name: "Americano",
+ description: "Sıcak su ile seyreltilmiş espresso — pürüzsüz, dolgun gövdeli ve mükemmel dengeli.",
+ price: "262 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ },
+ {
+ name: "Cortado",
+ description: "Eşit miktarda ılık buharda pişirilmiş sütle yumuşatılmış espresso — pürüzsüz, zengin ve dengeli.",
+ price: "391 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ },
+ {
+ name: "Flat White",
+ description: "Çift ristretto üzerine ipeksi buharda pişirilmiş süt — yoğun kahve aroması ve kremsi bitiş.",
+ price: "286 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Cappucino",
+ description: "Klasik cappucino — eşit oranda buharda pişirilmiş süt ve yoğun köpükle servis edilen espresso.",
+ price: "369 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Cafe Latte",
+ description: "Bol buharda pişirilmiş süt ve ince köpük tabakasıyla espresso — pürüzsüz, kremsi ve rahatlatıcı.",
+ price: "228 ₺",
+ image: "https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=800&q=80"
+ },
+ {
+ name: "Matcha Latte",
+ description: "Premium seremoni kalitesinde matcha, pürüzsüz bir macun haline getirilip kadifemsi buharda sütle kar ...",
+ price: "217 ₺",
+ image: "https://images.unsplash.com/photo-1555939594-58d7cb561ad1?w=800&q=80"
+ },
+ {
+ name: "Mocha",
+ description: "Zengin çikolata sosu ve buharda pişirilmiş sütle espresso — bol, tatlı ve derin bir lezzet.",
+ price: "156 ₺",
+ image: "https://images.unsplash.com/photo-1482049016688-2d3e1b311543?w=800&q=80"
+ },
+ {
+ name: "Sıcak Çikolata",
+ description: "Zengin kakao ile hazırlanan premium sıcak çikolata — yoğun, kadifemsi ve rahatlatıcı.",
+ price: "158 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ },
+ {
+ name: "Türk Kahvesi",
+ description: "Ince öğütülmüş ve bakır cezvede pişirilen geleneksel Türk kahvesi — zengin, aromatik ve tarihe dolu.",
+ price: "175 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ },
+ {
+ name: "Filter Kahve",
+ description: "Yavaş demlenmiş filtre kahve — temiz, parlak ve nüanslı aroma notalarıyla dolu.",
+ price: "372 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ }
+ ]
+ },
+ {
+ id: "soguk-kahveler",
+ title: "Soğuk Kahveler",
+ items: [
+ {
+ name: "Cold Brew",
+ description: "12 saatten fazla soğuk suda demlenen cold brew — son derece pürüzsüz, düşük asitli ve doğal tatlılık ...",
+ price: "245 ₺",
+ image: "https://images.unsplash.com/photo-1555939594-58d7cb561ad1?w=800&q=80"
+ },
+ {
+ name: "Iced Americano",
+ description: "Buz üzerine dökülmüş çift espresso, soğuk su ile tamamlanır — ferahlatıcı, güçlü ve pürüzsüz.",
+ price: "407 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ },
+ {
+ name: "Iced Latte",
+ description: "Buz üzerine dökülmüş espresso ve soğuk süt — pürüzsüz, kremsi ve ferahlatıcı serinlikte.",
+ price: "366 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ },
+ {
+ name: "Freddo Espresso",
+ description: "Yunan usulü freddo espresso — çift espresso çalkalanarak kremsi köpük elde edilir ve buz üzerinde se ...",
+ price: "402 ₺",
+ image: "https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=800&q=80"
+ },
+ {
+ name: "Freddo Cappucino",
+ description: "Yunan usulü freddo cappucino — buz espresso üzerine soğuk, yoğun köpüklü süt ile servis edilir.",
+ price: "227 ₺",
+ image: "https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=800&q=80"
+ },
+ {
+ name: "Freddo Flat White",
+ description: "Yunan usulü freddo flat white — çift ristretto üzerine ipeksi soğuk süt köpüğü ile yoğun kahve deney ...",
+ price: "240 ₺",
+ image: "https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=800&q=80"
+ },
+ {
+ name: "Iced Chocolate Mocha",
+ description: "Espresso, çikolata sosu, buz ve soğuk süt ile birleştirilir — zengin ve lezzetli soğuk kahve keyfi.",
+ price: "154 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ },
+ {
+ name: "Iced Chocolate",
+ description: "Zengin çikolata, soğuk sütle harmanlanıp buz üzerine dökülür — ferahlatıcı ve lezzetli çikolata keyf ...",
+ price: "281 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ },
+ {
+ name: "Iced Matcha Latte",
+ description: "Premium seremoni kalitesinde matcha, soğuk sütle karıştırılıp buz üzerine dökülür — toprak aroması, ...",
+ price: "234 ₺",
+ image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=800&q=80"
+ }
+ ]
+ },
+ {
+ id: "ekstralar",
+ title: "Ekstralar",
+ items: [
+ {
+ name: "Ekstra",
+ description: "(Karamel / Vanilya / Çilek / Çikolata)",
+ price: "163 ₺",
+ image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=800&q=80"
+ },
+ {
+ name: "Vegan Yulaf Sütü Ekstrası",
+ description: "Bitkisel yulaf sütü ile içeceğinizi yükseltin — kremsi, vegan dostu ve lezzetli.",
+ price: "205 ₺",
+ image: "https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=800&q=80"
+ }
+ ]
+ }
+];
diff --git a/docs/prd.md b/docs/prd.md
new file mode 100644
index 0000000..9642755
--- /dev/null
+++ b/docs/prd.md
@@ -0,0 +1,45 @@
+# Moy Beach Akyaka — QR Dijital Menü Yenileme Prompt'u
+
+## Proje Tanımı
+
+**URL:** menu.moybeachakyaka.com
+**Tip:** QR kod ile masadan erişilen tek sayfalık dijital menü
+**Dil:** Türkçe + İngilizce
+**Kullanıcı:** Masada oturan misafir, telefonuyla QR okutarak erişiyor
+
+Mevcut QR menü sitesini kullanım kolaylığı, görsel kalite ve marka tutarlılığı
+açısından yenile. Site bir e-ticaret ya da rezervasyon platformu değil;
+**sadece menüyü hızlı ve rahat gösteren bir dijital liste.**
+
+---
+
+## Mevcut Sorunlar
+
+**Navigasyon**
+- Kategori yok, kullanıcı sayfayı sonuna kadar kaydırmak zorunda
+- Telefonda çok uzun bir scroll deneyimi oluşuyor
+
+**Görsel**
+- Hiçbir üründe fotoğraf yok, hepsi aynı generik çatal-kaşık ikonu gösteriyor
+- Ürünler birbirinden görsel olarak ayrışmıyor
+
+**İçerik Tutarsızlıkları**
+- Bazı ürün açıklamaları İngilizce kalmış
+ (örn. Roka Salatası: *"Pink Tomatoes, Arugula, Parmesan and Balsamic Glaze"*)
+- Şişe içeceklerin tamamında fiyat **₺0,00** görünüyor
+- Stella Artois birasının açıklaması hiç yok
+
+**Mobil Deneyim**
+- 3'lü grid layout dar telefonlarda okunaksız hale geliyor
+- Ürün adları ve açıklamalar kırpılıyor (`...` ile bitiyor), tam metin görülemiyor
+
+---
+
+## İstenen İyileştirmeler
+
+### 1. Kategori Navigasyonu
+
+Sayfanın üstüne sabit (sticky) yatay kaydırılabilir bir kategori çubuğu ekle.
+Tıklandığında ilgili bölüme smooth scroll ile git.
+
+Kategoriler (mevcut sırayla):
\ No newline at end of file
diff --git a/next.config.ts b/next.config.ts
index e9ffa30..df8e604 100644
--- a/next.config.ts
+++ b/next.config.ts
@@ -1,7 +1,8 @@
import type { NextConfig } from "next";
const nextConfig: NextConfig = {
- /* config options here */
+ output: "standalone",
+ /* other config options here */
};
export default nextConfig;
diff --git a/package-lock.json b/package-lock.json
index cc38e0e..c959555 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,6 +8,8 @@
"name": "moy-qr",
"version": "0.1.0",
"dependencies": {
+ "framer-motion": "^12.40.0",
+ "lucide-react": "^1.17.0",
"next": "16.2.7",
"react": "19.2.4",
"react-dom": "19.2.4"
@@ -3762,6 +3764,33 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/framer-motion": {
+ "version": "12.40.0",
+ "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.40.0.tgz",
+ "integrity": "sha512-uaBd3qC1v3KQqBEjwTUd183K6PbS+j0yR9w9VmEOLWA/tnUcSn8Xa3uck7t4dgpDoUss8xQTcj8W2L07lrnLFg==",
+ "license": "MIT",
+ "dependencies": {
+ "motion-dom": "^12.40.0",
+ "motion-utils": "^12.39.0",
+ "tslib": "^2.4.0"
+ },
+ "peerDependencies": {
+ "@emotion/is-prop-valid": "*",
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@emotion/is-prop-valid": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ }
+ }
+ },
"node_modules/function-bind": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
@@ -5032,6 +5061,15 @@
"yallist": "^3.0.2"
}
},
+ "node_modules/lucide-react": {
+ "version": "1.17.0",
+ "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-1.17.0.tgz",
+ "integrity": "sha512-9FA9evdox/JQL5PT57fdA1x/yg8T7knJ98+zjTL3UfKza6pflQUUh3XtaQIHKvnsJw1lmsEyHVlt5jchYxOQ5w==",
+ "license": "ISC",
+ "peerDependencies": {
+ "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0"
+ }
+ },
"node_modules/magic-string": {
"version": "0.30.21",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
@@ -5099,6 +5137,21 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/motion-dom": {
+ "version": "12.40.0",
+ "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.40.0.tgz",
+ "integrity": "sha512-HxU3ZaBwNPVQUBQf1xxgq+7JrPNZvjLVxgbpEZL7RrWJnsxOf0/OM+yrHG9ogLQ31Do/r57Oz2gQWPK+6q62mg==",
+ "license": "MIT",
+ "dependencies": {
+ "motion-utils": "^12.39.0"
+ }
+ },
+ "node_modules/motion-utils": {
+ "version": "12.39.0",
+ "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.39.0.tgz",
+ "integrity": "sha512-8nadJAJjTtqRkmRF36FoJTrywK9nnFmnPwnSMyxaOCU7GDjN9RTMJIxx9De8ErM+vpPhMccr/6fo5WciyQLnMQ==",
+ "license": "MIT"
+ },
"node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
diff --git a/package.json b/package.json
index 8fcfa88..afc50bc 100644
--- a/package.json
+++ b/package.json
@@ -9,6 +9,8 @@
"lint": "eslint"
},
"dependencies": {
+ "framer-motion": "^12.40.0",
+ "lucide-react": "^1.17.0",
"next": "16.2.7",
"react": "19.2.4",
"react-dom": "19.2.4"
diff --git a/public/header-bg.jpg b/public/header-bg.jpg
new file mode 100644
index 0000000..ddd3b1f
Binary files /dev/null and b/public/header-bg.jpg differ