Blog

Hoe ek Baby Monitor Timmy met GitHub Copilot bou

KI help my om vinniger te werk. Verantwoordelikheid vir Timmy bly steeds by my.

Baby Monitor Timmy het met ’n eenvoudige idee begin: ’n babamonitor wat privaatheid by die huis respekteer. Geen wolkopnames nie, geen onnodige datapaaie uit die babakamer nie. Wat baie mense nie sien nie: ek bou Timmy as ’n soloprojek in Zürich, en GitHub Copilot is my baie vinnige paarprogrammeerder.

Die mens-KI-werksvloei

Die verdeling is duidelik: ek bepaal funksies, stel prioriteite en neem argitektuurbesluite. Copilot help met implementering: kode skryf, toetse byvoeg, foute opspoor en vrystellingstappe voorberei.

’n Tipiese sprint lyk vir my min of meer so:

  1. Funksiebeskrywing: Ek beskryf wat die funksie moet doen, ook randgevalle en beperkings.
  2. Implementering: Copilot stel kode voor en volg die projek se bestaande konvensies.
  3. Toetsing: Outomatiese end-tot-end-toetse loop op twee emuleerders en kontroleer die werklike baba/ouer-verbinding.
  4. Verspreiding: Wanneer toetse slaag, word Android- en iOS-bouweergawes vir die regte winkel- en toetskanale voorberei.

Hierdie siklus herhaal vir funksies en foutoplossings. Ek skryf nie elke reël self nie, maar ek besluit wat gebou word, hoekom dit gebou word, en of ’n voorstel by Timmy pas.

Van konsep tot WebRTC

Die sentrale tegniese taak was van die begin af duidelik: intydse klank en video tussen twee fone. WebRTC was die voor die hand liggende keuse, maar integrasie met Flutter is nie eenvoudig nie: ICE-kandidate, SDP-onderhandeling, TURN-terugval en DataChannels moet in die regte volgorde saamwerk.

Copilot het my gehelp om dié dele stap vir stap saam te voeg: die eweknieverbinding op te stel, die kritieke volgorde korrek te hou (DataChannel voor die aanbodboodskap, onTrack voor setRemoteDescription), en seinboodskappe op Firebase Firestore te plaas. Elke deel moes op twee emuleerders werk voordat ek aangegaan het.

Veilige koppeling met ECDH

Een van die mees kritieke funksies was die veilige koppelstelsel. Twee toestelle moet wedersydse vertroue vestig sonder om op ’n sentrale bediener staat te maak om vir hul identiteit in te staan. Die oplossing: ’n ECDH P-256-sleuteluitruiling oor Firebase, gekombineer met ’n visuele verifikasienommer (SAS) wat man-in-die-middel-aanvalle opspoor.

Copilot het gehelp om die kriptografiese ketting te implementeer: sleutelgenerering, uitruil van openbare sleutels, afleiding van ’n gedeelde geheim, SAS-berekening en AES-256-GCM-enkripsie vir alle latere seindata. Ek stuur nie die koppelsleutel na die agterkantstelsel nie; slegs die SHA-256-hutswaarde daarvan word as ’n Firestore-dokumentidentifiseerder gebruik.

Sekuriteitsoudit: kwesbaarhede vind en regstel

KI-ondersteunde ontwikkeling is vir my nie net vinniger tikwerk nie. Dit help ook met sistematiese foutsoektogte. In ’n gefokusde sprint vir ’n sekuriteitsoudit het Copilot die kodebasis ontleed en ses probleme gevind wat ek moes regstel:

Al ses is in dieselfde sprint reggestel. Hier is Copilot sterk: om baie lêers te lees, patrone te vergelyk en plekke aan te dui wat ek noukeuriger moet ondersoek.

Iteratiewe sprints: hoe die app ontwikkel het

Timmy het deur vinnige, maar duidelik afgebakende sprints gegroei. ’n Paar mylpale:

Elke sprint volg dieselfde basiese patroon: beskryf die doel, hersien voorstelle, toets outomaties en stuur dit dan na toetsers.

E2E-toetsing oor toestelle heen

Jy kan nie ’n babamonitor behoorlik op een toestel toets nie. Ek benodig een babatoestel en een ouertoestel. Die projek het begin met twee Android-emuleerders wat gelyktydig loop, en vul dié siklus nou aan met toetse op ’n plaaslike iOS-simulator en werklike toestelle. Die outomatiese Android-toetsskrip doen steeds die volgende:

  1. Installeer die app op albei emuleerders
  2. Gaan deur koppeling op albei toestelle
  3. Verifieer dat klank- en videoverbindings tot stand kom
  4. Toets druk-om-te-praat, kamerabeheer en ander funksies

Omdat albei emuleerders dieselfde IP-adres deel (10.0.2.15), is ’n direkte eweknie-tot-eweknie-verbinding via STUN onmoontlik. Elke toetslopie moet deur die Cloudflare TURN-aflos gaan. Dit is lastig, maar nuttig: die mees ingewikkelde verbindingspad word elke keer getoets.

Wat ek geleer het

Om ’n volledige app met ’n KI-paarprogrammeerder te bou, het my ’n paar dinge geleer:

Vorentoe gekyk

Baby Monitor Timmy bly ontwikkel. Die iOS-vrystelling is naby; daarna volg bykomende sensorfunksies en deurlopende versterking van sekuriteit. Die werksvloei bly soortgelyk: ek bepaal rigting en grense, Copilot help om vinnig te implementeer en te kontroleer.

Die sekuriteitsrelevante boublokke is nou duidelik afgebaken in die openbare baby-monitor-timmy-core-kodebewaarplek. Dit is ook waar die argitektuurbesluite oor koppeling, seinboodskappe en koppelvlakke met die agterkantstelsel gedokumenteer word.


Meer artikels