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
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:
15
src/app/api/sosyal-kanit/route.ts
Normal file
15
src/app/api/sosyal-kanit/route.ts
Normal 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" },
|
||||
});
|
||||
}
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user