diff --git a/app/(dashboard)/.gitkeep b/app/(dashboard)/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/app/(dashboard)/dashboard/page.tsx b/app/(dashboard)/dashboard/page.tsx
new file mode 100644
index 0000000..83e7937
--- /dev/null
+++ b/app/(dashboard)/dashboard/page.tsx
@@ -0,0 +1,130 @@
+
+import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"
+import { DollarSign, ShoppingCart, Users, CreditCard } from "lucide-react"
+
+export default function DashboardPage() {
+ return (
+
+
+
Genel Bakış
+
+
+ {/* Stats Grid */}
+
+
+
+ Toplam Gelir
+
+
+
+ ₺45,231.89
+ +20.1% geçen aya göre
+
+
+
+
+ Abonelikler
+
+
+
+ +2350
+ +180.1% geçen aya göre
+
+
+
+
+ Satışlar
+
+
+
+ +12,234
+ +19% geçen aya göre
+
+
+
+
+ Aktif Şimdi
+
+
+
+ +573
+ +201 son bir saatte
+
+
+
+
+
+ {/* Recent Sales / Activity */}
+
+
+ Son Hareketler
+
+ Bu ay 265+ satış yaptınız.
+
+
+
+ {/* Mock List */}
+
+
+
+ OM
+
+
+
Ozan Mehmet
+
ozan@email.com
+
+
+₺1,999.00
+
+
+
+ AÖ
+
+
+
Ayşe Özdemir
+
ayse@email.com
+
+
+₺39.00
+
+
+
+ MK
+
+
+
Mehmet Kaya
+
mehmet@email.com
+
+
+₺299.00
+
+
+
+
+
+ {/* Recent Products or Other Info */}
+
+
+ Son Eklenen Ürünler
+
+ Stoğa yeni giren ürünler.
+
+
+
+
+
+ Çelik Kasa EV-100
+ Stokta
+
+
+ Ofis Tipi XYZ
+ Azaldı
+
+
+ Otel Kasası H-20
+ Stokta
+
+
+
+
+
+
+ )
+}
diff --git a/app/(dashboard)/layout.tsx b/app/(dashboard)/layout.tsx
new file mode 100644
index 0000000..080a16e
--- /dev/null
+++ b/app/(dashboard)/layout.tsx
@@ -0,0 +1,34 @@
+import { createClient } from "@/lib/supabase-server"
+import { redirect } from "next/navigation"
+import { Sidebar } from "@/components/dashboard/sidebar"
+import { DashboardHeader } from "@/components/dashboard/header"
+
+export default async function DashboardLayout({
+ children,
+}: Readonly<{
+ children: React.ReactNode;
+}>) {
+ const supabase = createClient()
+ const { data: { user } } = await supabase.auth.getUser()
+
+ if (!user) {
+ redirect("/login")
+ }
+
+ return (
+
+
+
+
+
+ {children}
+
+
+
+ );
+}
diff --git a/app/(public)/.gitkeep b/app/(public)/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/app/(public)/contact/page.tsx b/app/(public)/contact/page.tsx
new file mode 100644
index 0000000..62155f8
--- /dev/null
+++ b/app/(public)/contact/page.tsx
@@ -0,0 +1,183 @@
+"use client"
+
+import { useState } from "react"
+import { useForm } from "react-hook-form"
+import { zodResolver } from "@hookform/resolvers/zod"
+import { Button } from "@/components/ui/button"
+import { Input } from "@/components/ui/input"
+import { Textarea } from "@/components/ui/textarea"
+import { Card, CardContent } from "@/components/ui/card"
+import { Mail, MapPin, Phone, Loader2, CheckCircle } from "lucide-react"
+import { contactFormSchema, ContactFormValues } from "@/lib/schemas"
+import { submitContactForm } from "@/lib/actions/contact"
+import { toast } from "sonner"
+
+export default function ContactPage() {
+ const [isSubmitting, setIsSubmitting] = useState(false)
+ const [isSuccess, setIsSuccess] = useState(false)
+
+ const form = useForm({
+ resolver: zodResolver(contactFormSchema),
+ defaultValues: {
+ name: "",
+ surname: "",
+ email: "",
+ phone: "",
+ subject: "",
+ message: "",
+ },
+ })
+
+ async function onSubmit(data: ContactFormValues) {
+ setIsSubmitting(true)
+ try {
+ const response = await submitContactForm(data)
+ if (response.success) {
+ setIsSuccess(true)
+ form.reset()
+ toast.success("Mesajınız başarıyla gönderildi.")
+ } else {
+ toast.error("Hata: " + response.error)
+ }
+ } catch (error) {
+ toast.error("Bir hata oluştu.")
+ } finally {
+ setIsSubmitting(false)
+ }
+ }
+
+ return (
+
+
+
İletişime Geçin
+
+ Sorularınız, teklif talepleriniz veya teknik destek için bize ulaşın.
+
+
+
+
+
+
+
İletişim Bilgileri
+
+
+
+
Merkez Ofis & Showroom
+
+ Organize Sanayi Bölgesi, 12. Cadde No: 45
+ Başakşehir, İstanbul
+
+
+
+
+
+
+
Telefon
+
+90 (212) 555 00 00
+
+
+
+
+
+
E-posta
+
info@parakasa.com
+
+
+
+
+
+ Harita (Google Maps Embed)
+
+
+
+
+
+
+ {isSuccess ? (
+
+
+
Mesajınız Alındı!
+
+ En kısa sürede size dönüş yapacağız.
+
+
setIsSuccess(false)} variant="outline">
+ Yeni Mesaj Gönder
+
+
+ ) : (
+
+ )}
+
+
+
+
+ )
+}
diff --git a/app/(public)/corporate/page.tsx b/app/(public)/corporate/page.tsx
new file mode 100644
index 0000000..419f327
--- /dev/null
+++ b/app/(public)/corporate/page.tsx
@@ -0,0 +1,58 @@
+
+import Image from "next/image"
+
+export default function CorporatePage() {
+ return (
+
+
+
+ Hakkımızda
+
+ 1995'ten beri güvenliğinizi en değerli hazinemiz olarak görüyoruz.
+
+
+
+
+
+ {/* Placeholder Image */}
+
+ Şirket Görseli
+
+
+
+
Misyonumuz
+
+ ParaKasa olarak misyonumuz, müşterilerimizin maddi ve manevi değerlerini korumak için
+ dünya standartlarında güvenlik çözümleri sunmaktır. Teknolojiyi zanaatkarlıkla birleştirerek,
+ sadece bir metal kutu değil, huzur ve güven üretiyoruz.
+
+
Vizyonumuz
+
+ Türkiye'nin lider çelik kasa üreticisi olarak, global pazarda güvenilirlik ve kalite
+ denince akla gelen ilk marka olmak. Yenilikçi Ar-Ge çalışmalarımızla güvenlik teknolojilerine
+ yön vermek.
+
+
+
+
+
+
+
+ )
+}
diff --git a/app/(public)/layout.tsx b/app/(public)/layout.tsx
new file mode 100644
index 0000000..9208035
--- /dev/null
+++ b/app/(public)/layout.tsx
@@ -0,0 +1,20 @@
+
+import { Navbar } from "@/components/layout/navbar";
+import { Footer } from "@/components/layout/footer";
+
+export default function PublicLayout({
+ children,
+}: Readonly<{
+ children: React.ReactNode;
+}>) {
+ return (
+
+
+ ⚠️ SİTE YAPIM AŞAMASINDADIR
+
+
+
{children}
+
+
+ );
+}
diff --git a/app/login/page.tsx b/app/(public)/login/page.tsx
similarity index 94%
rename from app/login/page.tsx
rename to app/(public)/login/page.tsx
index 66c3812..0d037ea 100644
--- a/app/login/page.tsx
+++ b/app/(public)/login/page.tsx
@@ -88,10 +88,6 @@ export default function LoginPage() {
- Hesabınız yok mu?{" "}
-
- Kayıt Ol
-
Ana Sayfaya Dön
diff --git a/app/page.tsx b/app/(public)/page.tsx
similarity index 92%
rename from app/page.tsx
rename to app/(public)/page.tsx
index ac277af..465ddec 100644
--- a/app/page.tsx
+++ b/app/(public)/page.tsx
@@ -1,10 +1,14 @@
import Link from "next/link"
import Image from "next/image"
-import { ArrowRight, ShieldCheck, Lock, Award, History } from "lucide-react"
+import { ArrowRight, ShieldCheck, Lock, Award, History, LayoutDashboard, LogIn } from "lucide-react"
import { Button } from "@/components/ui/button"
import { Card, CardContent } from "@/components/ui/card"
+import { createClient } from "@/lib/supabase-server"
+
+export default async function Home() {
+ const supabase = createClient()
+ const { data: { user } } = await supabase.auth.getUser()
-export default function Home() {
return (
{/* Hero Section */}
@@ -33,9 +37,14 @@ export default function Home() {
Koleksiyonu İncele
-
- Teklif Al
-
+ {user && (
+
+
+
+ Panele Git
+
+
+ )}
diff --git a/app/(public)/products/page.tsx b/app/(public)/products/page.tsx
new file mode 100644
index 0000000..040753d
--- /dev/null
+++ b/app/(public)/products/page.tsx
@@ -0,0 +1,80 @@
+
+import { Card, CardContent, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"
+import { Button } from "@/components/ui/button"
+import Image from "next/image"
+
+const products = [
+ {
+ id: 1,
+ name: "Ev Tipi Çelik Kasa",
+ image: "/images/safe-1.jpg",
+ category: "Ev",
+ },
+ {
+ id: 2,
+ name: "Ofis Tipi Yanmaz Kasa",
+ image: "/images/safe-2.jpg",
+ category: "Ofis",
+ },
+ {
+ id: 3,
+ name: "Otel Odası Kasası",
+ image: "/images/safe-3.jpg",
+ category: "Otel",
+ },
+ {
+ id: 4,
+ name: "Silah Kasası (Tüfek)",
+ image: "/images/safe-4.jpg",
+ category: "Özel",
+ },
+ {
+ id: 5,
+ name: "Kuyumcu Kasası",
+ image: "/images/safe-5.jpg",
+ category: "Ticari",
+ },
+ {
+ id: 6,
+ name: "Duvar İçi Gizli Kasa",
+ image: "/images/safe-6.jpg",
+ category: "Ev",
+ },
+]
+
+export default function ProductsPage() {
+ return (
+
+
+
Ürün Koleksiyonumuz
+
+ Güvenliğiniz için en son teknoloji ile üretilmiş, sertifikalı çelik kasa çözümlerimizi inceleyin.
+
+
+
+
+ {products.map((product) => (
+
+
+ {/* Placeholder for real images */}
+
+ Görsel: {product.name}
+
+
+
+
+
+ {product.category}
+ {product.name}
+
+
+
+
+ Detayları İncele
+
+
+ ))}
+
+
+ )
+}
diff --git a/app/signup/page.tsx b/app/(public)/signup/page.tsx
similarity index 100%
rename from app/signup/page.tsx
rename to app/(public)/signup/page.tsx
diff --git a/app/layout.tsx b/app/layout.tsx
index 009bca8..bc34f6f 100644
--- a/app/layout.tsx
+++ b/app/layout.tsx
@@ -1,11 +1,8 @@
import type { Metadata } from "next";
import { Inter, Outfit } from "next/font/google";
-import { Navbar } from "@/components/layout/navbar";
-import { Footer } from "@/components/layout/footer";
+import { Toaster } from "sonner";
import "./globals.css";
-
-
const inter = Inter({ subsets: ["latin"] });
const outfit = Outfit({ subsets: ["latin"], variable: "--font-outfit" });
@@ -24,9 +21,8 @@ export default function RootLayout({
-
- {children}
-
+ {children}
+