Nagsimula ang Baby Monitor Timmy sa isang simpleng ideya: isang baby monitor na gumagalang sa privacy sa bahay. Walang cloud recording, walang hindi kailangang daluyan ng data palabas ng kuwarto ng sanggol. Ang hindi nakikita ng marami: solo kong binubuo ang Timmy sa Zurich, at GitHub Copilot ang napakabilis kong pair programmer.
Ang Daloy ng Trabaho ng Tao at AI
Malinaw ang paghahati: ako ang nagtatakda ng mga feature, prayoridad, at mga desisyon sa architecture. Tumutulong ang Copilot sa implementation: pagsulat ng code, pagdagdag ng mga test, pagtukoy sa mga bug, at paghahanda ng mga hakbang sa release.
Ganito karaniwang takbo ng isang sprint para sa akin:
- Paglalarawan ng feature: Inilalarawan ko kung ano ang dapat gawin ng feature, kasama ang mga edge case at limitasyon.
- Implementation: Nagmumungkahi ang Copilot ng code at sinusunod ang umiiral na mga convention ng proyekto.
- Testing: Tumatakbo ang automated end-to-end test sa dalawang emulator at sinusuri ang aktuwal na koneksyon ng baby at parent device.
- Pamamahagi: Kapag pumasa ang mga test, inihahanda ang Android at iOS build para sa tamang store at testing track.
Paulit-ulit ang cycle na ito para sa mga feature at bug fix. Hindi ko mismo isinusulat ang bawat linya, pero ako ang nagpapasya kung ano ang bubuuin, bakit ito bubuuin, at kung bagay ba sa Timmy ang isang mungkahi.
Mula Konsepto Hanggang WebRTC
Malinaw ang pangunahing teknikal na gawain mula sa simula: real-time na audio at video sa pagitan ng dalawang phone. Malinaw na pagpipilian ang WebRTC, pero hindi simple ang pagsasama nito sa Flutter: kailangang gumana nang magkakasama at nasa tamang pagkakasunod-sunod ang ICE candidates, SDP negotiation, TURN fallback, at DataChannels.
Tinulungan ako ng Copilot na pagsamahin ang mga bahaging iyon nang paisa-isa: i-set up ang peer connection, panatilihing tama ang kritikal na pagkakasunod-sunod (DataChannel bago ang offer, onTrack bago ang setRemoteDescription), at ilagay ang signaling sa Firebase Firestore. Kailangang gumana ang bawat bahagi sa dalawang emulator bago ako magpatuloy.
Ligtas na Pagpapares gamit ang ECDH
Isa sa pinakamahalagang feature ay ang ligtas na sistema ng pagpapares. Kailangang makapagtatag ng tiwala sa isa't isa ang dalawang device nang hindi umaasa sa isang central server na magpapatunay ng kanilang pagkakakilanlan. Ang solusyon: ECDH P-256 key exchange sa Firebase, kasama ng visual verification number (SAS) na nakakadetect ng man-in-the-middle attacks.
Tumulong ang Copilot sa pagpapatupad ng cryptographic chain: key generation, pagpapalitan ng public key, pagbuo ng shared secret, pagkalkula ng SAS, at AES-256-GCM encryption para sa lahat ng susunod na signaling data. Hindi ko ipinapadala ang pairing key sa backend; SHA-256 hash lang nito ang ginagamit bilang Firestore document identifier.
Security Audit: Paghahanap at Pag-aayos ng mga Kahinaan
Hindi lang mas mabilis na pagta-type ang AI-assisted development para sa akin. Nakakatulong din ito sa sistematikong paghahanap ng bug. Sa isang nakatuong security audit sprint, sinuri ng Copilot ang codebase at nakakita ng anim na isyu na kailangan kong ayusin:
- Kulang na input validation sa signaling data
- Posibleng race condition sa paghawak ng ICE candidate
- Lumang session data na hindi nalilinis nang maayos
- Masyadong maluwag na Firestore security rules
- Kulang na pagsasaalang-alang sa certificate pinning
- Hindi sapat na error handling sa TURN credential flow
Naayos ang lahat ng anim sa parehong sprint. Dito mahusay ang Copilot: magbasa ng maraming file, maghambing ng mga pattern, at markahan ang mga bahaging kailangan kong siyasatin nang mas mabuti.
Mga Paulit-ulit na Sprint: Paano Umunlad ang App
Lumago ang Timmy sa pamamagitan ng mabibilis ngunit malinaw ang saklaw na mga sprint. Ilan sa mga milestone:
- v1.8: Kumpletong redesign ng pagpapares — pinalitan ng 4-character code + ECDH P-256 sa Firebase ang dating direct-key approach.
- v1.10: Sprint para patatagin ang seguridad — ang audit at pag-aayos sa anim na kahinaan.
- v1.11: Dark mode sa lahat ng screen, pati ang homepage at blog na binabasa mo ngayon.
- v1.12: Malaking pagbabago sa parent screen, night vision mode, at motion detection sa pamamagitan ng pagsusuri ng camera frame.
Pareho ang pangunahing pattern ng bawat sprint: ilarawan ang layunin, suriin ang mga mungkahi, mag-test nang awtomatiko, at saka ipadala sa mga tester.
E2E Testing sa Iba't Ibang Device
Hindi mo masusubukan nang maayos ang baby monitor sa isang device lang. Kailangan ko ng isang baby device at isang parent device. Nagsimula ang proyekto sa dalawang Android emulator na sabay tumatakbo at ngayon ay dinadagdagan ang loop na iyon ng local iOS simulator at mga pagsusuri sa totoong device. Ang automated Android test script ay ginagawa pa rin ang sumusunod:
- Ini-install ang app sa parehong emulator
- Dumaan sa proseso ng pagpapares sa parehong device
- Tinitiyak na naitatag ang koneksyon ng audio at video
- Sinusubukan ang push-to-talk, camera control, at iba pang feature
Dahil parehong iisa ang IP address ng dalawang emulator (10.0.2.15), imposible ang direktang peer-to-peer connection gamit ang STUN. Kailangang dumaan ang bawat test run sa Cloudflare TURN relay. Nakakainis ito, pero kapaki-pakinabang: nasusubukan sa bawat pagkakataon ang pinakakomplikadong koneksyon.
Mga Natutuhan Ko
May ilang bagay akong natutuhan sa pagbuo ng kumpletong app kasama ang AI pair programmer:
- Mas mahalaga kaysa dati ang architecture. Ang malinaw na mga convention at mahusay na dokumentadong codebase ay tumutulong sa AI na magmungkahi ng pare-parehong code. Mabilis maging magastos ang kalabuan.
- Hindi puwedeng isantabi ang testing. Kailangan ng AI-generated code ng kasinghigpit na testing gaya ng code na isinulat ng tao. Nakakita ang automated E2E test ng mga isyung madaling hindi mapansin kapag mano-manong sinubukan.
- Mahalaga pa rin ang tao sa proseso. Nasa akin pa rin ang bawat desisyon sa architecture, bawat security trade-off, at bawat hangganan ng produkto. Pinapabilis ng AI ang implementation, pero hindi nito napapalitan ang paghatol.
- Nagbibigay-daan ang bilis sa kalidad. Dahil nailalabas ang mga feature sa loob ng ilang oras sa halip na ilang araw, mas marami pang pagkakataon para sa pagpapakinis at pag-aayos ng mga bug. Hindi awtomatikong nangangahulugang maganda ang mabilis.
Sa Hinaharap
Patuloy na umuunlad ang Baby Monitor Timmy. Malapit na ang iOS release; kasunod nito ang karagdagang sensor feature at tuloy-tuloy na pagpapalakas ng seguridad. Katulad pa rin ang workflow: ako ang nagtatakda ng direksyon at mga hangganan, at tumutulong ang Copilot sa mabilis na implementation at pagsusuri.
Nasa ilalim na ngayon ng malinaw na mga hangganan sa pampublikong baby-monitor-timmy-core repository. Doon din nakadokumento ang mga desisyon sa architecture para sa pagpapares, signaling, at backend interface.