IF1801  ยท  Sesi 9

Praktik Pengembangan III:
Interface Produk yang Profesional

Prototype yang fungsional sudah cukup untuk UTS โ€” tapi untuk Demo Day, produkmu harus terlihat dan terasa profesional. Di sesi ini kita transformasi tampilan kasar menjadi interface yang meyakinkan investor dan pengguna.

1. Prinsip UI/UX untuk Produk AI

Produk AI punya tantangan UI/UX yang unik: pengguna tidak selalu tahu "sedang diproses" atau "ada yang salah". Empat prinsip ini wajib ada di setiap produk berbasis LLM:

๐ŸŽฏ
Simplicity
Terlalu banyak opsi dan tombol di layar pertama
Satu aksi utama yang jelas di halaman pertama
๐Ÿ’ฌ
Feedback Jelas
Tombol ditekan tapi tidak ada respons visual apapun
Animasi/warna berubah saat tombol ditekan
โณ
Loading State
Layar diam selama AI berpikir โ€” user mengira error
Spinner, dots animasi, atau skeleton saat AI memproses
โš ๏ธ
Error State
Tampilkan kode error teknis yang membingungkan
Pesan ramah + instruksi apa yang harus dilakukan

UX yang baik itu seperti lift yang profesional vs lift asal jadi. Lift profesional: tombol menyala saat dipencet (feedback), nomor lantai berubah saat bergerak (loading state), dan ada notifikasi jika rusak (error state). Lift asal jadi: pencet tombol, tidak ada reaksi, kamu tidak tahu apakah lift bergerak atau mati.

2. Anatomi Landing Page Produk AI

Landing page adalah "etalase toko" produkmu di internet. Dalam hitungan detik, pengunjung akan memutuskan apakah mau mencoba produkmu atau pergi. Klik setiap seksi untuk lihat panduan penulisannya:

๐Ÿ  Struktur Landing Page Produk AI
1
Hero Section
Kesan pertama โ€” judul, sub-judul, CTA button

Headline: 5โ€“8 kata yang langsung menjelaskan nilai produk. Contoh: "Balas 100 Pertanyaan WA Pelanggan dalam 1 Menit" โ€” bukan "Platform AI Terbaik".

Sub-headline: 1โ€“2 kalimat yang menjelaskan UNTUK SIAPA dan BAGAIMANA caranya. Contoh: "AgriBot membantu petani Indonesia mendiagnosis penyakit tanaman secara instan, tanpa perlu koneksi kuat."

CTA Button: Gunakan kata kerja aktif + benefit. "Coba Gratis Sekarang" jauh lebih kuat dari "Submit" atau "OK".

2
Social Proof / Masalah
Konfirmasi bahwa masalah ini nyata dirasakan banyak orang

Tampilkan kutipan singkat dari calon pengguna yang pernah kamu wawancara: "Saya habiskan 3 jam sehari hanya untuk jawab WA pelanggan yang sama-sama." โ€” Budi, pemilik toko online.

Atau tampilkan angka yang relevan: "73% UMKM Indonesia kehilangan pelanggan karena respons lambat". Data membuat masalah terasa nyata.

3
Fitur Utama (3 Kartu)
Tiga keunggulan produk dengan ikon dan penjelasan singkat

Tampilkan maksimal 3 fitur utama โ€” lebih dari itu membingungkan. Setiap kartu: ikon (emoji atau SVG), nama fitur (2โ€“3 kata), manfaat (1 kalimat, fokus pada outcome pengguna bukan spesifikasi teknis).

Contoh yang buruk: "Menggunakan model LLaMA 3.1 8B dengan 8K context window". Contoh yang baik: "Jawab otomatis dalam 3 detik, bahkan saat kamu tidur".

4
Cara Kerja (How It Works)
3 langkah simpel bagaimana produk digunakan

Tiga langkah berurutan dengan nomor besar: 1. Hubungkan WhatsApp โ†’ 2. Atur pertanyaan & jawaban โ†’ 3. Aktifkan dan istirahat!

Ini menghilangkan ketakutan calon pengguna: "apakah ini rumit?". Tiga langkah sederhana membuat produk terasa accessible.

5
CTA Penutup
Ajakan terakhir untuk mencoba โ€” jangan biarkan user pergi tanpa aksi

Ulangi CTA di bagian bawah halaman dengan teks yang sedikit berbeda. Contoh: "Siap hemat 3 jam sehari? Coba AgriBot 14 hari gratis โ€” tanpa kartu kredit."

Tambahkan elemen penghilang risiko: "Tidak perlu install apapun. Cancel kapan saja." Ini mengurangi hambatan psikologis untuk mencoba.

3. Kode CSS Profesional โ€” Responsive & Menarik

Berikut kode CSS praktis untuk elemen-elemen kunci landing page produk AI. Semua responsif dan siap pakai:

/* โ”€โ”€ Design System: CSS Variables โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */ :root { /* Warna Utama */ --primary: #1a6b2a; /* Hijau utama */ --primary-dark: #0d3d16; --accent: #f0c040; /* Emas aksen */ --accent-dark: #c9900a; --bg: #f8faf8; /* Background terang */ --text: #1a2e1a; --text-muted: #6a8a6a; /* Typography */ --font-heading: 'Cinzel', serif; --font-body: 'Raleway', sans-serif; /* Spacing */ --radius: 12px; --shadow: 0 4px 20px rgba(0,0,0,0.08); --shadow-lg: 0 12px 40px rgba(0,0,0,0.15); } /* Gunakan CSS vars di seluruh project agar */ /* mudah diganti tema hanya dari satu tempat */ button.primary { background: var(--accent); color: var(--primary-dark); border-radius: var(--radius); }
/* โ”€โ”€ Hero Section โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */ .hero { min-height: 90vh; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 60px 24px; background: linear-gradient( 135deg, var(--primary-dark) 0%, var(--primary) 100% ); } .hero h1 { font-family: var(--font-heading); font-size: clamp(2rem, 5vw, 3.5rem); color: white; line-height: 1.2; margin-bottom: 16px; } .hero-cta { display: inline-block; padding: 14px 36px; background: var(--accent); color: var(--primary-dark); border-radius: 100px; font-weight: 700; font-size: 1rem; text-decoration: none; transition: transform .2s, box-shadow .2s; box-shadow: 0 4px 16px rgba(240,192,64,0.4); } .hero-cta:hover { transform: translateY(-3px); box-shadow: 0 8px 24px rgba(240,192,64,0.5); }
/* โ”€โ”€ Feature Cards Grid โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */ .features-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 24px; padding: 60px 24px; max-width: 1100px; margin: 0 auto; } .feature-card { border: 1px solid rgba(0,0,0,0.08); border-radius: var(--radius); padding: 28px 24px; background: white; box-shadow: var(--shadow); transition: transform .25s, box-shadow .25s; } .feature-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-lg); } .feature-card .icon { font-size: 2rem; margin-bottom: 14px; } .feature-card h3 { font-family: var(--font-heading); font-size: 1rem; color: var(--primary-dark); margin-bottom: 8px; }
/* โ”€โ”€ Responsive Design Breakpoints โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */ /* Desktop first โ€” default styles di atas */ /* Tablet (768px ke bawah) */ @media (max-width: 768px) { .hero h1 { font-size: clamp(1.8rem, 6vw, 2.4rem); } .features-grid { grid-template-columns: 1fr 1fr; gap: 16px; } .nav-links { display: none; } /* Sembunyikan nav desktop */ .hamburger { display: block; } /* Tampilkan hamburger */ } /* Mobile (480px ke bawah) */ @media (max-width: 480px) { main { padding: 0 16px; } .hero { padding: 40px 16px; } .features-grid { grid-template-columns: 1fr; } .hero-cta { width: 100%; text-align: center; } } /* Tip: gunakan clamp() untuk ukuran font yang */ /* otomatis scale antara mobile dan desktop */ h1 { font-size: clamp(1.5rem, 4vw, 3rem); }

4. Loading State & Typing Effect

Dua fitur UX yang paling membedakan produk AI yang terasa "professional" vs "asal jadi" adalah loading state yang informatif dan typing effect yang membuat respons AI terasa lebih hidup.

Pilihan Loading Indicator

Spinner
Paling umum, cocok untuk loading singkat
Typing Dots
Khusus chatbot โ€” meniru "seseorang sedang mengetik"
Skeleton
Untuk konten yang akan muncul โ€” mengurangi "pop in"
Progress Bar
Untuk proses multi-langkah yang panjang

๐Ÿ”ฌ Lab: Typing Effect Demo

Typing effect membuat respons AI terasa lebih natural dan mengurangi kejutan visual saat teks tiba-tiba muncul sekaligus. Coba di bawah ini:

โŒจ๏ธ Typing Effect Simulator
Kecepatan:
// typing_effect.js โ€” Tampilkan teks karakter demi karakter async function typeText(elementId, text, speedMs = 30) { const el = document.getElementById(elementId); el.innerHTML = ''; // Kosongkan dulu // Tambah kursor berkedip const cursor = document.createElement('span'); cursor.className = 'typing-cursor'; cursor.textContent = '|'; el.appendChild(cursor); // Ketik satu karakter per iterasi for (const char of text) { cursor.insertAdjacentText('beforebegin', char); el.scrollTop = el.scrollHeight; // Auto-scroll await new Promise(r => setTimeout(r, speedMs)); } cursor.remove(); // Hapus kursor setelah selesai } // Penggunaan โ€” setelah dapat respons API: const reply = await getAIResponse(userMsg); typeText('chat-output', reply, 25);
/* CSS untuk kursor berkedip */ .typing-cursor { display: inline-block; width: 2px; height: 1.1em; background: currentColor; /* Sesuai warna teks */ vertical-align: middle; margin-left: 2px; animation: blink 0.8s ease-in-out infinite; } @keyframes blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } } /* Typing dots untuk loading indicator */ .typing-dots span { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: currentColor; animation: dotPulse 1.2s infinite; margin: 0 2px; } .typing-dots span:nth-child(2) { animation-delay: .2s; } .typing-dots span:nth-child(3) { animation-delay: .4s; } @keyframes dotPulse { 0%, 100% { transform: translateY(0); opacity: .5; } 50% { transform: translateY(-6px); opacity: 1; } }

5. Lab: Live Landing Page Builder

Isi form di kiri, atau gunakan AI untuk auto-generate konten berdasarkan deskripsi produkmu. Preview langsung tampil di kanan:

๐ŸŽจ Landing Page Builder
Preview real-time ยท AI Copy Generator
Uji Pemahaman โ€” Sesi 9
Pertanyaan 01
Pengguna mengklik tombol "Kirim" di chatbot AI kamu, tapi layar diam selama 4 detik tanpa respons visual apapun. Masalah UX yang terjadi adalah...
Pertanyaan 02
Headline landing page manakah yang paling efektif untuk produk chatbot pelanggan?
Pertanyaan 03
Fungsi clamp() dalam CSS seperti font-size: clamp(1.5rem, 4vw, 3rem) berguna karena...
Pertanyaan 04
Loading indicator "skeleton screen" (baris abu-abu beranimasi) paling tepat digunakan untuk...
Pertanyaan 05
Mengapa typing effect (menampilkan respons AI karakter per karakter) meningkatkan pengalaman pengguna?
UTS
IF1801 ยท Sesi 9 / 16
Sesi 10
Asisten IF1801
Sesi 9 ยท UI/UX & Landing Page
Halo! Tanya tentang Sesi 9 โ€” prinsip UI/UX produk AI, anatomi landing page, CSS responsive, loading state, typing effect, atau cara mempercantik tampilan produkmu. ๐ŸŽจ