import type { Metadata } from "next"; import Link from "next/link"; import Image from "next/image"; import { tripService } from "@/server/services/trip.service"; import { TripCard } from "@/features/trip/components/trip-card"; import { siteConfig, siteUrl, absoluteUrl } from "@/lib/site"; import { ACTIVITY_CATEGORIES, categoryMeta } from "@/lib/activity-category"; export const metadata: Metadata = { title: "Cari Teman Trip & Aktivitas — Pergi Bareng, Bukan Sendiri", description: `${siteConfig.slogan} ${siteConfig.description}`, alternates: { canonical: "/" }, openGraph: { title: `${siteConfig.name} — Cari Teman Trip & Aktivitas, Gabung Bareng`, description: siteConfig.slogan, url: "/", }, }; export default async function HomePage() { const trips = await tripService.getOpenTrips(); const now = new Date(); const nextWeek = new Date(now.getTime() + 7 * 24 * 60 * 60 * 1000); const upcomingTrips = trips .filter((t) => new Date(t.date) <= nextWeek) .slice(0, 3); const upcomingIds = new Set(upcomingTrips.map((t) => t.id)); const latestTrips = trips .filter((t) => !upcomingIds.has(t.id)) .slice(0, 6); const shownIds = new Set([...upcomingIds, ...latestTrips.map((t) => t.id)]); const budgetTrips = trips .filter((t) => !shownIds.has(t.id) && t.price <= 300000) .slice(0, 3); const orgJsonLd = { "@context": "https://schema.org", "@graph": [ { "@type": "Organization", "@id": `${siteUrl}/#organization`, name: siteConfig.name, url: siteUrl, logo: absoluteUrl("/images/SeTrip.png"), slogan: siteConfig.slogan, description: siteConfig.description, }, { "@type": "WebSite", "@id": `${siteUrl}/#website`, url: siteUrl, name: siteConfig.name, description: siteConfig.description, publisher: { "@id": `${siteUrl}/#organization` }, inLanguage: "id-ID", potentialAction: { "@type": "SearchAction", target: `${siteUrl}/trips?q={search_term_string}`, "query-input": "required name=search_term_string", }, }, ], }; return (
Lagi pengen jalan tapi gak punya teman?{" "} SeTrip tempatnya.
Gabung open trip — hiking, camping, snorkeling, sampai city trip. Ketemu orang baru, dari stranger jadi travel buddies. Grup kecil, organizer terverifikasi.
Cari Teman Trip {/* Stats */}{trips.length}
Trip Tersedia
100%
Seru
Hiking, diving, konser, sampai retreat
Berangkat dalam 7 hari ke depan
Pilih trip, ketemu teman baru
Belum ada trip tersedia
Jadilah yang pertama buat open trip di sini!
+ Buat Trip BaruTrip di bawah Rp 300.000
Buat trip dan kumpulin grup sendiri, atau gabung trip yang sudah jalan. Kenalan baru menunggu di puncak.