Update app.db, enhance Home component with social proof feature, and improve error handling in auth module
All checks were successful
Deploy / deploy (push) Successful in 22m12s

- Updated app.db to reflect recent changes.
- Added a Suspense-wrapped SosyalKanitBandi component in the Home page for improved user engagement.
- Refactored the sendMagicLinkEmail function in auth.ts to handle errors more effectively, ensuring users receive appropriate feedback on email sending issues.
- Removed the Rybbit live visitor widget from the site footer for a cleaner design.
This commit is contained in:
bilalgursen
2026-08-02 21:10:43 +03:00
parent 0b92f999bc
commit 2278d2a218
9 changed files with 360 additions and 24 deletions

View File

@@ -0,0 +1,15 @@
import { NextResponse } from "next/server";
import { sosyalKanitVerisi } from "@/lib/sosyal-kanit";
// Fiyat bölümündeki şeridin canlı sayıyı tazelemek için yokladığı uç.
// İlk değer sunucudan HTML ile geliyor (bkz. components/landing/sosyal-kanit.tsx);
// burası yalnızca sayfa açık kaldıkça gelen güncellemeler için.
// Sayılar sosyal kanıt, gizli veri değil — kimlik doğrulaması yok.
// Yük: sosyalKanitVerisi kendi içinde TTL önbelleğine sahip, yoklama
// sıklığı DB/Rybbit'e yansımaz.
export async function GET() {
const veri = await sosyalKanitVerisi();
return NextResponse.json(veri, {
headers: { "Cache-Control": "no-store" },
});
}

View File

@@ -16,11 +16,13 @@ import {
} from "lucide-react";
import Image from "next/image";
import Link from "next/link";
import { Suspense } from "react";
import { HeroBaslik } from "@/components/hero-baslik";
import { KapanisCta } from "@/components/hero-focus-button";
import { HeroForm } from "@/components/hero-form";
import { Parallax } from "@/components/parallax";
import { Reveal } from "@/components/landing/reveal";
import { SosyalKanitBandi } from "@/components/landing/sosyal-kanit";
import { TurkeyPixelMap } from "@/components/turkey-pixel-map";
import {
PixelCorner,
@@ -528,18 +530,31 @@ export default function Home() {
</li>
))}
</ul>
<Button
asChild
className="mt-8 h-12 w-full cursor-pointer bg-orange-500 px-8 text-white transition-colors duration-200 hover:bg-orange-600"
>
<Link href="/paket">
{PAKET_FIYATI} TL Paketi incele
<ArrowRight className="size-4" aria-hidden />
</Link>
</Button>
<p className="mt-4 text-center text-xs text-slate-500">
Temel program arama herkes için ücretsiz · iyzico güvenli ödeme
</p>
{/* Boşluk sarmalayıcıda: sosyal kanıt eşik altında kalıp hiç
çizilmediğinde buton yine listeden mt-8 uzakta durur. */}
<div className="mt-8 flex flex-col gap-4">
{/* Karar butonun başında veriliyor; kanıt da orada dursun.
İstek anında okunuyor, o yüzden Suspense içinde. */}
<Suspense fallback={null}>
<SosyalKanitBandi />
</Suspense>
<Button
asChild
className="h-12 w-full cursor-pointer bg-orange-500 px-8 text-white transition-colors duration-200 hover:bg-orange-600"
>
<Link href="/paket">
{PAKET_FIYATI} TL Paketi incele
<ArrowRight className="size-4" aria-hidden />
</Link>
</Button>
<p className="text-center text-xs text-slate-500">
Temel program arama herkes için ücretsiz · iyzico güvenli
ödeme
</p>
</div>
</Reveal>
<Reveal