Blog

Paano Ko Binubuo ang Baby Monitor Timmy gamit ang GitHub Copilot

Tinutulungan ako ng AI na kumilos nang mas mabilis. Pero nasa akin pa rin ang responsibilidad para sa Timmy.

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:

  1. Paglalarawan ng feature: Inilalarawan ko kung ano ang dapat gawin ng feature, kasama ang mga edge case at limitasyon.
  2. Implementation: Nagmumungkahi ang Copilot ng code at sinusunod ang umiiral na mga convention ng proyekto.
  3. Testing: Tumatakbo ang automated end-to-end test sa dalawang emulator at sinusuri ang aktuwal na koneksyon ng baby at parent device.
  4. 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:

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:

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:

  1. Ini-install ang app sa parehong emulator
  2. Dumaan sa proseso ng pagpapares sa parehong device
  3. Tinitiyak na naitatag ang koneksyon ng audio at video
  4. 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:

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.


Higit Pang Artikulo