Blog

Jak vyvíjím Baby Monitor Timmy s GitHub Copilotem

AI mi pomáhá pracovat rychleji. Odpovědnost za Timmy ale stále zůstává na mně.

Baby Monitor Timmy vznikl z jednoduché myšlenky: dětská chůvička, která respektuje soukromí doma. Žádné nahrávky v cloudu, žádné zbytečné přenosy dat z dětského pokoje. Co mnoho lidí nevidí: Timmy vyvíjím sám v Curychu a GitHub Copilot je můj velmi rychlý programátorský parťák.

Spolupráce člověka a AI

Rozdělení rolí je jasné: definuji funkce, určuji priority a rozhoduji o architektuře. Copilot pomáhá s implementací: píše kód, přidává testy, zužuje okruh možných chyb a připravuje kroky pro vydání.

Můj typický sprint zhruba vypadá takto:

  1. Popis funkce: Popíšu, co má funkce dělat, včetně okrajových případů a omezení.
  2. Implementace: Copilot navrhuje kód a drží se zavedených pravidel projektu.
  3. Testování: Automatizované end-to-end testy běží na dvou emulátorech a ověřují skutečné spojení mezi zařízením dítěte a rodiče.
  4. Distribuce: Když testy projdou, připraví se verze pro Android a iOS do správných obchodů a testovacích kanálů.

Tento cyklus se opakuje u nových funkcí i oprav chyb. Nepíšu každý řádek sám, ale rozhoduji co se bude vyvíjet, proč se to vyvíjí a zda daný návrh pro Timmy dává smysl.

Od nápadu k WebRTC

Hlavní technický úkol byl od začátku jasný: zvuk a video v reálném čase mezi dvěma telefony. WebRTC byla jasná volba, ale jeho integrace s Flutterem není jednoduchá: kandidáti ICE, vyjednávání SDP, záložní TURN a DataChannely musí fungovat společně ve správném pořadí.

Copilot mi pomohl tyto části postupně propojit: nastavit peer connection, zachovat správné kritické pořadí (DataChannel před offer, onTrack před setRemoteDescription) a umístit signalizaci do Firebase Firestore. Každá část musela fungovat na dvou emulátorech, než jsem pokračoval dál.

Bezpečné párování pomocí ECDH

Jednou z nejdůležitějších funkcí byl systém bezpečného párování. Dvě zařízení si potřebují vzájemně vytvořit důvěru, aniž by se spoléhala na centrální server, který potvrzuje jejich identitu. Řešení: výměna klíčů ECDH P-256 přes Firebase v kombinaci s vizuálním ověřovacím číslem (SAS), které odhalí útoky typu man-in-the-middle.

Copilot pomohl implementovat kryptografický řetězec: generování klíčů, výměnu veřejných klíčů, odvození sdíleného tajemství, výpočet SAS a šifrování AES-256-GCM pro všechna následná signalizační data. Párovací klíč neposílám na backend; jako identifikátor dokumentu Firestore se používá jen jeho hash SHA-256.

Bezpečnostní audit: hledání a oprava zranitelností

Vývoj s pomocí AI pro mě neznamená jen rychlejší psaní. Pomáhá také se systematickým hledáním chyb. Během zaměřeného sprintu bezpečnostního auditu Copilot analyzoval kódovou základnu a našel šest problémů které jsem potřeboval opravit:

Všech šest problémů se opravilo ve stejném sprintu. Právě tady je Copilot silný: čte mnoho souborů, porovnává vzorce a označuje místa, která musím podrobněji prověřit.

Iterativní sprinty: jak se aplikace vyvíjela

Timmy rostl v rychlých, ale jasně vymezených sprintech. Některé milníky:

Každý sprint má stejný základní postup: popsat cíl, zkontrolovat návrhy, automaticky otestovat a pak předat testerům.

E2E testování napříč zařízeními

Dětskou chůvičku nelze pořádně otestovat na jednom zařízení. Potřebuji jedno zařízení pro dítě a jedno pro rodiče. Projekt začal se dvěma současně běžícími emulátory Androidu a nyní tento proces doplňují kontroly v místním simulátoru iOS a na skutečných zařízeních. Automatizovaný testovací skript pro Android stále:

  1. Nainstaluje aplikaci na oba emulátory
  2. Provede procesem párování na obou zařízeních
  3. Ověří navázání zvukového a obrazového spojení
  4. Testuje push-to-talk, ovládání kamery a další funkce

Protože oba emulátory sdílejí stejnou IP adresu (10.0.2.15), není přímé peer-to-peer spojení přes STUN možné. Každý test musí projít přes relé Cloudflare TURN. Je to nepříjemné, ale užitečné: při každém spuštění se testuje nejsložitější cesta připojení.

Co jsem se naučil

Vývoj kompletní aplikace s programátorským parťákem AI mě naučil několik věcí:

Co dál

Baby Monitor Timmy se dál vyvíjí. Vydání pro iOS je blízko; poté přijdou další funkce se senzory a průběžné posilování zabezpečení. Postup zůstává podobný: já určuji směr a hranice, Copilot pomáhá s rychlou implementací a kontrolou.

Bezpečnostně důležité stavební bloky jsou nyní jasně oddělené a nacházejí se ve veřejném repozitáři baby-monitor-timmy-core. Tam jsou také zdokumentována architektonická rozhodnutí týkající se párování, signalizace a rozhraní backendu.


Další články