# ๐ REPLIT AI โ MASTER PROMPT: UANGSAKU LANDING PAGE
## Super-Complete Build Specification v2.0
Paste prompt ini secara keseluruhan ke Replit Agent. Tidak perlu modifikasi.
---
## ๐ฏ MISI UTAMA
Bangun **landing page produksi** untuk aplikasi **UangSaku** menggunakan **Next.js 14 App Router + Tailwind CSS + Framer Motion**. Landing page ini harus:
- Terasa seperti produk startup kelas dunia (sekelas Duolingo / Grab / GoTo)
- Menggunakan animasi profesional berbasis scroll, parallax, dan micro-interaction
- Memiliki background animated particles/mesh yang hidup dan elegan
- Responsif penuh: mobile-first, lalu tablet, lalu desktop
- Siap deploy ke Vercel dengan zero-config
- Dioptimalkan untuk konversi (CRO) menggunakan psikologi "Double-Trigger Conversion"
---
## ๐๏ธ STACK & DEPENDENCIES
```bash
# Buat project baru
npx create-next-app@latest uangsaku-landing --typescript --tailwind --eslint --app --src-dir
# Install semua dependencies
npm install framer-motion @radix-ui/react-accordion lucide-react clsx tailwind-merge
npm install @fontsource/plus-jakarta-sans @fontsource/space-grotesk
npm install react-intersection-observer react-countup
npm install tsparticles @tsparticles/react @tsparticles/slim
npm install react-hot-toast sonner
```
**tailwind.config.ts** โ tambahkan:
```ts
import type { Config } from 'tailwindcss'
const config: Config = {
content: ['./src/**/*.{js,ts,jsx,tsx,mdx}'],
theme: {
extend: {
fontFamily: {
display: ['"Space Grotesk"', 'sans-serif'],
body: ['"Plus Jakarta Sans"', 'sans-serif'],
},
colors: {
brand: {
50: '#eef2ff',
100: '#e0e7ff',
200: '#c7d2fe',
400: '#818cf8',
500: '#6366f1',
600: '#4f46e5',
700: '#4338ca',
800: '#3730a3',
900: '#1e1b4b',
},
emerald: {
400: '#34d399',
500: '#10b981',
},
gold: {
400: '#fbbf24',
500: '#f59e0b',
}
},
animation: {
'float': 'float 6s ease-in-out infinite',
'float-delayed': 'float 6s ease-in-out 2s infinite',
'pulse-slow': 'pulse 4s cubic-bezier(0.4, 0, 0.6, 1) infinite',
'gradient-x': 'gradient-x 8s ease infinite',
'slide-up': 'slideUp 0.6s ease forwards',
'coin-spin': 'coinSpin 3s ease-in-out infinite',
'piggy-bounce': 'piggyBounce 2s ease-in-out infinite',
},
keyframes: {
float: {
'0%, 100%': { transform: 'translateY(0px)' },
'50%': { transform: 'translateY(-20px)' },
},
slideUp: {
from: { opacity: '0', transform: 'translateY(40px)' },
to: { opacity: '1', transform: 'translateY(0)' },
},
'gradient-x': {
'0%, 100%': { backgroundPosition: '0% 50%' },
'50%': { backgroundPosition: '100% 50%' },
},
coinSpin: {
'0%, 100%': { transform: 'rotateY(0deg)' },
'50%': { transform: 'rotateY(180deg)' },
},
piggyBounce: {
'0%, 100%': { transform: 'translateY(0) rotate(-3deg)' },
'50%': { transform: 'translateY(-12px) rotate(3deg)' },
},
},
},
},
plugins: [],
}
export default config
```
---
## ๐ STRUKTUR FILE LENGKAP
```
src/
โโโ app/
โ โโโ layout.tsx โ Root layout + metadata SEO
โ โโโ page.tsx โ Main page (compose semua section)
โ โโโ globals.css โ Global styles + CSS custom props
โโโ components/
โ โโโ ui/
โ โ โโโ Button.tsx โ Reusable CTA button
โ โ โโโ Badge.tsx โ Label/badge komponen
โ โ โโโ AnimatedCounter.tsx โ Number counter animasi
โ โโโ landing/
โ โโโ Navbar.tsx โ Sticky nav + scroll behavior
โ โโโ HeroSection.tsx โ Hero + phone mockup + particles
โ โโโ StatsBar.tsx โ Social proof angka (keluarga, misi, dll)
โ โโโ PainSection.tsx โ Pain point cards
โ โโโ MisiPintarSection.tsx โ Mission cards + scroll reveal
โ โโโ TabunganSection.tsx โ ๐ Tabungan Virtual Module
โ โโโ HowItWorks.tsx โ 3-step process visual
โ โโโ TestimoniSection.tsx โ Social proof testimonials
โ โโโ FaqSection.tsx โ Accordion FAQ
โ โโโ PricingBanner.tsx โ Urgency CTA banner
โ โโโ Footer.tsx โ Footer
โโโ hooks/
โ โโโ useScrollReveal.ts โ Intersection observer hook
โ โโโ useParticles.ts โ Particles config hook
โโโ lib/
โโโ utils.ts โ cn() helper
```
---
## ๐จ DESIGN SYSTEM โ TOKEN WAJIB
### Palette
```css
/* globals.css */
:root {
--brand-primary: #4f46e5; /* Indigo 600 */
--brand-dark: #1e1b4b; /* Indigo 900 */
--brand-light: #eef2ff; /* Indigo 50 */
--accent-green: #10b981; /* Emerald 500 */
--accent-gold: #f59e0b; /* Amber 500 */
--text-primary: #0f172a;
--text-muted: #64748b;
--surface: #ffffff;
--surface-secondary: #f8fafc;
}
```
### Typography Scale
```
Display XL: Space Grotesk, 72px, weight 700, line-height 1.1
Display L: Space Grotesk, 48px, weight 700
Heading: Space Grotesk, 32px, weight 600
Subhead: Plus Jakarta Sans, 20px, weight 500
Body: Plus Jakarta Sans, 16px, weight 400, line-height 1.7
Caption: Plus Jakarta Sans, 13px, weight 400
Micro: Plus Jakarta Sans, 11px, weight 500, letter-spacing 0.06em, UPPERCASE
```
---
## ๐ BACKGROUND ANIMATION SYSTEM
### Animated Particle Background (tsParticles)
Buat file `src/components/ui/ParticleBackground.tsx`:
```tsx
'use client'
import { useCallback } from 'react'
import Particles from '@tsparticles/react'
import { loadSlim } from '@tsparticles/slim'
import type { Engine } from 'tsparticles-engine'
export default function ParticleBackground() {
const particlesInit = useCallback(async (engine: Engine) => {
await loadSlim(engine)
}, [])
return (
)
}
```
### Animated Mesh Gradient Background
Buat file `src/components/ui/MeshBackground.tsx`:
```tsx
export default function MeshBackground() {
return (
{/* Orbs animasi */}
{/* Grid dots overlay */}
)
}
```
---
## ๐ฑ SECTION 1: HERO SECTION
File: `src/components/landing/HeroSection.tsx`
**Visual Layout:**
```
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ [Particles background animasi] โ
โ [Mesh orbs animasi] โ
โ โ
โ โญ Badge: Literasi Keuangan #1 โ
โ โ
โ HEADLINE 72px: โ
โ "Ubah Kuota [marah-marah] โ
โ Jadi Kuota [Senyuman] โจ" โ
โ (gradient animated text) โ
โ โ
โ Sub: UangSaku mengubah PR, baca buku... โ
โ โ
โ [๐ Ambil Gratis Sekarang] [โถ Lihat Demo] โ
โ 100% gratis ยท 1 menit daftar โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ ๐ฑ Phone mockup animasi (float) โ โ
โ โ โข Wallet card (Rp 37.500) โ โ
โ โ โข Misi aktif (PR Matematika) โ โ
โ โ โข Progress ring animasi โ โ
โ โ โข Notification badge animasi โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
```
**Kode requirements:**
- Headline menggunakan `text-transparent bg-clip-text` dengan `animate-gradient-x`
- Phone mockup menggunakan `animate-float` (naik turun halus)
- Framer Motion `initial={{ opacity:0, y:60 }}` โ `animate={{ opacity:1, y:0 }}` dengan staggerChildren
- CTA button: gradient indigo + hover scale + shimmer effect
- Trust badges di bawah CTA: โ Gratis ยท โ No Kartu Kredit ยท โ 1 Menit Setup
---
## ๐ SECTION 2: STATS BAR (Social Proof Angka)
File: `src/components/landing/StatsBar.tsx`
**Layout:**
```
โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
โ ๐จโ๐ฉโ๐งโ๐ฆ 47.200+ โ โ
1.2 Juta โ โญ 4.9/5.0 โ ๐ #1 App โ
โ Keluarga โ Misi Selesaiโ Rating App โ Literasi ID โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโ
```
- Gunakan `react-countup` dengan `IntersectionObserver` โ angka mulai count UP saat scroll masuk viewport
- Background: glassmorphism card (bg-white/80 backdrop-blur)
- Border bottom subtle separator
---
## ๐ค SECTION 3: PAIN POINT SECTION
File: `src/components/landing/PainSection.tsx`
**Layout:**
```
"Mengapa Pola Lama Tidak Lagi Bekerja?"
โโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ฑ Kecanduan โ โ ๐ก Drama Tiap Malam โ โ ๐คฒ Mental Pamrih โ
โ Screen-Time โ โ Demi PR โ โ Menengadah Tangan โ
โ โ โ โ โ โ
โ [pain illustration] โ โ [pain illustration] โ โ [pain illustration] โ
โ desc text... โ โ desc text... โ โ desc text... โ
โโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ
```
- **Scroll reveal stagger**: kartu muncul 1 per 1 dari bawah
- Background section: `bg-slate-950` (gelap, kontras tinggi)
- Warna teks: putih + merah/oranye untuk emphasis pain
- Icon: Lucide React icons ukuran 48px
---
## ๐ฎ SECTION 4: MISI PINTAR (Core Feature)
File: `src/components/landing/MisiPintarSection.tsx`
**Layout:**
```
"Saat Belajar Terasa Seru Seperti Naik Level!"
[Tab Filter: Semua | Akademik | Rumah | Karakter | Digital]
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ ๐ PR Sekolah โ โ ๐ Baca Buku โ
โ [Auto-Fill] โ โ [Auto-Fill] โ
โ โ โ โ
โ Syarat: Selesai โ โ Syarat: Buat โ
โ sebelum jam 8 โ โ rangkuman โ
โ โ โ โ
โ โค Rp 5.000 โ โ โ โค Rp 7.500 โ โ
โ [Pakai Template]โ โ [Pakai Template]โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ ๐ Bahasa Asing โ โ ๐ป Skill Komp. โ
โ [Auto-Fill] โ โ [Auto-Fill] โ
โ ... โ โ ... โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
๐ Fitur Bukti Kerja Anti-Cheat: Anak WAJIB upload foto/teks bukti
```
**Animasi requirements:**
- Cards: Framer Motion `whileHover={{ scale: 1.03, y: -4 }}` dengan spring physics
- **Scroll reveal**: `useInView` โ setiap card slide up dengan delay 0.1s stagger
- Tab filter: `AnimatePresence` untuk smooth masuk/keluar cards
- Badge "Auto-Fill": shimmer animation (pseudo-element bergerak kiri ke kanan)
---
## ๐ท SECTION 5: TABUNGAN VIRTUAL (MODUL BARU ๐)
File: `src/components/landing/TabunganSection.tsx`
**Fitur Tabungan Virtual yang harus diimplementasi di landing page:**
### A. Copywriting Tabungan
- **Eyebrow:** "Modul Tabungan Virtual"
- **Headline:** "Anak Punya Rekening Impian Sendiri โ Untuk Pertama Kalinya!"
- **Sub:** Bukan sekadar celengan. UangSaku hadir dengan sistem kantong tabungan bertujuan yang mengajarkan anak merencanakan, menunda kesenangan, dan merayakan pencapaian finansial nyata.
### B. Fitur Tabungan yang Ditampilkan (card feature grid):
```
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ฏ Kantong Impian โ โ ๐ Bunga Reward Orang Tua โ
โ โ โ โ
โ Anak membuat kantong โ โ Orang tua bisa memberi โ
โ bertujuan: "Sepatu Nike" โ โ "bunga" 5-20% sebagai โ
โ "Game Switch" "Buku" โ โ motivasi menabung lebih โ
โ Lengkap dg progress bar โ โ lama. Diajarkan konsep โ
โ visual menuju target โ โ compound interest dini. โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ Kunci Tabungan โ โ ๐ Momen Perayaan โ
โ โ โ โ
โ Orang tua bisa kunci โ โ Saat target tercapai, โ
โ kantong sehingga tidak โ โ app menampilkan animasi โ
โ bisa dicairkan sebelum โ โ konfeti & notif ke semua โ
โ tanggal/target tercapai. โ โ anggota keluarga. Momen โ
โ Mengajarkan komitmen. โ โ bangga bersama. โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ฐ Auto-Setor dari Misi โ โ ๐ Laporan Progres โ
โ โ โ โ
โ Set % otomatis dari โ โ Grafik pertumbuhan saldo โ
โ setiap reward misi โ โ tabungan per minggu. โ
โ langsung masuk kantong โ โ Anak lihat sendiri uang โ
โ tabungan. Disiplin โ โ mereka "tumbuh" dari โ
โ finansial otomatis. โ โ kerja keras. โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
```
### C. Visual Interaktif Tabungan (Mock UI)
Tampilkan mockup "Kantong Impian" yang bisa diklik/hover:
```
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ฏ Sepatu Nike Air Max โ
โ Target: Rp 450.000 โ
โ โ
โ โโโโโโโโโโโโโโโโโ 68% โ
โ Rp 306.000 dari Rp 450.000 โ
โ โ
โ ๐ Dikunci ยท Cair: 17 Agustus โ
โ ๐ Bunga Ayah: +5%/bulan โ
โ โฐ Perkiraan tercapai: 3 minggu โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
```
Animasi:
- Progress bar animated fill saat scroll masuk viewport
- Angka counter animasi
- Floating coin emoji turun masuk ke kantong (CSS keyframe)
- Piggy bank icon `animate-piggy-bounce`
### D. Promo Tabungan
- **Badge:** "BARU โ Fitur Tabungan Virtual"
- **CTA:** "Buat Kantong Impian Pertama Anak Anda"
- **Sub-CTA:** Sepenuhnya gratis ยท Tidak ada biaya administrasi ยท Tidak terhubung bank
---
## โ๏ธ SECTION 6: HOW IT WORKS
File: `src/components/landing/HowItWorks.tsx`
**3 Langkah Visual (horizontal timeline):**
```
โ Buat Ruang Keluarga โ โก Buat Misi & Kantong โ โข Anak Klaim & Belajar
(30 detik setup) (template siap pakai) (mandiri & termotivasi)
```
- Nomor besar (01, 02, 03) dengan gradient brand
- Line connector antara steps dengan animated dash stroke
- Framer Motion stagger reveal
---
## โญ SECTION 7: TESTIMONI / SOCIAL PROOF
File: `src/components/landing/TestimoniSection.tsx`
**Layout โ Masonry grid atau carousel:**
```
"Dipercaya Ribuan Keluarga Indonesia"
โ
โ
โ
โ
โ
4.9/5 dari 3.200+ ulasan
โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ
โ โญโญโญโญโญ โ โ โญโญโญโญโญ โ โ โญโญโญโญโญ โ
โ โ โ โ โ โ
โ "Anak saya yg โ โ "Awalnya skeptis โ โ "PR selesai โ
โ tadinya males โ โ soal virtual โ โ sendiri tanpa โ
โ belajar, skrg โ โ money, tp liat โ โ diingatkan. โ
โ malah nagih โ โ Alisha nabung โ โ Bahkan minta โ
โ misi baru tiap โ โ Rp 300rb utk โ โ tambah misi! โ
โ hari!" โ โ beli buku sndri โ โ Luar biasa." โ
โ โ โ tanpa minta2." โ โ โ
โ ๐ค Bunda Rina โ โ ๐ค Ayah Dimas โ โ ๐ค Mama Sari โ
โ Jakarta โ โ Surabaya โ โ Bandung โ
โ Ibu dari Rafi โ โ Ayah dari Alishaโ โ Ibu dari Naufal โ
โ (9 tahun) โ โ (11 tahun) โ โ (8 tahun) โ
โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ
โ โญโญโญโญโญ โ โ โญโญโญโญโญ โ โ โญโญโญโญโญ โ
โ "Fitur tabungan โ โ "Drama malam โ โ "Sekarang anak โ
โ impiannya keren โ โ sudah hilang. โ โ malah ngajak โ
โ banget. Anak โ โ Ganti jadi โ โ adiknya buat โ
โ ngerti sendiri โ โ kompetisi siapa โ โ misi bareng. โ
โ arti menabung โ โ duluan klaim โ โ Bonding keluargaโ
โ untuk impiannya"โ โ misi!" โ โ meningkat." โ
โ โ โ โ โ โ
โ ๐ค Bunda Fitri โ โ ๐ค Papah Rizky โ โ ๐ค Bunda Dewi โ
โ Yogyakarta โ โ Medan โ โ Semarang โ
โ Ibu dari Zahra โ โ Ayah dari Faiz โ โ Ibu dari Azkia โ
โ (10 tahun) โ โ (7 & 9 tahun) โ โ (8 & 12 tahun) โ
โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ
```
**Implementasi:**
- Masonry grid: `columns-1 sm:columns-2 lg:columns-3 gap-4`
- Setiap card: `break-inside-avoid` + glassmorphism styling
- Avatar: initials circle dengan gradient brand unik per user
- Auto-play marquee/carousel untuk mobile (loop infinite)
- "Verified Purchase" badge hijau kecil di setiap card
---
## โ SECTION 8: FAQ ACCORDION
File: `src/components/landing/FaqSection.tsx`
Gunakan `@radix-ui/react-accordion` dengan animasi smooth.
**Pertanyaan:**
1. Apakah ini tidak membuat anak bermental matre/pamrih?
2. Bagaimana jika saldo virtual dihabiskan untuk hal tidak berguna?
3. Apakah saldo virtual bisa dicairkan ke uang sungguhan?
4. Berapa usia anak yang cocok menggunakan UangSaku?
5. Apakah data keluarga aman dan privat?
6. Berapa lama fase gratis ini berlaku?
7. Apa bedanya fitur Tabungan Virtual dengan celengan biasa?
8. Apakah bisa digunakan untuk lebih dari satu anak?
**Jawaban untuk poin 7 (tabungan):**
"Celengan biasa tidak punya tujuan, tidak ada bunga reward, tidak ada kunci komitmen, dan tidak ada momen perayaan. Kantong Impian UangSaku mengajarkan goal-based saving โ anak menetapkan target spesifik, melihat progresnya setiap hari, mendapatkan bunga dari orang tua, dan merayakan pencapaian bersama keluarga. Ini adalah simulasi rekening tabungan nyata dalam lingkungan yang aman dan terkontrol."
---
## ๐ฅ SECTION 9: PRICING / CTA BANNER
File: `src/components/landing/PricingBanner.tsx`
**Layout:**
```
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ GRATIS SELAMANYA UNTUK 1 JUTA KELUARGA PERTAMA โ
โ โ
โ Paket Premium (nilai Rp 29.000/bln) โ GRATIS selama promosi โ
โ โ
โ โ
Ruang Keluarga tak terbatas โ
โ โ
Misi Pintar + Template lengkap โ
โ โ
๐ Kantong Tabungan Virtual (baru!) โ
โ โ
Sistem Pajak Jajan โ
โ โ
Pahlawan Rumah โ
โ โ
Fitur Bukti Kerja Anti-Cheat โ
โ โ
Laporan Perkembangan Anak โ
โ โ
โ [๐ฅ Buat Ruang Keluarga Sekarang โ GRATIS] โ
โ โ
โ โฐ Slot tersisa: [counter animasi] dari 1.000.000 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
```
**Animasi:**
- Background: animated gradient merah-oranye-kuning (urgency)
- Counter slot tersisa: `react-countup` atau localStorage-based random decrement
- CTA button: pulse animation + "shimmer sweep" effect
- Confetti burst saat hover button (menggunakan `canvas-confetti`)
---
## ๐ฝ FOOTER
File: `src/components/landing/Footer.tsx`
```
UangSaku Logo
"Mendidik generasi melek keuangan sejak dini."
[Fitur] [Perusahaan] [Legal]
Misi Pintar Tentang Kami Privasi
Tabungan Blog Syarat & Ketentuan
Pahlawan Rumah Karir Cookie
Sistem Pajak Kontak
๐ฑ App Store | ๐ฑ Google Play (coming soon badge)
ยฉ 2025 UangSaku. Dibuat dengan โค๏ธ untuk keluarga Indonesia.
```
---
## ๐ญ ANIMASI SISTEM โ IMPLEMENTASI DETAIL
### Scroll Reveal Hook
```ts
// src/hooks/useScrollReveal.ts
import { useInView } from 'react-intersection-observer'
export function useScrollReveal(threshold = 0.15) {
const { ref, inView } = useInView({
threshold,
triggerOnce: true,
})
return { ref, inView }
}
```
### Framer Motion Variants (reusable)
```ts
// src/lib/animations.ts
export const fadeUpVariants = {
hidden: { opacity: 0, y: 40 },
visible: (i: number = 0) => ({
opacity: 1,
y: 0,
transition: { delay: i * 0.1, duration: 0.6, ease: [0.22, 1, 0.36, 1] }
})
}
export const staggerContainer = {
hidden: {},
visible: {
transition: { staggerChildren: 0.08 }
}
}
export const scaleInVariants = {
hidden: { opacity: 0, scale: 0.85 },
visible: {
opacity: 1,
scale: 1,
transition: { duration: 0.5, ease: [0.22, 1, 0.36, 1] }
}
}
export const slideLeftVariants = {
hidden: { opacity: 0, x: -60 },
visible: {
opacity: 1,
x: 0,
transition: { duration: 0.7, ease: [0.22, 1, 0.36, 1] }
}
}
```
### Penggunaan di setiap Section:
```tsx
import { motion } from 'framer-motion'
import { useScrollReveal } from '@/hooks/useScrollReveal'
import { fadeUpVariants, staggerContainer } from '@/lib/animations'
export default function MisiPintarSection() {
const { ref, inView } = useScrollReveal()
return (
{tasks.map((task, i) => (
{/* card content */}
))}
)
}
```
### Progress Bar Animasi (Tabungan)
```tsx
// Animated progress bar saat masuk viewport
```
---
## ๐ฑ MOBILE-FIRST REQUIREMENTS
```
Mobile (< 640px): 1 kolom, font scale 80%, padding 16px, touch-friendly 48px tap targets
Tablet (640-1024): 2 kolom grid, font scale 90%
Desktop (> 1024px): 3-4 kolom grid, full type scale
```
**Mobile-specific:**
- Navbar: hamburger menu dengan slide-in drawer (Framer Motion)
- Hero: phone mockup di bawah copywriting (stack vertikal)
- Testimonial: horizontal scroll carousel (snap scroll)
- CTA button: full-width di mobile
- Stats bar: 2x2 grid di mobile
---
## ๐ DEPLOYMENT CONFIG
### vercel.json
```json
{
"buildCommand": "npm run build",
"outputDirectory": ".next",
"framework": "nextjs",
"regions": ["sin1"],
"headers": [
{
"source": "/(.*)",
"headers": [
{ "key": "X-Content-Type-Options", "value": "nosniff" },
{ "key": "X-Frame-Options", "value": "DENY" }
]
}
]
}
```
### next.config.ts
```ts
const nextConfig = {
output: 'standalone',
images: {
domains: [],
formats: ['image/avif', 'image/webp'],
},
experimental: {
optimizeCss: true,
},
}
export default nextConfig
```
### SEO โ app/layout.tsx
```ts
export const metadata: Metadata = {
title: 'UangSaku โ Aplikasi Literasi Keuangan Keluarga #1 di Indonesia',
description: 'Ubah PR sekolah, baca buku, dan tugas rumah jadi misi seru berhadiah saldo saku virtual. Anak belajar mandiri, orang tua tenang. Gratis selamanya.',
keywords: ['aplikasi uang anak', 'literasi keuangan anak', 'tabungan virtual anak', 'uang saku digital'],
openGraph: {
title: 'UangSaku โ Kuota Senyuman untuk Keluarga Indonesia',
description: 'Misi seru berhadiah uang saku virtual. 100% gratis.',
type: 'website',
locale: 'id_ID',
},
twitter: {
card: 'summary_large_image',
title: 'UangSaku',
description: 'Literasi keuangan keluarga #1 Indonesia',
}
}
```
---
## โ
CHECKLIST PRODUKSI
Setelah build selesai, pastikan semua item ini terpenuhi:
**Performance:**
- [ ] Lighthouse Performance score > 90
- [ ] LCP < 2.5s
- [ ] CLS < 0.1
- [ ] Images menggunakan `next/image` dengan `priority` pada hero
- [ ] Fonts menggunakan `next/font` (tidak CDN)
- [ ] Particles disabled di `prefers-reduced-motion`
**Accessibility:**
- [ ] Semua gambar/icon punya `alt` atau `aria-hidden="true"`
- [ ] Keyboard navigable (tab order logis)
- [ ] Warna kontras WCAG AA minimal
- [ ] Focus ring visible di semua interactive elements
**Conversion:**
- [ ] CTA pertama visible tanpa scroll di semua ukuran layar
- [ ] Tidak ada pop-up yang muncul dalam 3 detik pertama
- [ ] Form daftar maksimal 2 field (nama + email/WA)
- [ ] Trust signal (gratis, no CC, 1 menit) selalu dekat CTA
**Code Quality:**
- [ ] Tidak ada `any` TypeScript type
- [ ] Semua komponen punya displayName
- [ ] `'use client'` hanya pada komponen yang butuh browser API
- [ ] Error boundaries di setiap section utama
---
## ๐จ AESTHETIC SIGNATURE (ELEMEN PEMBEDA)
Satu elemen visual unik yang membuat UangSaku berbeda dari semua fintech app lainnya:
**"Floating Coin Trail"** โ Saat user scroll ke bawah halaman, ada animasi koin-koin kecil (๐ฐ) yang mengambang naik dari sisi kiri/kanan halaman, bergerak dengan physics ringan mengikuti scroll position. Diimplementasikan dengan CSS keyframes + scroll event listener ringan. Memberikan kesan bahwa "uang mengalir" saat Anda menjelajahi produk.
```tsx
// CoinTrail.tsx โ implementasikan sebagai fixed overlay
useEffect(() => {
const coins = [] // spawn koin baru setiap Xpx scroll
const handleScroll = () => {
if (Math.random() > 0.97) spawnCoin()
}
window.addEventListener('scroll', handleScroll, { passive: true })
return () => window.removeEventListener('scroll', handleScroll)
}, [])
```
---
*Prompt ini mencakup semua yang dibutuhkan. Paste ke Replit Agent dan mulai build. Total estimasi waktu Replit Agent: 15-25 menit untuk full implementation.*
**Dibuat untuk: UangSaku v2.0 Landing Page**
**Stack: Next.js 14 + Tailwind + Framer Motion**
**Target: 1 Juta Keluarga Indonesia**