Baby Monitor Timmy bermula dengan idea mudah: monitor bayi yang menghormati privasi di rumah. Tiada rakaman awan, tiada laluan data yang tidak perlu keluar dari bilik bayi. Apa yang ramai orang tidak nampak: saya membina Timmy sebagai projek solo di Zurich, dan GitHub Copilot ialah rakan pengatur cara saya yang sangat pantas.
Aliran Kerja Manusia-AI
Pembahagiannya jelas: saya menentukan ciri, menetapkan keutamaan dan membuat keputusan seni bina. Copilot membantu dengan pelaksanaan: menulis kod, menambah ujian, mengecilkan punca pepijat dan menyediakan langkah pelancaran.
Sprint biasa saya lebih kurang begini:
- Penerangan ciri: Saya menerangkan perkara yang perlu dilakukan oleh ciri itu, termasuk kes luar jangka dan kekangan.
- Pelaksanaan: Copilot mencadangkan kod dan mengikut konvensyen sedia ada projek.
- Ujian: Ujian hujung ke hujung automatik dijalankan pada dua emulator dan menyemak sambungan sebenar antara peranti bayi dan ibu bapa.
- Pengedaran: Apabila ujian lulus, binaan Android dan iOS disediakan untuk gedung serta saluran ujian yang betul.
Kitaran ini berulang untuk ciri dan pembaikan pepijat. Saya tidak menulis setiap baris sendiri, tetapi saya menentukan apa yang dibina, mengapa ia dibina, dan sama ada cadangan itu sesuai untuk Timmy.
Daripada Konsep kepada WebRTC
Tugas teknikal utama jelas sejak awal: audio dan video masa nyata antara dua telefon. WebRTC ialah pilihan yang jelas, tetapi menyepadukannya dengan Flutter bukan mudah: calon ICE, rundingan SDP, sandaran TURN dan DataChannel perlu berfungsi bersama dalam urutan yang betul.
Copilot membantu saya menyatukan bahagian-bahagian itu langkah demi langkah: menyediakan sambungan rakan setara, memastikan urutan penting betul (DataChannel sebelum offer, onTrack sebelum setRemoteDescription), dan meletakkan pensinyalan pada Firebase Firestore. Setiap bahagian perlu berjalan pada dua emulator sebelum saya meneruskan kerja.
Pemasangan Selamat dengan ECDH
Salah satu ciri paling kritikal ialah sistem pemasangan selamat. Dua peranti perlu mewujudkan kepercayaan bersama tanpa bergantung pada pelayan pusat untuk mengesahkan identiti mereka. Penyelesaiannya: pertukaran kunci ECDH P-256 melalui Firebase, digabungkan dengan nombor pengesahan visual (SAS) yang mengesan serangan man-in-the-middle.
Copilot membantu melaksanakan rantaian kriptografi: penjanaan kunci, pertukaran kunci awam, terbitan rahsia bersama, pengiraan SAS dan penyulitan AES-256-GCM untuk semua data pensinyalan selepas itu. Saya tidak menghantar kunci pemasangan ke bahagian belakang; hanya cincangan SHA-256 digunakan sebagai pengecam dokumen Firestore.
Audit Keselamatan: Mencari dan Membetulkan Kerentanan
Pembangunan berbantukan AI bukan sekadar menaip lebih pantas bagi saya. Ia juga membantu memburu pepijat secara sistematik. Dalam sprint audit keselamatan yang fokus, Copilot menganalisis pangkalan kod dan menemui enam isu yang perlu saya baiki:
- Pengesahan input yang tiada pada data pensinyalan
- Kemungkinan keadaan perlumbaan dalam pengendalian calon ICE
- Data sesi lama yang tidak dibersihkan dengan betul
- Peraturan keselamatan Firestore yang terlalu longgar
- Pertimbangan certificate pinning yang tiada
- Pengendalian ralat yang tidak mencukupi dalam aliran kelayakan TURN
Keenam-enamnya dibaiki dalam sprint yang sama. Di sinilah Copilot kuat: membaca banyak fail, membandingkan corak dan menandakan bahagian yang perlu saya periksa dengan lebih teliti.
Sprint Berulang: Cara Aplikasi Ini Berkembang
Timmy berkembang melalui sprint yang pantas tetapi mempunyai batasan jelas. Antara pencapaian:
- v1.8: Reka bentuk semula pemasangan sepenuhnya — kod 4 aksara + ECDH P-256 melalui Firebase menggantikan pendekatan kunci terus yang lama.
- v1.10: Sprint pengukuhan keselamatan — kitaran audit dan pembaikan enam kerentanan.
- v1.11: Mod gelap pada semua skrin, serta halaman utama dan blog yang sedang anda baca sekarang.
- v1.12: Naik taraf besar pada skrin ibu bapa, mod penglihatan malam dan pengesanan pergerakan melalui analisis bingkai kamera.
Setiap sprint mengikut corak asas yang sama: terangkan matlamat, semak cadangan, uji secara automatik, kemudian hantar kepada penguji.
Ujian E2E Merentas Peranti
Anda tidak boleh menguji monitor bayi dengan betul pada satu peranti sahaja. Saya perlukan satu peranti bayi dan satu peranti ibu bapa. Projek ini bermula dengan dua emulator Android yang berjalan serentak dan kini melengkapkan kitaran itu dengan pemeriksaan simulator iOS setempat serta peranti sebenar. Skrip ujian Android automatik masih:
- Memasang aplikasi pada kedua-dua emulator
- Menavigasi proses pemasangan pada kedua-dua peranti
- Mengesahkan bahawa sambungan audio dan video telah diwujudkan
- Menguji push-to-talk, kawalan kamera dan ciri lain
Oleh sebab kedua-dua emulator berkongsi alamat IP yang sama (10.0.2.15), sambungan rakan setara secara terus melalui STUN adalah mustahil. Setiap ujian perlu melalui geganti Cloudflare TURN. Itu memang menyusahkan, tetapi berguna: laluan sambungan yang paling rumit diuji setiap kali.
Apa yang Saya Pelajari
Membina aplikasi lengkap dengan rakan pengatur cara AI mengajar saya beberapa perkara:
- Seni bina lebih penting berbanding sebelum ini. Konvensyen yang jelas dan pangkalan kod yang didokumentasikan dengan baik membantu AI mencadangkan kod yang konsisten. Kekaburan cepat menjadi mahal.
- Ujian tidak boleh dikompromi. Kod yang dijana AI memerlukan ujian rapi yang sama seperti kod yang ditulis manusia. Ujian E2E automatik menemui isu yang mudah terlepas jika diuji secara manual.
- Manusia kekal terlibat. Setiap keputusan seni bina, setiap pertukaran demi keselamatan dan setiap batasan produk kekal pada saya. AI mempercepatkan pelaksanaan, tetapi tidak menggantikan pertimbangan.
- Kelajuan membolehkan kualiti. Oleh sebab ciri dilancarkan dalam beberapa jam, bukan beberapa hari, lebih banyak pusingan boleh digunakan untuk kemasan dan membaiki pepijat. Cepat tidak semestinya baik.
Melihat ke Hadapan
Baby Monitor Timmy terus berkembang. Pelancaran iOS sudah dekat; selepas itu akan hadir ciri sensor tambahan dan pengukuhan keselamatan berterusan. Aliran kerja kekal serupa: saya menetapkan hala tuju dan batasan, Copilot membantu melaksanakan serta menyemak dengan pantas.
Komponen penting untuk keselamatan kini berada di bawah batasan yang jelas dalam repositori baby-monitor-timmy-core. Di situlah keputusan seni bina berkaitan pemasangan, pensinyalan dan antara muka bahagian belakang turut didokumentasikan.