Blog

Kako razvijam Baby Monitor Timmy uz GitHub Copilot

AI mi pomaže da radim brže. Odgovornost za Timmy i dalje je na meni.

Baby Monitor Timmy je počeo od jednostavne ideje: bebi-monitor koji poštuje privatnost u domu. Nema snimanja u oblaku, nema nepotrebnog slanja podataka iz dečje sobe. Ono što mnogi ne vide jeste da Timmy razvijam samostalno iz Ciriha, a GitHub Copilot je moj veoma brzi programski partner.

Radni tok čoveka i AI-ja

Podela je jasna: ja definišem funkcije, postavljam prioritete i donosim arhitektonske odluke. Copilot pomaže u implementaciji: pisanju koda, dodavanju testova, sužavanju uzroka grešaka i pripremi koraka za izdanje.

Moj tipičan sprint otprilike izgleda ovako:

  1. Opis funkcije: Opisujem šta funkcija treba da radi, uključujući rubne slučajeve i ograničenja.
  2. Implementacija: Copilot predlaže kod i prati postojeće konvencije projekta.
  3. Testiranje: Automatizovani end-to-end testovi rade na dva emulatora i proveravaju stvarnu vezu između bebe i roditelja.
  4. Distribucija: Kada testovi prođu, Android i iOS verzije se pripremaju za odgovarajuće prodavnice i kanale za testiranje.

Ovaj ciklus se ponavlja za nove funkcije i ispravke grešaka. Ne pišem svaki red koda sam, ali odlučujem šta se razvija, zašto se razvija i da li se neki predlog uklapa u Timmy.

Od ideje do WebRTC-a

Centralni tehnički zadatak bio je jasan od početka: zvuk i video uživo između dva telefona. WebRTC je bio očigledan izbor, ali integracija s Flutterom nije jednostavna: ICE kandidati, SDP pregovaranje, TURN rezerva i DataChannels moraju raditi zajedno pravim redosledom.

Copilot mi je pomogao da te delove postepeno povežem: da postavim peer konekciju, održim pravilan redosled ključnih koraka (DataChannel pre offer-a, onTrack pre setRemoteDescription), i postavim signalizaciju na Firebase Firestore. Svaki deo morao je da radi na dva emulatora pre nego što nastavim dalje.

Bezbedno uparivanje uz ECDH

Jedna od najvažnijih funkcija bio je sistem bezbednog uparivanja. Dva uređaja moraju da uspostave međusobno poverenje bez oslanjanja na centralni server koji potvrđuje njihov identitet. Rešenje je ECDH P-256 razmena ključeva preko Firebase-a, zajedno sa vizuelnim brojem za proveru (SAS) koji otkriva napade posrednika.

Copilot je pomogao u implementaciji kriptografskog lanca: generisanje ključeva, razmena javnih ključeva, izvođenje zajedničke tajne, izračunavanje SAS-a i AES-256-GCM šifrovanje svih kasnijih signalizacionih podataka. Ključ za uparivanje ne šaljem backendu; samo se njegov SHA-256 heš koristi kao identifikator Firestore dokumenta.

Bezbednosna revizija: pronalaženje i otklanjanje ranjivosti

Razvoj uz pomoć AI-ja za mene nije samo brže kucanje. Pomaže i u sistematskom traženju grešaka. Tokom fokusiranog sprinta bezbednosne revizije, Copilot je analizirao bazu koda i pronašao šest problema koje je trebalo da ispravim:

Svih šest problema rešeno je u istom sprintu. Tu je Copilot jak: čita mnogo fajlova, upoređuje obrasce i označava mesta koja treba pažljivije da proverim.

Iterativni sprintovi: kako se aplikacija razvijala

Timmy je rastao kroz brze, ali jasno ograničene sprintove. Neke prekretnice:

Svaki sprint prati isti osnovni obrazac: opiši cilj, pregledaj predloge, automatski testiraj, pa pošalji testerima.

E2E testiranje na različitim uređajima

Bebi-monitor ne možete pravilno testirati na jednom uređaju. Potrebni su mi jedan uređaj za bebu i jedan za roditelja. Projekat je počeo s dva Android emulatora koja rade istovremeno, a sada taj ciklus dopunjuju lokalne provere na iOS simulatoru i stvarnim uređajima. Automatizovana Android test skripta i dalje:

  1. Instalira aplikaciju na oba emulatora
  2. Prolazi kroz uparivanje na oba uređaja
  3. Proverava da su uspostavljene audio i video veze
  4. Testira razgovor pritiskom na dugme, upravljanje kamerom i druge funkcije

Pošto oba emulatora dele istu IP adresu (10.0.2.15), direktna peer-to-peer veza preko STUN-a nije moguća. Svako testiranje mora da ide preko Cloudflare TURN releja. To jeste nezgodno, ali je korisno: svaki put se testira najsloženiji put povezivanja.

Šta sam naučio

Razvoj kompletne aplikacije uz AI programskog partnera naučio me je nekoliko stvari:

Pogled unapred

Baby Monitor Timmy se i dalje razvija. iOS izdanje je blizu; zatim dolaze dodatne funkcije senzora i kontinuirano jačanje bezbednosti. Radni tok ostaje sličan: ja postavljam smer i granice, a Copilot pomaže da se brzo implementira i proveri.

Komponente važne za bezbednost sada se nalaze unutar jasno definisanih granica u javnom baby-monitor-timmy-core repozitorijumu. Tu su dokumentovane i arhitektonske odluke o uparivanju, signalizaciji i backend interfejsima.


Još članaka