Blog

Ako vytváram Baby Monitor Timmy s GitHub Copilot

AI mi pomáha pracovať rýchlejšie. Zodpovednosť za Timmy však stále nesiem ja.

Baby Monitor Timmy vznikol z jednoduchej myšlienky: detská pestúnka, ktorá rešpektuje súkromie doma. Žiadne nahrávky v cloude, žiadne zbytočné cesty dát z detskej izby von. Čo mnohí nevidia: Timmy vyvíjam sám v Zürichu a GitHub Copilot je môj veľmi rýchly programátorský parťák.

Spolupráca človeka a AI

Rozdelenie je jasné: ja určujem funkcie, priority a rozhodujem o architektúre. Copilot pomáha s implementáciou: píše kód, pridáva testy, zužuje okruh možných chýb a pripravuje kroky pred vydaním.

Môj bežný šprint približne vyzerá takto:

  1. Popis funkcie: Popíšem, čo má funkcia robiť, vrátane okrajových prípadov a obmedzení.
  2. Implementácia: Copilot navrhne kód a drží sa existujúcich konvencií projektu.
  3. Testovanie: Automatizované end-to-end testy bežia na dvoch emulátoroch a kontrolujú skutočné spojenie medzi detským a rodičovským zariadením.
  4. Distribúcia: Keď testy prejdú, pripravia sa verzie pre Android a iOS pre príslušné obchody a testovacie kanály.

Tento cyklus sa opakuje pri funkciách aj opravách chýb. Nepíšem každý riadok sám, ale rozhodujem, čo sa bude vyvíjať, prečo sa to vyvíja a či návrh zodpovedá projektu Timmy.

Od nápadu k WebRTC

Hlavná technická úloha bola od začiatku jasná: zvuk a video v reálnom čase medzi dvoma telefónmi. WebRTC bola jasná voľba, no jej integrácia s Flutterom nie je jednoduchá: ICE kandidáti, vyjednávanie SDP, náhradné spojenie cez TURN a dátové kanály musia spolu fungovať v správnom poradí.

Copilot mi pomohol tieto časti postupne poskladať: nastaviť spojenie medzi zariadeniami, zachovať správne kritické poradie (DataChannel pred ponukou, onTrack pred setRemoteDescription) a signalizáciu umiestniť do Firebase Firestore. Každá časť musela fungovať na dvoch emulátoroch, kým som pokračoval ďalej.

Bezpečné párovanie s ECDH

Jednou z najdôležitejších funkcií bol systém bezpečného párovania. Dve zariadenia si musia vytvoriť vzájomnú dôveru bez toho, aby sa spoliehali na centrálny server, ktorý potvrdí ich identitu. Riešenie: výmena kľúčov ECDH P-256 cez Firebase v kombinácii s vizuálnym overovacím číslom (SAS), ktoré odhalí útoky typu man-in-the-middle.

Copilot pomohol implementovať kryptografický reťazec: generovanie kľúčov, výmenu verejných kľúčov, odvodenie zdieľaného tajomstva, výpočet SAS a šifrovanie AES-256-GCM všetkých neskorších signalizačných dát. Párovací kľúč neposielam na backend; ako identifikátor dokumentu vo Firestore sa používa iba jeho hash SHA-256.

Bezpečnostný audit: hľadanie a oprava zraniteľností

Vývoj s pomocou AI pre mňa nie je iba rýchlejšie písanie. Pomáha mi aj so systematickým hľadaním chýb. Počas cieleného šprintu bezpečnostného auditu Copilot analyzoval kódovú základňu a našiel šesť problémov ktoré som musel opraviť:

Všetkých šesť problémov bolo opravených v tom istom šprinte. Práve tu je Copilot silný: prečíta veľa súborov, porovná vzory a označí mi miesta, ktoré potrebujem preskúmať podrobnejšie.

Iteratívne šprinty: ako sa aplikácia vyvíjala

Timmy rástol v rýchlych, no jasne ohraničených šprintoch. Niekoľko míľnikov:

Každý šprint má rovnaký základný postup: popísať cieľ, skontrolovať návrhy, automaticky otestovať a potom odoslať testerom.

E2E testovanie na viacerých zariadeniach

Detskú pestúnku nemožno poriadne otestovať na jednom zariadení. Potrebujem jedno detské zariadenie a jedno rodičovské zariadenie. Projekt začal s dvoma Android emulátormi bežiacimi súčasne a teraz tento postup dopĺňajú lokálne kontroly v iOS simulátore a na reálnych zariadeniach. Automatizovaný testovací skript pre Android stále:

  1. Nainštaluje aplikáciu na oba emulátory
  2. Prejde párovaním na oboch zariadeniach
  3. Overí, že sa vytvorilo zvukové aj video spojenie
  4. Testuje push-to-talk, ovládanie kamery a ďalšie funkcie

Keďže oba emulátory majú rovnakú IP adresu (10.0.2.15), priame peer-to-peer spojenie cez STUN nie je možné. Každé spustenie testu musí prejsť cez relé Cloudflare TURN. Je to otravné, ale užitočné: pri každom teste sa overí najzložitejšia cesta pripojenia.

Čo som sa naučil

Vývoj kompletnej aplikácie s AI programátorským parťákom ma naučil niekoľko vecí:

Čo ďalej

Baby Monitor Timmy sa neustále vyvíja. Vydanie pre iOS sa blíži; potom prídu ďalšie funkcie využívajúce senzory a priebežné posilňovanie bezpečnosti. Postup zostáva podobný: ja určujem smer a hranice, Copilot pomáha s rýchlou implementáciou a kontrolou.

Bezpečnostne dôležité stavebné bloky sú teraz jasne oddelené vo verejnom repozitári baby-monitor-timmy-core. Práve tam sú zdokumentované aj rozhodnutia o architektúre párovania, signalizácie a backendových rozhraní.


Ďalšie články