diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index 13d0e20..4fefebe 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -1,4 +1,5 @@
import type { Metadata, Viewport } from "next";
+import Script from "next/script";
import { Cal_Sans, Geist_Mono, Bricolage_Grotesque } from "next/font/google";
import localFont from "next/font/local";
import { Toaster } from "@/components/ui/sonner";
@@ -83,6 +84,12 @@ export default function RootLayout({
// içerikle büyümeli, viewport tabanı body'deki min-h-dvh'den gelir.
className={`${calSans.variable} ${clarityCity.variable} ${geistMono.variable} ${bricolage.variable} antialiased`}
>
+ {/* Rybbit analytics — beforeInteractive her zaman
içine defer olarak enjekte edilir */}
+
{/* Site geneli progressive blur — üst ve alt */}
diff --git a/src/app/odeme/sonuc/page.tsx b/src/app/odeme/sonuc/page.tsx
index 9d10b07..9d97762 100644
--- a/src/app/odeme/sonuc/page.tsx
+++ b/src/app/odeme/sonuc/page.tsx
@@ -21,7 +21,11 @@ export default async function OdemeSonucPage({
searchParams: Promise<{ siparis?: string }>;
}) {
const { siparis } = await searchParams;
- const session = await verifySession("/paket");
+ // Oturum düşmüşse geri dönüşte ?siparis= kaybolmasın (başarı/unblur deneyimi)
+ const geriDonus = siparis
+ ? `/odeme/sonuc?siparis=${encodeURIComponent(siparis)}`
+ : "/paket";
+ const session = await verifySession(geriDonus);
const order = siparis
? await appDb.query.orders.findFirst({
diff --git a/src/app/page.tsx b/src/app/page.tsx
index 82eed20..74af976 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -1,10 +1,14 @@
import {
+ ArrowRight,
ArrowUpRight,
BarChart3,
CheckCircle2,
+ Coins,
Compass,
+ FileText,
ListChecks,
MessageCircleQuestion,
+ RefreshCcw,
ShieldCheck,
TrendingUp,
Wallet,
@@ -24,13 +28,14 @@ import {
PixelField,
SectionEyebrow,
} from "@/components/pixel-decor";
-import { URUNLER } from "@/lib/credits";
+import { MAX_REVIZYON, URUNLER } from "@/lib/credits";
import {
Accordion,
AccordionContent,
AccordionItem,
AccordionTrigger,
} from "@/components/ui/accordion";
+import { Button } from "@/components/ui/button";
import {
Card,
CardDescription,
@@ -160,10 +165,27 @@ const comparison = [
feature: "Fiyat",
robot: "Ücretsiz",
danisman: "2.000–10.000 TL",
- tercihai: "İnsan danışmanın ~10'da 1'i",
+ tercihai: `${PAKET_FIYATI} TL · tek seferlik`,
},
];
+const paketOzellikleri = [
+ {
+ icon: ListChecks,
+ text: "Sıralamana özel, gerekçeli 24 tercihlik dengeli liste",
+ },
+ {
+ icon: ShieldCheck,
+ text: "Her tercih için yerleşme olasılığı ve risk analizi (son 4 yıl)",
+ },
+ { icon: FileText, text: "Veliyle paylaşılabilir PDF rapor" },
+ { icon: RefreshCcw, text: `${MAX_REVIZYON} liste revizyon hakkı` },
+ {
+ icon: MessageCircleQuestion,
+ text: `${URUNLER.paket.credits} yapay zekâ danışman sorusu`,
+ },
+] as const;
+
function ComparisonCell({ value }: { value: boolean | string }) {
if (typeof value === "string") {
return {value};
@@ -452,7 +474,102 @@ export default function Home() {
- {/* Karşılaştırma → SSS geçişi */}
+ {/* Karşılaştırma → Fiyat geçişi */}
+
+
+ {/* Fiyat */}
+
+
+
+
+ Tek seferlik · Abonelik yok
+
+ Ne kadar? Ne dahil?
+
+
+ İnsan danışmanın 2.000–10.000 TL aldığı işi tek seferlik{" "}
+ {PAKET_FIYATI} TL'ye alırsın. Abonelik yok, gizli ücret
+ yok.
+
+
+
+
+
+
+
+
+ {URUNLER.paket.label}
+
+
+ {PAKET_FIYATI} TL
+
+
+
+ {paketOzellikleri.map((o) => (
+ -
+
+ {o.text}
+
+ ))}
+
+
+
+ Temel program arama herkes için ücretsiz · iyzico güvenli ödeme
+
+
+
+
+
+
+
Kredi bitti mi?
+
+
+ +{URUNLER.topup.credits} soru hakkı, {TOPUP_FIYATI} TL. Pakete
+ ek olarak, istediğin zaman.
+
+
+
+
+
+
+
+ {/* Fiyat → SSS geçişi */}
diff --git a/src/app/paket/page.tsx b/src/app/paket/page.tsx
index 4ab6084..e6158ff 100644
--- a/src/app/paket/page.tsx
+++ b/src/app/paket/page.tsx
@@ -1,6 +1,7 @@
import Link from "next/link";
import type { Metadata } from "next";
import {
+ ArrowRight,
CheckCircle2,
Coins,
FileText,
@@ -122,16 +123,23 @@ export default async function PaketPage({
/>
)
) : (
-
+
+ Girişte {DENEME_KREDISI} deneme kredisi de tanımlanır.
+
+
)}
@@ -159,7 +167,7 @@ export default async function PaketPage({
{u ? (
) : (
- {pending ? "Ödeme sayfasına yönlendiriliyorsun…" : label}
+ {pending ? (
+ "Ödeme sayfasına yönlendiriliyorsun…"
+ ) : (
+ <>
+ {label}
+
+ >
+ )}
);