Baby Monitor Timmy berawal dari gagasan sederhana: monitor bayi yang menghormati privasi di rumah. Tanpa rekaman cloud, tanpa jalur data yang tidak perlu keluar dari kamar bayi. Yang tidak banyak orang lihat: saya membangun Timmy sendiri di Zurich, dan GitHub Copilot adalah rekan pemrograman saya yang sangat cepat.
Alur Kerja Manusia-AI
Pembagiannya jelas: saya menentukan fitur, menetapkan prioritas, dan mengambil keputusan arsitektur. Copilot membantu dalam implementasi: menulis kode, menambahkan pengujian, melacak sumber bug, dan menyiapkan langkah rilis.
Kurang lebih, seperti inilah sprint yang biasa saya jalankan:
- Deskripsi fitur: Saya menjelaskan apa yang harus dilakukan fitur tersebut, termasuk kasus tepi dan batasannya.
- Implementasi: Copilot menyarankan kode dan mengikuti konvensi yang sudah ada di proyek.
- Pengujian: Pengujian end-to-end otomatis berjalan pada dua emulator dan memeriksa koneksi nyata antara perangkat bayi dan perangkat orang tua.
- Distribusi: Saat pengujian lulus, build Android dan iOS disiapkan untuk store serta jalur pengujian yang tepat.
Siklus ini berulang untuk fitur dan perbaikan bug. Saya tidak menulis setiap baris sendiri, tetapi saya memutuskan apa yang akan dibangun, mengapa itu dibangun, dan apakah sebuah saran cocok untuk Timmy.
Dari Konsep ke WebRTC
Tugas teknis utamanya sudah jelas sejak awal: audio dan video real-time antara dua ponsel. WebRTC adalah pilihan yang jelas, tetapi mengintegrasikannya dengan Flutter tidak sederhana: kandidat ICE, negosiasi SDP, fallback TURN, dan DataChannel harus bekerja bersama dalam urutan yang tepat.
Copilot membantu saya menyatukan bagian-bagian itu selangkah demi selangkah: menyiapkan peer connection, menjaga urutan penting tetap benar (DataChannel sebelum offer, onTrack sebelum setRemoteDescription), dan menempatkan signaling di Firebase Firestore. Setiap bagian harus berjalan di dua emulator sebelum saya melanjutkan.
Pemasangan Aman dengan ECDH
Salah satu fitur yang paling penting adalah sistem pemasangan yang aman. Dua perangkat perlu membangun kepercayaan bersama tanpa mengandalkan server pusat untuk menjamin identitas mereka. Solusinya: pertukaran kunci ECDH P-256 melalui Firebase, dipadukan dengan nomor verifikasi visual (SAS) yang mendeteksi serangan man-in-the-middle.
Copilot membantu mengimplementasikan rangkaian kriptografi: pembuatan kunci, pertukaran kunci publik, penurunan rahasia bersama, perhitungan SAS, dan enkripsi AES-256-GCM untuk semua data signaling berikutnya. Saya tidak mengirim kunci pemasangan ke backend; hanya hash SHA-256-nya yang digunakan sebagai pengenal dokumen Firestore.
Audit Keamanan: Menemukan dan Memperbaiki Kerentanan
Pengembangan dengan bantuan AI bagi saya bukan sekadar mengetik lebih cepat. Ini juga membantu pencarian bug secara sistematis. Dalam sprint audit keamanan yang terfokus, Copilot menganalisis basis kode dan menemukan enam masalah yang perlu saya perbaiki:
- Validasi input pada data signaling belum ada
- Potensi kondisi balapan dalam penanganan kandidat ICE
- Data sesi lama yang tidak dibersihkan dengan benar
- Aturan keamanan Firestore yang terlalu longgar
- Pertimbangan certificate pinning yang belum ada
- Penanganan error yang belum memadai dalam alur kredensial TURN
Keenamnya diperbaiki dalam sprint yang sama. Di sinilah Copilot kuat: membaca banyak file, membandingkan pola, dan menandai bagian yang perlu saya periksa lebih teliti.
Sprint Iteratif: Bagaimana Aplikasi Ini Berkembang
Timmy berkembang melalui sprint yang cepat, tetapi batasnya jelas. Beberapa pencapaian:
- v1.8: Desain ulang pemasangan sepenuhnya — kode 4 karakter + ECDH P-256 melalui Firebase menggantikan pendekatan kunci langsung yang lama.
- v1.10: Sprint penguatan keamanan — siklus audit dan perbaikan enam kerentanan.
- v1.11: Mode gelap di semua layar, ditambah halaman utama dan blog yang sedang Anda baca ini.
- v1.12: Pembaruan besar layar orang tua, mode penglihatan malam, dan deteksi gerakan melalui analisis frame kamera.
Setiap sprint mengikuti pola dasar yang sama: jelaskan tujuannya, tinjau saran, uji secara otomatis, lalu rilis ke penguji.
Pengujian E2E di Berbagai Perangkat
Anda tidak bisa menguji monitor bayi dengan benar hanya pada satu perangkat. Saya membutuhkan satu perangkat bayi dan satu perangkat orang tua. Proyek ini dimulai dengan dua emulator Android yang berjalan bersamaan dan sekarang melengkapi alur tersebut dengan pemeriksaan simulator iOS lokal serta perangkat fisik. Skrip pengujian Android otomatis tetap:
- Menginstal aplikasi di kedua emulator
- Menjalankan proses pemasangan di kedua perangkat
- Memverifikasi bahwa koneksi audio dan video berhasil dibuat
- Menguji push-to-talk, kontrol kamera, dan fitur lainnya
Karena kedua emulator menggunakan alamat IP yang sama (10.0.2.15), koneksi langsung peer-to-peer melalui STUN tidak mungkin dilakukan. Setiap pengujian harus melalui relay Cloudflare TURN. Memang merepotkan, tetapi berguna: jalur koneksi yang paling rumit diuji setiap kali.
Yang Saya Pelajari
Membangun aplikasi lengkap dengan rekan pemrograman AI mengajarkan saya beberapa hal:
- Arsitektur lebih penting dari sebelumnya. Konvensi yang jelas dan basis kode yang terdokumentasi dengan baik membantu AI menyarankan kode yang konsisten. Ambiguitas dapat dengan cepat menyulitkan pekerjaan dan menambah biaya.
- Pengujian tidak bisa ditawar. Kode yang dihasilkan AI memerlukan pengujian ketat yang sama seperti kode yang ditulis manusia. Pengujian E2E otomatis menemukan masalah yang mudah terlewat jika diperiksa manual.
- Manusia tetap terlibat. Setiap keputusan arsitektur, setiap kompromi keamanan, dan setiap batasan produk tetap menjadi tanggung jawab saya. AI mempercepat implementasi, tetapi tidak menggantikan penilaian manusia.
- Kecepatan memungkinkan kualitas. Karena fitur dirilis dalam hitungan jam, bukan hari, ada lebih banyak iterasi untuk penyempurnaan dan perbaikan bug. Cepat tidak otomatis berarti baik.
Ke Depan
Baby Monitor Timmy terus berkembang. Rilis iOS sudah dekat; setelah itu akan ada fitur sensor tambahan dan penguatan keamanan yang berkelanjutan. Alur kerjanya tetap serupa: saya menentukan arah dan batasan, Copilot membantu mengimplementasikan serta memeriksa dengan cepat.
Komponen yang berkaitan dengan keamanan kini berada dalam batasan yang jelas di repositori publik baby-monitor-timmy-core. Di sana pula keputusan arsitektur terkait pemasangan, signaling, dan antarmuka backend didokumentasikan.