Revamp homepage layout and navigation. Replaced the initial content with a structured layout featuring a navbar, hero section, and features section. Integrated homepage data from JSON for dynamic content rendering and improved user experience with enhanced styling and navigation links.

This commit is contained in:
Yoga Pangestu 2026-07-14 10:12:23 +07:00
parent 0416e9191f
commit 314aab2600
2 changed files with 648 additions and 58 deletions

View File

@ -1,65 +1,498 @@
import Image from "next/image";
import Link from "next/link";
import {
ShoppingCart,
Package,
BarChart3,
Users,
Receipt,
Smartphone,
ArrowRight,
Check,
Star,
Zap,
Shield,
Clock,
} from "lucide-react";
import { Button } from "@/components/ui/button";
import homepageData from "@/data/homepage.json";
export default function Home() {
const FEATURE_ICONS: Record<string, React.ElementType> = {
ShoppingCart,
Package,
BarChart3,
Users,
Receipt,
Smartphone,
};
export default function HomePage() {
return (
<div className="flex flex-col flex-1 items-center justify-center bg-zinc-50 font-sans dark:bg-black">
<main className="flex flex-1 w-full max-w-3xl flex-col items-center justify-between py-32 px-16 bg-white dark:bg-black sm:items-start">
<Image
className="dark:invert"
src="/next.svg"
alt="Next.js logo"
width={100}
height={20}
priority
/>
<div className="flex flex-col items-center gap-6 text-center sm:items-start sm:text-left">
<h1 className="max-w-xs text-3xl font-semibold leading-10 tracking-tight text-black dark:text-zinc-50">
To get started, edit the page.tsx file.
</h1>
<p className="max-w-md text-lg leading-8 text-zinc-600 dark:text-zinc-400">
Looking for a starting point or more instructions? Head over to{" "}
<a
href="https://vercel.com/templates?framework=next.js&utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app"
className="font-medium text-zinc-950 dark:text-zinc-50"
>
Templates
</a>{" "}
or the{" "}
<a
href="https://nextjs.org/learn?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app"
className="font-medium text-zinc-950 dark:text-zinc-50"
>
Learning
</a>{" "}
center.
</p>
<div className="min-h-screen bg-white">
{/* Navbar */}
<nav className="sticky top-0 z-50 border-b border-neutral-100 bg-white/80 backdrop-blur-md">
<div className="mx-auto max-w-6xl flex items-center justify-between h-[72px] px-6">
<Link href="/" className="flex items-center gap-3">
<div className="w-9 h-9 rounded-md bg-neutral-900 flex items-center justify-center">
<span className="text-white font-bold text-sm">P</span>
</div>
<span className="text-lg font-semibold tracking-tight text-neutral-900">
Profitra
</span>
</Link>
<div className="hidden md:flex items-center gap-8">
<a href="#features" className="text-sm text-neutral-500 hover:text-neutral-900 transition-colors">
Fitur
</a>
<a href="#pricing" className="text-sm text-neutral-500 hover:text-neutral-900 transition-colors">
Harga
</a>
<a href="#testimonials" className="text-sm text-neutral-500 hover:text-neutral-900 transition-colors">
Testimoni
</a>
</div>
<div className="flex items-center gap-3">
<Link href="/onboarding">
<Button variant="ghost" size="sm" className="text-neutral-600 hover:text-neutral-900">
Masuk
</Button>
</Link>
<Link href="/onboarding">
<Button size="sm" className="bg-neutral-900 text-white hover:bg-neutral-800 rounded-md h-10">
Mulai Gratis
</Button>
</Link>
</div>
</div>
<div className="flex flex-col gap-4 text-base font-medium sm:flex-row">
<a
className="flex h-12 w-full items-center justify-center gap-2 rounded-full bg-foreground px-5 text-background transition-colors hover:bg-[#383838] dark:hover:bg-[#ccc] md:w-[158px]"
href="https://vercel.com/new?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app"
target="_blank"
rel="noopener noreferrer"
>
<Image
className="dark:invert"
src="/vercel.svg"
alt="Vercel logomark"
width={16}
height={16}
/>
Deploy Now
</a>
<a
className="flex h-12 w-full items-center justify-center rounded-full border border-solid border-black/[.08] px-5 transition-colors hover:border-transparent hover:bg-black/[.04] dark:border-white/[.145] dark:hover:bg-[#1a1a1a] md:w-[158px]"
href="https://nextjs.org/docs?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app"
target="_blank"
rel="noopener noreferrer"
>
Documentation
</a>
</nav>
{/* Hero Section */}
<section className="relative overflow-hidden">
<div className="mx-auto max-w-6xl px-6 pt-20 pb-24 md:pt-28 md:pb-32">
<div className="flex flex-col items-center text-center max-w-3xl mx-auto">
<div className="inline-flex items-center gap-2 px-3 py-1 rounded-full bg-neutral-100 text-neutral-600 text-xs font-medium mb-6">
<Zap className="size-3" />
{homepageData.hero.tag}
</div>
<h1 className="text-4xl md:text-5xl lg:text-6xl font-bold text-neutral-900 tracking-tight leading-tight whitespace-pre-line">
{homepageData.hero.title}
</h1>
<p className="mt-6 text-lg text-neutral-500 max-w-xl leading-relaxed">
{homepageData.hero.description}
</p>
<div className="flex flex-col sm:flex-row items-center gap-3 mt-10">
<Link href="/onboarding">
<Button size="lg" className="bg-neutral-900 text-white hover:bg-neutral-800 rounded-md h-12 px-8 gap-2">
{homepageData.hero.cta.primary}
<ArrowRight className="size-4" />
</Button>
</Link>
<Link href="/dashboard">
<Button variant="outline" size="lg" className="border-neutral-200 text-neutral-700 hover:bg-neutral-50 rounded-md h-12 px-8">
{homepageData.hero.cta.secondary}
</Button>
</Link>
</div>
{/* Stats */}
<div className="flex items-center gap-12 mt-16 pt-8 border-t border-neutral-100">
{homepageData.hero.stats.map((stat) => (
<div key={stat.label} className="text-center">
<p className="text-2xl font-bold text-neutral-900">{stat.value}</p>
<p className="text-sm text-neutral-500 mt-1">{stat.label}</p>
</div>
))}
</div>
</div>
</div>
</main>
{/* Background decoration */}
<div className="absolute inset-0 -z-10">
<div className="absolute top-0 left-1/2 -translate-x-1/2 w-[800px] h-[600px] bg-gradient-to-b from-neutral-50 to-transparent rounded-full blur-3xl opacity-60" />
</div>
</section>
{/* Features Section */}
<section id="features" className="py-20 md:py-28 bg-neutral-50">
<div className="mx-auto max-w-6xl px-6">
<div className="text-center max-w-2xl mx-auto mb-16">
<div className="inline-flex items-center gap-2 px-3 py-1 rounded-full bg-white text-neutral-600 text-xs font-medium mb-4 border border-neutral-100">
{homepageData.features.tag}
</div>
<h2 className="text-3xl md:text-4xl font-bold text-neutral-900 tracking-tight whitespace-pre-line">
{homepageData.features.title}
</h2>
<p className="mt-4 text-neutral-500 leading-relaxed">
{homepageData.features.description}
</p>
</div>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-5">
{homepageData.features.items.map((feature) => {
const Icon = FEATURE_ICONS[feature.icon];
return (
<div
key={feature.title}
className="bg-white rounded-xl p-6 border border-neutral-100 hover:border-neutral-200 transition-colors"
style={{ boxShadow: '0 1px 2px rgba(0,0,0,.05), 0 4px 10px rgba(0,0,0,.04)' }}
>
<div className="w-10 h-10 rounded-lg bg-neutral-100 flex items-center justify-center mb-4">
{Icon && <Icon className="size-5 text-neutral-700" />}
</div>
<h3 className="text-base font-semibold text-neutral-900 mb-2">
{feature.title}
</h3>
<p className="text-sm text-neutral-500 leading-relaxed">
{feature.description}
</p>
</div>
);
})}
</div>
</div>
</section>
{/* Dashboard Preview Section */}
<section className="py-20 md:py-28 bg-white">
<div className="mx-auto max-w-6xl px-6">
<div className="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center">
<div>
<div className="inline-flex items-center gap-2 px-3 py-1 rounded-full bg-neutral-100 text-neutral-600 text-xs font-medium mb-4">
{homepageData.dashboardPreview.tag}
</div>
<h2 className="text-3xl md:text-4xl font-bold text-neutral-900 tracking-tight whitespace-pre-line">
{homepageData.dashboardPreview.title}
</h2>
<p className="mt-4 text-neutral-500 leading-relaxed">
{homepageData.dashboardPreview.description}
</p>
<div className="mt-8 space-y-3">
{homepageData.dashboardPreview.highlights.map((item) => (
<div key={item} className="flex items-center gap-3">
<div className="w-5 h-5 rounded-full bg-neutral-900 flex items-center justify-center shrink-0">
<Check className="size-3 text-white" />
</div>
<span className="text-sm text-neutral-700">{item}</span>
</div>
))}
</div>
<Link href="/dashboard" className="mt-8 inline-block">
<Button variant="outline" className="border-neutral-200 text-neutral-700 hover:bg-neutral-50 rounded-md h-10 gap-2">
Lihat Dashboard
<ArrowRight className="size-4" />
</Button>
</Link>
</div>
{/* Dashboard Mockup */}
<div className="relative">
<div
className="bg-white rounded-xl border border-neutral-200 p-5"
style={{ boxShadow: '0 10px 30px rgba(0,0,0,.08)' }}
>
{/* Mini Header */}
<div className="flex items-center justify-between mb-5">
<div className="flex items-center gap-2">
<div className="w-3 h-3 rounded-full bg-neutral-200" />
<div className="w-3 h-3 rounded-full bg-neutral-200" />
<div className="w-3 h-3 rounded-full bg-neutral-200" />
</div>
<div className="w-20 h-3 rounded bg-neutral-100" />
</div>
{/* KPI Cards */}
<div className="grid grid-cols-2 gap-3 mb-4">
{[
{ label: "Penjualan", value: "Rp 12.4M", change: "+12.5%" },
{ label: "Transaksi", value: "1.248", change: "+8.2%" },
{ label: "Produk", value: "3.456", change: "-2.4%" },
{ label: "Pelanggan", value: "567", change: "+24.3%" },
].map((kpi) => (
<div key={kpi.label} className="bg-neutral-50 rounded-lg p-3">
<p className="text-[10px] text-neutral-400">{kpi.label}</p>
<p className="text-sm font-bold text-neutral-900 mt-0.5">{kpi.value}</p>
<p className={`text-[10px] font-medium mt-0.5 ${kpi.change.startsWith('+') ? 'text-green-600' : 'text-red-500'}`}>
{kpi.change}
</p>
</div>
))}
</div>
{/* Chart Mockup */}
<div className="bg-neutral-50 rounded-lg p-4 mb-4">
<div className="flex items-end gap-1.5 h-24">
{[40, 55, 45, 65, 58, 72, 68, 78, 82, 75, 88, 95].map((h, i) => (
<div
key={i}
className="flex-1 bg-neutral-700 rounded-t-sm"
style={{ height: `${h}%` }}
/>
))}
</div>
</div>
{/* Bottom Widgets */}
<div className="grid grid-cols-2 gap-3">
<div className="bg-neutral-50 rounded-lg p-3">
<div className="flex items-center gap-1.5 mb-2">
<div className="w-2 h-2 rounded-full bg-neutral-900" />
<div className="w-2 h-2 rounded-full bg-neutral-500" />
<div className="w-2 h-2 rounded-full bg-neutral-300" />
</div>
<div className="space-y-1">
{[100, 70, 45, 25].map((w, i) => (
<div key={i} className="h-1.5 rounded-full bg-neutral-200">
<div className="h-full rounded-full bg-neutral-700" style={{ width: `${w}%` }} />
</div>
))}
</div>
</div>
<div className="bg-neutral-50 rounded-lg p-3">
{[1, 2, 3, 4].map((i) => (
<div key={i} className="flex items-center gap-2 py-1">
<div className="w-5 h-5 rounded bg-neutral-200" />
<div className="flex-1">
<div className="h-1.5 w-full rounded bg-neutral-200" />
</div>
</div>
))}
</div>
</div>
</div>
{/* Floating badge */}
<div className="absolute -top-3 -right-3 bg-neutral-900 text-white text-xs font-medium px-3 py-1.5 rounded-full shadow-lg">
Real-time
</div>
</div>
</div>
</div>
</section>
{/* Benefits */}
<section className="py-20 md:py-28 bg-neutral-50">
<div className="mx-auto max-w-6xl px-6">
<div className="grid grid-cols-1 md:grid-cols-3 gap-8">
{[
{
icon: Zap,
title: "Cepat & Responsif",
description: "Performa tinggi dengan teknologi modern. Transaksi diproses dalam hitungan detik."
},
{
icon: Shield,
title: "Aman & Terpercaya",
description: "Data terenkripsi dengan backup otomatis. Keamanan data bisnis Anda adalah prioritas kami."
},
{
icon: Clock,
title: "Hemat Waktu",
description: "Otomasi proses bisnis sehingga Anda bisa fokus mengembangkan usaha."
},
].map((benefit) => (
<div key={benefit.title} className="text-center">
<div className="w-12 h-12 rounded-xl bg-white border border-neutral-100 flex items-center justify-center mx-auto mb-4" style={{ boxShadow: '0 1px 2px rgba(0,0,0,.05), 0 4px 10px rgba(0,0,0,.04)' }}>
<benefit.icon className="size-6 text-neutral-700" />
</div>
<h3 className="text-base font-semibold text-neutral-900 mb-2">{benefit.title}</h3>
<p className="text-sm text-neutral-500 leading-relaxed max-w-xs mx-auto">{benefit.description}</p>
</div>
))}
</div>
</div>
</section>
{/* Pricing Section */}
<section id="pricing" className="py-20 md:py-28 bg-white">
<div className="mx-auto max-w-6xl px-6">
<div className="text-center max-w-2xl mx-auto mb-16">
<div className="inline-flex items-center gap-2 px-3 py-1 rounded-full bg-neutral-100 text-neutral-600 text-xs font-medium mb-4">
{homepageData.pricing.tag}
</div>
<h2 className="text-3xl md:text-4xl font-bold text-neutral-900 tracking-tight whitespace-pre-line">
{homepageData.pricing.title}
</h2>
<p className="mt-4 text-neutral-500 leading-relaxed">
{homepageData.pricing.description}
</p>
</div>
<div className="grid grid-cols-1 md:grid-cols-3 gap-5">
{homepageData.pricing.plans.map((plan) => (
<div
key={plan.name}
className={`relative bg-white rounded-xl p-6 border transition-colors ${
plan.popular
? "border-neutral-900"
: "border-neutral-100 hover:border-neutral-200"
}`}
style={{ boxShadow: '0 1px 2px rgba(0,0,0,.05), 0 4px 10px rgba(0,0,0,.04)' }}
>
{plan.popular && (
<div className="absolute -top-3 left-1/2 -translate-x-1/2 bg-neutral-900 text-white text-xs font-medium px-3 py-1 rounded-full">
Populer
</div>
)}
<div className="mb-6">
<h3 className="text-base font-semibold text-neutral-900">{plan.name}</h3>
<div className="mt-3 flex items-baseline gap-1">
<span className="text-3xl font-bold text-neutral-900">{plan.price}</span>
{plan.period !== "selamanya" && (
<span className="text-sm text-neutral-400">{plan.period}</span>
)}
</div>
<p className="mt-2 text-sm text-neutral-500">{plan.description}</p>
</div>
<div className="space-y-3 mb-8">
{plan.features.map((feature) => (
<div key={feature} className="flex items-center gap-3">
<div className="w-4 h-4 rounded-full bg-neutral-100 flex items-center justify-center shrink-0">
<Check className="size-2.5 text-neutral-700" />
</div>
<span className="text-sm text-neutral-600">{feature}</span>
</div>
))}
</div>
<Link href="/onboarding">
<Button
variant={plan.popular ? "default" : "outline"}
className={`w-full rounded-md h-10 ${
plan.popular
? "bg-neutral-900 text-white hover:bg-neutral-800"
: "border-neutral-200 text-neutral-700 hover:bg-neutral-50"
}`}
>
{plan.cta}
</Button>
</Link>
</div>
))}
</div>
</div>
</section>
{/* Testimonials */}
<section id="testimonials" className="py-20 md:py-28 bg-neutral-50">
<div className="mx-auto max-w-6xl px-6">
<div className="text-center max-w-2xl mx-auto mb-16">
<div className="inline-flex items-center gap-2 px-3 py-1 rounded-full bg-white text-neutral-600 text-xs font-medium mb-4 border border-neutral-100">
{homepageData.testimonials.tag}
</div>
<h2 className="text-3xl md:text-4xl font-bold text-neutral-900 tracking-tight whitespace-pre-line">
{homepageData.testimonials.title}
</h2>
</div>
<div className="grid grid-cols-1 md:grid-cols-3 gap-5">
{homepageData.testimonials.items.map((item) => (
<div
key={item.name}
className="bg-white rounded-xl p-6 border border-neutral-100"
style={{ boxShadow: '0 1px 2px rgba(0,0,0,.05), 0 4px 10px rgba(0,0,0,.04)' }}
>
<div className="flex items-center gap-1 mb-4">
{[1, 2, 3, 4, 5].map((star) => (
<Star key={star} className="size-4 fill-neutral-900 text-neutral-900" />
))}
</div>
<p className="text-sm text-neutral-600 leading-relaxed mb-6">
&ldquo;{item.content}&rdquo;
</p>
<div className="flex items-center gap-3 pt-4 border-t border-neutral-100">
<div className="w-9 h-9 rounded-full bg-neutral-200 flex items-center justify-center">
<span className="text-xs font-semibold text-neutral-600">{item.avatar}</span>
</div>
<div>
<p className="text-sm font-medium text-neutral-900">{item.name}</p>
<p className="text-xs text-neutral-500">{item.role}</p>
</div>
</div>
</div>
))}
</div>
</div>
</section>
{/* CTA Section */}
<section className="py-20 md:py-28 bg-neutral-900">
<div className="mx-auto max-w-6xl px-6">
<div className="text-center max-w-2xl mx-auto">
<h2 className="text-3xl md:text-4xl font-bold text-white tracking-tight whitespace-pre-line">
{homepageData.cta.title}
</h2>
<p className="mt-4 text-neutral-400 leading-relaxed">
{homepageData.cta.description}
</p>
<Link href="/onboarding" className="mt-8 inline-block">
<Button size="lg" className="bg-white text-neutral-900 hover:bg-neutral-100 rounded-md h-12 px-8 gap-2">
{homepageData.cta.button}
<ArrowRight className="size-4" />
</Button>
</Link>
</div>
</div>
</section>
{/* Footer */}
<footer className="py-12 bg-white border-t border-neutral-100">
<div className="mx-auto max-w-6xl px-6">
<div className="grid grid-cols-1 md:grid-cols-5 gap-8 mb-12">
{/* Brand */}
<div className="md:col-span-2">
<Link href="/" className="flex items-center gap-3 mb-4">
<div className="w-9 h-9 rounded-md bg-neutral-900 flex items-center justify-center">
<span className="text-white font-bold text-sm">P</span>
</div>
<span className="text-lg font-semibold tracking-tight text-neutral-900">
Profitra
</span>
</Link>
<p className="text-sm text-neutral-500 leading-relaxed max-w-xs">
{homepageData.footer.description}
</p>
</div>
{/* Links */}
{Object.entries(homepageData.footer.links).map(([category, links]) => (
<div key={category}>
<h4 className="text-sm font-semibold text-neutral-900 mb-4">{category}</h4>
<ul className="space-y-2.5">
{links.map((link) => (
<li key={link}>
<a href="#" className="text-sm text-neutral-500 hover:text-neutral-900 transition-colors">
{link}
</a>
</li>
))}
</ul>
</div>
))}
</div>
<div className="pt-8 border-t border-neutral-100 flex flex-col sm:flex-row items-center justify-between gap-4">
<p className="text-sm text-neutral-400">
&copy; {homepageData.footer.copyright}
</p>
<div className="flex items-center gap-6">
<a href="#" className="text-sm text-neutral-400 hover:text-neutral-900 transition-colors">
Kebijakan Privasi
</a>
<a href="#" className="text-sm text-neutral-400 hover:text-neutral-900 transition-colors">
Syarat & Ketentuan
</a>
</div>
</div>
</div>
</footer>
</div>
);
}

157
src/data/homepage.json Normal file
View File

@ -0,0 +1,157 @@
{
"hero": {
"tag": "Platform Bisnis Modern",
"title": "Kelola Bisnis Anda\nLebih Mudah & Efisien",
"description": "Profitra adalah platform manajemen bisnis all-in-one dengan POS, inventori, laporan penjualan, dan analitik real-time. Dirancang untuk UMKM Indonesia.",
"cta": {
"primary": "Mulai Gratis",
"secondary": "Lihat Demo"
},
"stats": [
{ "value": "10.000+", "label": "Bisnis Aktif" },
{ "value": "500rb+", "label": "Transaksi/Bulan" },
{ "value": "99.9%", "label": "Uptime" }
]
},
"features": {
"tag": "Fitur Unggulan",
"title": "Semua yang Anda Butuhkan\n dalam Satu Platform",
"description": "Dari kasir hingga laporan keuangan, Profitra menyediakan semua tools untuk mengelola bisnis Anda secara efisien.",
"items": [
{
"icon": "ShoppingCart",
"title": "Point of Sale",
"description": "Kasir cepat dengan dukungan barcode, pembayaran split, dan cetak struk otomatis."
},
{
"icon": "Package",
"title": "Manajemen Inventori",
"description": "Pantau stok real-time, atur stok minimum, dan dapatkan notifikasi saat stok menipis."
},
{
"icon": "BarChart3",
"title": "Laporan Penjualan",
"description": "Analitik penjualan lengkap dengan grafik interaktif dan export ke Excel/PDF."
},
{
"icon": "Users",
"title": "Manajemen Pelanggan",
"description": "Database pelanggan, riwayat transaksi, dan program loyalitas terintegrasi."
},
{
"icon": "Receipt",
"title": "Pengeluaran & Hutang",
"description": "Catat pengeluaran, kelola hutang piutang, dan pantau arus kas bisnis Anda."
},
{
"icon": "Smartphone",
"title": "Akses Multi-Device",
"description": "Akses dari laptop, tablet, atau smartphone kapan saja dan di mana saja."
}
]
},
"dashboardPreview": {
"tag": "Dashboard Analitik",
"title": "Pantau Bisnis Anda\nSecara Real-Time",
"description": "Dashboard interaktif dengan KPI cards, grafik penjualan, kategori produk, dan transaksi terakhir dalam satu tampilan.",
"highlights": [
"KPI Cards dengan indikator tren",
"Grafik penjualan bulanan",
"Kategori produk & donut chart",
"Transaksi terakhir & produk terlaris"
]
},
"pricing": {
"tag": "Harga",
"title": "Pilih Paket Sesuai\nKebutuhan Bisnis Anda",
"description": "Mulai gratis dan upgrade sesuai pertumbuhan bisnis Anda.",
"plans": [
{
"name": "Starter",
"price": "Gratis",
"period": "selamanya",
"description": "Untuk bisnis yang baru memulai",
"features": [
"1 Outlet",
"1 Pengguna",
"Produk unlimited",
"Laporan dasar",
"Support email"
],
"cta": "Mulai Gratis",
"popular": false
},
{
"name": "Business",
"price": "Rp 99.000",
"period": "/bulan",
"description": "Untuk bisnis yang sedang berkembang",
"features": [
"3 Outlet",
"5 Pengguna",
"Produk unlimited",
"Laporan lengkap",
"Multi-gudang",
"Support prioritas"
],
"cta": "Coba 14 Hari Gratis",
"popular": true
},
{
"name": "Enterprise",
"price": "Rp 299.000",
"period": "/bulan",
"description": "Untuk bisnis berskala besar",
"features": [
"Outlet unlimited",
"Pengguna unlimited",
"Produk unlimited",
"Analitik advanced",
"API akses",
"Dedicated support",
"Custom branding"
],
"cta": "Hubungi Sales",
"popular": false
}
]
},
"testimonials": {
"tag": "Testimoni",
"title": "Dipercaya oleh\nRibuan Bisnis di Indonesia",
"items": [
{
"name": "Andi Wijaya",
"role": "Pemilik Warung Kopi",
"content": "Profitra sangat membantu mengelola inventori dan penjualan. Sekarang saya bisa pantau bisnis dari HP kapan saja.",
"avatar": "AW"
},
{
"name": "Siti Nurhaliza",
"role": "Manajer Minimarket",
"content": "Laporan penjualan lengkap dan real-time. Sangat memudahkan pengambilan keputusan bisnis.",
"avatar": "SN"
},
{
"name": "Budi Santoso",
"role": "Owner Restoran",
"content": "Fitur POS-nya cepat dan mudah digunakan. Karyawan baru bisa langsung pakai tanpa training lama.",
"avatar": "BS"
}
]
},
"cta": {
"title": "Siap Mengelola Bisnis\nLebih Efisien?",
"description": "Bergabung dengan 10.000+ bisnis yang sudah menggunakan Profitra. Mulai gratis sekarang, tidak perlu kartu kredit.",
"button": "Mulai Sekarang"
},
"footer": {
"description": "Platform manajemen bisnis modern untuk UMKM Indonesia.",
"links": {
"Produk": ["Point of Sale", "Inventori", "Laporan", "Pelanggan"],
"Perusahaan": ["Tentang Kami", "Karir", "Blog", "Kontak"],
"Bantuan": ["Dokumentasi", "FAQ", "Support", "Status"]
},
"copyright": "2024 Profitra. Semua hak dilindungi."
}
}