Produk Kami7 menit baca

Membangun Cuplikin: Dari Ide Sampai Rilis di Mac, iPhone, dan Android

Cerita jujur membangun Cuplikin, AI video clipper buatan kami: 5 minggu sampai Mac App Store, ditolak Apple, lalu iOS dan Android dari satu codebase Flutter.

Ghozi MahdiRead in English

Sebagian besar artikel di blog ini membahas cara kerja sama dengan software house. Kali ini kami membuka dapur sendiri. Cuplikin adalah AI video clipper yang kami bangun dan rilis sendiri: aplikasi yang mengubah video panjang menjadi cuplikan pendek siap unggah, dengan bantuan AI untuk menemukan momen menariknya.

Artikel ini bukan brosur produk. Ini catatan proses: masalah apa yang ingin diselesaikan, keputusan apa yang diambil di awal, apa yang ternyata lebih lama dari perkiraan, dan apa yang akan kami lakukan berbeda. Kalau kamu sedang mempertimbangkan membangun aplikasi, apalagi aplikasi dengan AI di dalamnya, cerita ini memberi gambaran nyata soal apa yang terjadi di balik layar. Tahap-tahapnya sama dengan yang kami jelaskan di SDLC untuk pemilik bisnis.

Masalah yang ingin diselesaikan

Kalau kamu pernah membuat konten pendek dari video panjang, kamu tahu rasanya: menonton ulang satu jam rekaman, mencari bagian yang "kena", memotong, lalu mengetik caption kata per kata. Pekerjaannya membosankan dan memakan waktu, tapi hasilnya sangat menentukan apakah konten ditonton atau dilewati.

Alat sejenis sudah ada, tetapi hampir semuanya berbasis cloud: video kamu diunggah ke server pihak ketiga, diproses di sana, dan kamu membayar per menit video. Untuk kreator yang videonya besar, sensitif, atau sekadar ingin memegang kendali atas filenya sendiri, model itu kurang nyaman.

Dari situ muncul premis Cuplikin: video dan hasil editan tetap di perangkat pengguna, AI dipakai untuk bagian yang paling membosankan, yaitu menemukan momen dan menyiapkan caption, dan pengguna tetap yang memutuskan.

Discovery: memangkas scope versi pertama

Daftar fitur awal kami panjang, seperti biasanya. Ada ide konteks brand, editor timeline lengkap, publikasi langsung ke media sosial. Semuanya terdengar bagus di atas kertas.

Versi pertama akhirnya kami kunci ke satu alur inti:

  1. Pilih video sumber, dari file lokal atau tautan YouTube.
  2. Transkripsi otomatis dengan timestamp per kata.
  3. AI menyarankan momen yang layak jadi cuplikan, lengkap dengan skor dan alasan singkat.
  4. Pengguna memilih momen, merapikan transkrip dan caption, menentukan rasio (9:16, 1:1, 16:9, 4:3).
  5. Ekspor cuplikan dengan caption yang sudah "dibakar" ke video, tanpa watermark.

Fitur lain masuk ke daftar tunggu. Prinsipnya sama dengan yang kami tulis di MVP vs produk lengkap: versi pertama harus cukup untuk belajar dari pengguna nyata, bukan cukup untuk memuaskan semua ide kami sendiri.

Catatan jujur: di dokumen perencanaan awal, versi mobile kami taruh sebagai prioritas paling akhir, "V4, prioritas rendah". Kenyataannya iPhone, iPad, dan Android menyusul kurang dari dua bulan setelah rilis Mac. Itu bukan karena rencananya salah, tetapi karena arsitektur yang dipilih di awal membuat perluasan ke mobile jauh lebih murah dari perkiraan. Keputusan arsitektur di hari pertama menentukan opsi yang kamu punya di bulan ketiga.

Keputusan 1: Flutter, satu codebase untuk desktop dan mobile

Sebelum menulis kode, kami membandingkan tiga opsi untuk aplikasi desktop: Flutter, Tauri (Rust + web), dan Electron. Pertimbangannya bukan "mana yang paling canggih", tetapi mana yang paling cocok dengan tiga kebutuhan: pemrosesan video berat, integrasi AI yang fleksibel, dan rencana ekspansi ke mobile.

Opsi Kelebihan Kenapa tidak dipilih
Electron Ekosistem matang untuk desktop Aplikasi berat, dan mobile butuh stack terpisah
Tauri Ringan, Rust kuat untuk proses native Stack baru untuk tim kami, dukungan mobile masih muda
Flutter Satu codebase desktop + mobile, kami sudah berpengalaman, plugin FFmpeg dan Whisper tersedia Dipilih

Faktor "kami sudah berpengalaman" sengaja kami hitung. Belajar stack baru itu biaya nyata, dan untuk produk yang ingin cepat sampai ke pengguna, pengalaman tim sering lebih menentukan daripada benchmark. Ini juga saran kami ke klien: pilih stack yang bisa dirawat timmu, bukan yang paling ramai dibicarakan.

Keputusan 2: local-first, cloud hanya untuk yang perlu

Ini keputusan paling penting di Cuplikin. Transkripsi dengan Whisper dan pemotongan serta render video dengan FFmpeg berjalan langsung di perangkat pengguna. Project, video, dan hasil ekspor disimpan lokal dan tidak pernah kedaluwarsa.

Backend tetap ada, tetapi tugasnya sempit: akun dan login, kredit dan langganan, analisis momen oleh AI untuk pengguna yang memilih mode bawaan, dan pengunduhan tautan YouTube. Video tidak diunggah untuk analisis momen; yang dikirim ke server hanya data minimum yang dibutuhkan.

Dampaknya besar untuk tiga hal:

  • Privasi. Media pengguna tidak lewat server kami. Ini pembeda yang jelas dibanding alat berbasis cloud.
  • Biaya. Komputasi paling berat, yaitu transkripsi dan render, ditanggung perangkat pengguna. Biaya cloud kami tinggal bagian yang kecil dan terukur. Kami bahas lebih dalam di biaya menjalankan produk AI.
  • Fleksibilitas AI. Pengguna bisa memakai AI bawaan kami, atau menghubungkan penyedia AI sendiri yang kompatibel dengan format OpenAI, termasuk model lokal lewat Ollama di Mac.

Ada harganya: Cuplikin versi Mac hanya mendukung Apple silicon, karena plugin Whisper yang kami pakai belum mendukung build universal untuk Intel. Kami memilih menerima batasan itu daripada menunda rilis.

Arsitektur: dipaksa rapi sejak awal

Cuplikin dibangun sebagai workspace dengan lebih dari dua puluh package yang dipisah per lapisan (domain, data, presentation) dan per fitur (project, transkripsi, pencarian hook, editor, pengaturan, billing). Ada skrip yang menolak import lintas lapisan yang dilarang, dan saat artikel ini ditulis ada sekitar 1.270 tes otomatis di sisi aplikasi serta sekitar 200 tes di backend.

Kedengarannya berlebihan untuk produk yang baru lahir. Tapi inilah yang membuat versi mobile bisa dikerjakan cepat: logika bisnis dan state management dipakai apa adanya, yang ditulis baru hanya lapisan tampilan untuk layar kecil. Tanpa pemisahan itu, "versi mobile" berarti menulis ulang separuh aplikasi.

Backend memakai NestJS di atas Fastify, PostgreSQL, Redis untuk antrean pekerjaan, dan worker terpisah untuk urusan media. Semuanya dijalankan dengan Docker di satu server. Bukan arsitektur mewah, dan memang tidak perlu.

Yang lebih lama dari perkiraan

App Store review. Commit pertama Cuplikin tanggal 10 Agustus 2026. Aplikasi tayang di Mac App Store pada 16 September 2026, sekitar lima minggu kemudian. Tapi di antaranya ada satu penolakan dari Apple pada 12 September: reviewer mempermasalahkan perilaku jendela login di macOS dan meminta alur hapus akun yang jelas, lengkap dengan rekaman video dari perangkat fisik. Kami memperbaiki keduanya, mengunggah ulang dengan rekaman, dan disetujui dua hari kemudian.

Pelajarannya: untuk aplikasi yang punya akun pengguna, siapkan alur hapus akun sejak awal. Ini bukan fitur tambahan, ini syarat masuk store.

Sandbox macOS. Rencana awal mengunduh video YouTube dengan alat di dalam container Docker di komputer pengguna. Aplikasi dari App Store tidak boleh menjalankan proses luar seperti itu. Fitur ini akhirnya pindah ke backend sebagai layanan resolver, dengan file sementara yang dihapus otomatis setelah diunduh. Satu keputusan teknis yang terlihat kecil mengubah peta arsitektur.

Paket langganan. Kami sempat punya tiga tingkat: Free, Standard, dan Pro. Pada awal Oktober Standard kami hapus total karena hanya menambah kebingungan tanpa menambah nilai. Sekarang hanya Free dan Pro (mingguan, bulanan, tahunan) plus paket kredit. Lebih sedikit pilihan ternyata lebih mudah dijelaskan dan lebih mudah dirawat.

Rilis demi rilis

Tanggal Tonggak
10 Agustus 2026 Commit pertama
12 September 2026 Ditolak App Review (jendela login, hapus akun)
16 September 2026 Tayang di Mac App Store, versi 1.0
17 September 2026 Versi 1.0.2, perbaikan pasca rilis
7 Oktober 2026 Versi 1.2.0: masuk dengan Apple dan Google, Pro mingguan, analitik
11 Oktober 2026 Versi iOS pertama (1.2.1) diajukan ke App Store
12 Oktober 2026 Listing Google Play disiapkan untuk rilis Android pertama

Ritme ini terasa normal bagi kami, dan ini juga yang kami tawarkan ke klien: rilis kecil yang sering, bukan satu peluncuran besar setelah berbulan-bulan sunyi.

Apa yang akan kami lakukan berbeda

  • Menyiapkan syarat store sejak hari pertama. Hapus akun, kebijakan privasi, akun demo untuk reviewer. Semua itu memakan waktu di akhir kalau baru dipikirkan di akhir.
  • Memutuskan batas cloud lebih awal. Pertanyaan "fitur ini jalan di perangkat atau di server?" sebaiknya dijawab saat merancang, bukan saat packaging.
  • Lebih sedikit tingkat harga sejak awal. Mulai dari Free dan satu paket berbayar. Tambah tingkat hanya kalau data pengguna memintanya.

Yang tidak akan kami ubah: pilihan Flutter, pendekatan local-first, dan disiplin memisahkan lapisan sejak awal. Ketiganya yang membuat produk ini bisa hadir di empat platform dalam dua bulan dengan tim kecil. Kalau kamu ingin tahu bagaimana bagian AI-nya bekerja, lanjut ke pipeline AI di balik Cuplikin.

Langkah selanjutnya

Proses yang kami jalani di Cuplikin, dari discovery, pemangkasan scope, pemilihan arsitektur, sampai rilis ke store, adalah proses yang sama yang kami pakai untuk proyek klien. Kalau kamu punya ide aplikasi, dengan atau tanpa AI, ceritakan ke kami untuk konsultasi awal gratis, atau chat lewat WhatsApp. Lihat juga layanan kami.

Pertanyaan yang sering diajukan

Apa itu Cuplikin?

Cuplikin adalah aplikasi buatan Rancangin Aja yang mengubah video panjang menjadi cuplikan pendek. AI menemukan momen yang layak jadi cuplikan, lalu pengguna memilih, merapikan caption, dan mengekspor. Tersedia di Mac, iPhone, iPad, dan Android.

Berapa lama Cuplikin dibangun sampai rilis?

Dari commit pertama sampai tayang di Mac App Store sekitar lima minggu, lalu versi iPhone, iPad, dan Android menyusul dalam dua bulan berikutnya dari codebase yang sama.

Kenapa Cuplikin dibangun dengan Flutter?

Karena satu codebase bisa menjangkau desktop dan mobile, kami sudah berpengalaman dengan Flutter, dan kebutuhan berat seperti FFmpeg dan transkripsi Whisper tersedia sebagai plugin yang berjalan di perangkat.

Apakah pola yang sama bisa dipakai untuk proyek klien?

Bisa. Proses yang kami pakai di Cuplikin, dari discovery, pemangkasan scope, arsitektur, sampai rilis ke store, adalah proses yang sama yang kami jalankan untuk proyek klien.

  • #cuplikin
  • #studi-kasus
  • #flutter
  • #sdlc
  • #produk-ai